!^`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNone derive-storable-pluginGet ids from core bind.derive-storable-plugin#Get all expressions from a binding.derive-storable-plugin4Get both identifiers and expressions from a binding.derive-storable-pluginGet all IDs from CoreExprderive-storable-plugin'Takes first n characters out of occNamederive-storable-pluginEquality for typesderive-storable-pluginEquality for type bindersderive-storable-plugin"Equality for type variable bindersderive-storable-plugin` function for types   (c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNone derive-storable-pluginAll possible errors. derive-storable-plugin&Could not obtain the type from the id. derive-storable-plugin2The binding is recursive and won't be substituted.derive-storable-pluginDThe compilation-substitution is not supported for the given binding.derive-storable-plugin9Error during compilation. The CoreBind is to be returned.derive-storable-plugin"Ordering failed for core bindings.derive-storable-pluginOrdering failed for typesderive-storable-pluginAny other error.derive-storable-pluginContains user-specified flags.derive-storable-plugin=Crash when an recoverable error occurs. For testing purposes.derive-storable-plugin#How verbose should the messages be.derive-storable-plugin+Print an error according to verbosity flag.derive-storable-pluginWChange String to SDoc. Each newline is $$ed with nest equal to spaces before. t is 4.    (c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNone5derive-storable-plugin7Predicate used to find GStorable instances identifiers.derive-storable-plugin*Predicate used to find gsizeOf identifiersderive-storable-plugin-Predicate used to find galignment identifiersderive-storable-plugin/Predicate used to find gpeekByteOff identifiers derive-storable-plugin/Predicate used to find gpeekByteOff identifiers!derive-storable-plugin+Predicate used to find chSizeOf identifiers"derive-storable-plugin.Predicate used to find chAlignment identifiers#derive-storable-plugin0Predicate used to find chPeekByteOff identifiers$derive-storable-plugin0Predicate used to find chPokeByteOff identifiers%derive-storable-pluginAPredicate used to find specialized GStorable instance identifiers&derive-storable-plugin6Predicate used to find specialized gsizeOf identifiers'derive-storable-plugin9Predicate used to find specialized galignment identifiers(derive-storable-plugin;Predicate used to find specialized gpeekByteOff identifiers)derive-storable-plugin;Predicate used to find specialized gpokeByteOff identifiers*derive-storable-pluginIs offsets id.+derive-storable-pluginIs a GStorable identifier,derive-storable-pluginIs the id an GStorable method.-derive-storable-plugin"Check if binding is non-recursive..derive-storable-plugin8Lift the identifier predicate to work on a core binding./derive-storable-pluginEUse both type getters and identifier predicate to create a predicate. !"#$%&'()*+,-./ %&'()!"#$*+,-./(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNoneQ0derive-storable-plugin!Check whether the type is integer1derive-storable-plugin#Check whether the type is a Pointer2derive-storable-pluginCheck whether the type is a IO.3derive-storable-plugin,Check whether the type constructor is an IO.4derive-storable-plugin"Check whether the type is a State#5derive-storable-plugin.Check whether the type constructor is a State#6derive-storable-plugin&Check whether the type is a RealWorld#7derive-storable-plugin2Check whether the type constructor is a RealWorld#aderive-storable-plugin-Check whether the type is a State# RealWorld.8derive-storable-plugin0Check whether the type constuctor is a GStorable9derive-storable-plugin2Check whether the type is of kind * -> Constraint.:derive-storable-plugin1Check whether the type has GStorable constraints.;derive-storable-plugin%Get the type from GStorable instance.<derive-storable-plugin,Get the type from GStorable alignment method=derive-storable-plugin)Get the type from GStorable sizeOf method>derive-storable-plugin'Get the type from GStorable peek methodbderive-storable-pluginMInsides of getPeekType, which takes into the account the order of arguments.?derive-storable-plugin'Get the type from GStorable poke method@derive-storable-plugin-Get the type of Offsets. Assuming it is [Int]Aderive-storable-plugin/Combination of type getters for all GStorables.Bderive-storable-plugin2Combination of type getters for GStorable methods.bderive-storable-plugin Is after Ptrderive-storable-plugin Is after Intderive-storable-plugin Returningcderive-storable-plugin Is after Ptrderive-storable-plugin Is after Intderive-storable-plugin Returning0123456789:;<=>?@AB0123456789:;<=>?@AB(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNonecFdderive-storable-pluginNUsed for type substitution. Whether a TyVar appears, replace it with a Type.Cderive-storable-pluginCalculate the order of types. ederive-storable-pluginVThis could be done more efficently if we'd represent the problem as a graph problem.Dderive-storable-plugin'Functions doing the type substitutions.Ederive-storable-plugin6Get data constructor arguments from an algebraic type.Fderive-storable-plugin(Group bindings according to type groups.fderive-storable-pluginIteration for groupBindsederive-storable-pluginType to check derive-storable-pluginType that are checkedderive-storable-pluginType that are in this layerderive-storable-pluginType that are not.Fderive-storable-plugin Type groups.derive-storable-pluginShould be only NonRecs. fderive-storable-pluginGroup of typesderive-storable-pluginUngrouped bindingsderive-storable-pluginGrouped bindingsderive-storable-plugin'Grouped bindings, and perhaps an error)CDEFCDEF(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNone!Gderive-storable-plugin(Scoped variables for optimising offsets.Jderive-storable-pluginCompile an expression.Kderive-storable-plugin6Try to compile an expression. Perhaps return an error.gderive-storable-plugin+A small helper - create an integer literal.Lderive-storable-plugin%Create an expression of form: x -> 16Mderive-storable-plugin5For gsizeOf and galignment - calculate the variables.Nderive-storable-pluginTry to substitute the offsets.Oderive-storable-pluginGet h from GPderive-storable-pluginGet i from GQderive-storable-plugin+Create a list expression from Haskell list.Rderive-storable-plugin?Compile expression to list and then write it back to core expr.jderive-storable-pluginCreate a int prim expression.kderive-storable-pluginCCompile expression to int prim and then write it back to core expr.Sderive-storable-plugin2Return the expression if it's a literal or global.Tderive-storable-pluginHCheck whether the given CoreExpr is an id, and if yes - substitute it.Uderive-storable-pluginIs an "$w!!" identifierVderive-storable-plugin\Try to create a compileable version of case expr body. For !! @Int offsets val expressions.Wderive-storable-pluginSubstitute the offsets in a tree. All top-level local ids should be alread in place. Now try to compile selected expressions (See note [Offset substitution])Xderive-storable-plugin3Compile the expression in Core Bind and replace it.lderive-storable-plugin5Put the expression back into the unfolding core expr.Yderive-storable-pluginLint a bindingZderive-storable-pluginNSubstitutes the localIds inside the bindings with bodies of provided bindings.mderive-storable-pluginQSubstitutes the localIds inside the expressions with bodies of provided bindings.[derive-storable-pluginCompile ordered binding.nderive-storable-plugin$The insides of compileGroups method.oderive-storable-plugin-Handle errors during the compileGroups stage.Yderive-storable-plugin3Core binding to use when returning CompilationErrorderive-storable-pluginCore binding to checkderive-storable-pluginSuccess or failureZderive-storable-plugin%Replace with - for GStorable bindingsderive-storable-plugin%Replace with - for other top-bindingsderive-storable-plugin%Binding which will have ids replaced.derive-storable-pluginBinding with replaced ids.mderive-storable-plugin$Replace with - for GStorable bindinsderive-storable-plugin%Replace with - for other top-bindingsderive-storable-plugin(Expression which will have ids replaced.derive-storable-pluginExpression with replaced ids.[derive-storable-pluginError handling.derive-storable-pluginOrdered gstorable bindings.derive-storable-plugin/Non-gstorable bindings, used for replacing ids.derive-storable-pluginThe compiled (or not) bindings.nderive-storable-pluginFor error handling.derive-storable-pluginDepth, useful for debugging.derive-storable-pluginOrdered GStorable bindings. derive-storable-pluginOther top-level bindingsderive-storable-pluginSuccesfull substitutions.derive-storable-pluginUnsuccesfull substitutions.derive-storable-plugin/Both successfull and unsuccesfull subtitutions.oderive-storable-pluginError handlingderive-storable-pluginCurrent iterationderive-storable-pluginList of errorsderive-storable-pluginBindings from errors.GHIJKLMNOPQRSTUVWXYZ[JKLMNWGHIOPQRSTUVXYZ[(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNone]derive-storable-pluginXFind GStorable identifiers, obtain their types, and calculate the order of compilation.pderive-storable-pluginoPrint errors related to CoreBind grouping. Return the badly grouped bindings, and perhaps crash the compiler.qderive-storable-plugin5Print the information related to found GStorable ids.^derive-storable-plugin+Do the optimisation for GStorable bindings.pderive-storable-pluginVerbosity and ToCrash options derive-storable-plugin The errorderive-storable-pluginRecovered bindings.qderive-storable-pluginVerbosity and ToCrash options derive-storable-pluginGStorable ids.^derive-storable-pluginVerbosity and ToCrash options.derive-storable-pluginReference to grouped types.derive-storable-plugin"Information about compiled module.derive-storable-plugin@Information about compiled module, with GStorable optimisations.]^]^(c) Mateusz KBoczko, 2016MITmateusz.p.kloczko@gmail.com experimentalGHC-onlyNone_derive-storable-pluginThe plugin itself.rderive-storable-plugin5Checks whether the core pass is a simplifier phase 0.sderive-storable-plugin(Return the index of simplifier phase 0. tderive-storable-plugin4Checks whether the core pass is a specialising pass.uderive-storable-plugin+Return the index of the specialising pass. vderive-storable-plugin@Set the verbosity and ToCrash flags based on supplied arguments.wderive-storable-pluginParse command line options.xderive-storable-plugin!Inform about installation errors.__y      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstruvwxyz{|}~5derive-storable-plugin-0.2.3.0-IItOcnNp48LJZuHvyj21op0Foreign.Storable.Generic.Plugin.Internal.Helpers.Foreign.Storable.Generic.Plugin.Internal.Error3Foreign.Storable.Generic.Plugin.Internal.Predicates.Foreign.Storable.Generic.Plugin.Internal.Types3Foreign.Storable.Generic.Plugin.Internal.GroupTypes0Foreign.Storable.Generic.Plugin.Internal.Compile(Foreign.Storable.Generic.Plugin.InternalForeign.Storable.Generic.Plugin getIdsBind getExprsBindgetIdsExprsBind getIdsExpr cutOccNameeqTypeeqTyBind eqTyVarBindelemTypeisProxy removeProxyError TypeNotFound RecBindingCompilationNotSupportedCompilationErrorOrderingFailedBindsOrderingFailedTypes OtherErrorFlagsCrashOnWarning VerbosityNoneSomeAllpprError stringToPprisGStorableInstId isSizeOfId isAlignmentIdisPeekIdisPokeIdisChoiceSizeOfIdisChoiceAlignmentIdisChoicePeekIdisChoicePokeIdisSpecGStorableInstIdisSpecSizeOfIdisSpecAlignmentId isSpecPeekId isSpecPokeId isOffsetsId isGStorableIdisGStorableMethodId isNonRecBindtoIsBind withTypeCheck isIntType isPtrTypeisIOType isIOTyConisStatePrimTypeisStatePrimTyConisRealWorldTypeisRealWorldTyConisGStorableInstTyConhasConstraintKindhasGStorableConstraintsgetGStorableInstTypegetAlignmentType getSizeType getPeekType getPokeTypegetOffsetsTypegetGStorableTypegetGStorableMethodTypecalcGroupOrdersubstituteTyCongetDataConArgs groupBinds OffsetScopeIntList IntPrimVal compileExprtryCompileExpr intToExprintSubstitutionoffsetSubstitution getScopeId getScopeExpr intListExpr exprToIntList isLitOrGlobal inScopeAll isIndexer caseExprIndexoffsetSubstitutionTreecompileGStorableBindlintBindreplaceIdsBind compileGroups$fOutputableOffsetScope groupTypesgstorableSubstitutionpluginbase Data.FoldableelemisStateRealWorld getPeekType' getPokeType' TypeScopecalcGroupOrder_iterationgroupBinds_rec intLiteralghcVarIdCoreSynCoreExprintPrimValExpr exprToIntValreplaceUnfoldingBind replaceIdscompileGroups_reccompileGroups_errorgrouping_errorsfoundBinds_infoisPhase0 afterPhase0 isSpecializeafterSpecializesetOpts parseOpts install_err