úΡi™uC      !"#$%&'()*+,-./0123456789:;<=>?@AB*(c) Hampus Ram 2003-2004, Gabor Greif 2012BSD-style (see LICENSE)ggreif+dynamic@gmail.com experimentalnon-portable (ghc >= 7.6 only)None *9;<=BDRT ŸDynamically load a shared library (DLL or .so). A shared library can't be unloaded using this interface, if you need it use System.Posix.DynamicLinker instead.+Load a module given its name (for instance Data.FiniteMap¬), maybe a path to the base directory and maybe a file extension. If no such path is given the current working directory is used and if no file suffix is given "o" is used.#If we have our module hierarchy in /usr/lib/modules and we want to load the module Foo.Bar located in /usr/lib/modules/Foo/Bar.o we could issue the command:  6loadModule "Foo.Bar" (Just "/usr/lib/modules") NothingIf our current directory was /tmp" and we wanted to load the module Foo located in the file  /tmp/Foo.obj we would write: %loadModule "Foo" Nothing (Just "obj")8If it cannot load the object it will throw an exception.¶Load a module given its full path and maybe a base directory to use in figuring out the module's hierarchical name. If no base directory is given, it is set to the current directory.)For instance if one wants to load module Foo.Bar located in /usr/modules/Foo/Bar.o one would issue the command: AloadModuleFromPath "/usr/modules/Foo/Bar.o" (Just "/usr/modules")8If it cannot load the object it will throw an exception. •Load a GHC package such as "base" or "text". Takes the package name, maybe a path to the packages, maybe a package prefix and maybe a package suffix.YPath defaults to the current directory, package prefix to "HS" and package suffix to "o".SThis function also loads accompanying cbits-packages. I.e. if you load the package base located in  /usr/modules using HS and o as prefix and suffix,  loadPackage will also look for the file /usr/modules/HSbase_cbits.o and load it if present.If it fails to load a package it will throw an exception. You will need to resolve functions before you use any functions loaded. PLoad a GHC package such as "base" or "text". Takes the full path to the package.SThis function also loads accompanying cbits-packages. I.e. if you load the package /usr/modules/HSbase.o it will deduce that o is the suffix and loadPackageFromPath" will then also look for the file /usr/modules/HSbase_cbits.o and load it if present.If it fails to load a package it will throw an exception. You will need to resolve functions before you use any functions loaded. RLoad an archive of GHC modules. Recent versions of GHC store packages as archives.ƒIf it fails to load the archive it will throw an exception. You will need to resolve functions before you use any functions loaded. >Unload an archive. Throws an exception if any unloading fails. Unload a package (such as baseM) and its cbits-package (if any). Throws an exception if any unloading fails.VUnload a previously loaded module. If it cannot unload it an exception will be thrown.xLoad a function from a given module. If the function can't be found an exception will be thrown. You should have called resolveFunctions before you call this.5Beware that this function isn't type-safe in any way!NLoad a function from package (or module) given the fully qualified name (e.g. Data.FiniteMap.emptyFMV). If the function can't be found an exception will be thrown. You should have called resolveFunctions before you call this.ƒYou must take care that you load the function qualified with the name of the module it's defined in! You can for instance not load  Data.Bool.not> because it is only reexported in that module (from GHC.Base).5Beware that this function isn't type-safe in any way!”Resolve all loaded functions. Should be called before any functions are loaded. If it is unable to resolve all functions it will throw an exception.COFind a symbol in a module's symbol-table. Throw an exception if it isn't found. DEFGHIJKLMNOP C   DEFGHIJKLMNOP CNone *9;<=BDRTÎWhen the symbol's type is Typeable and we are in a monad that can | reliably fail, we load from the suffixed symbol and try to resolve it, | failing when the type does not correspond with the expectation.]When the symbol's type is Typeable we load from the suffixed symbol and | try to resolve it. QRSTU RQSTQURNone *9;<=BDRTVWVRQWV%(c) Hampus Ram 2004, Gabor Greif 2012BSD-style (see LICENSE)ggreif+dynamic@gmail.com experimentalnon-portable (ghc >= 7.6 only)None *9;<=BDRT tSet the environment in wich all module loading will reside. If this function isn't called the defaults will be used.°The parameters are: Path to modules, module suffix, path to packages, package prefix and package suffix. The paths will default to current directory and the rest (in order) to o, HS and o.!8Add a module dependency. Any dependencies must be added beforeP any calls to loadModule or symbols will not be resolved with a crash as result."Delete a module dependency.#%Delete all dependencies for a module.$»Do something with the current dependencies of a module. You can't use (blocking) functions from this module in the function given to withDependencies. If you do so, a deadlock will occur.%ªLoad a module (or package) and modules it depends on. It is possible to load a module many times without any error occuring. However to unload a module one needs to call  unloadModule the same number of times.–Before loading any modules you should add wich dependencies it has with addDependency (and which dependencies the modules upon which it depends have).ÛIf the module already has been loaded nothing will be done except updating the reference count. I.e. if dependencies have been updated they will be ignored until the module has been completely unloaded and loaded again.9It treats names begining with uppercase letters (such as Foo.Bar&) as modules and other names (such as base) as packages.+If any error occurs an exception is thrown.&ÊUnload a module and all modules it depends on. This unloading only occurs if the module isn't needed by any other libraries or hasn't been loaded more than once. An exception is thrown in case of error.'Same as  unloadModule+ just doesn't trow any exceptions on error.(˜Load a function from a module. It cannot load functions from packages and will throw an exception if one tries to do so. Also throws if an error occurs.ðIt seems (but I'm unsure) like any functions loaded will continue to be valid even after the module it resides in is unloaded. It will also still be valid if a new version of that module is loaded (it will thus still call the old function).)bGive the modification time for a loded module. Will throw an exception if the module isn't loaded.3XYZ[\]^_`abcdefgh !i"j#k$%lmn&'op()q*r+stuvwxy !"#$%&'()*+ !"#$%&'()*++XYZ[\]^_`abcdefgh !i"j#k$%lmn&'op()q*r+stuvwxy%(c) Hampus Ram 2004, Gabor Greif 2012BSD-style (see LICENSE)ggreif+dynamic@gmail.com experimentalnon-portable (ghc >= 7.6 only)None *9;<=BDRT 3qSet the base path used in figuring out module names. If not set the default (i.e. currentDirectory) will be used.48Add a module dependency. Any dependencies must be added before\ any calls to loadModule/loadPackage or symbols will not be resolved with a crash as result.5<Set all dependencies. All previous dependencies are removed.6Delete a module dependency.78Delete all dependencies for a module. Same behaviour as setDependencies path [].8»Do something with the current dependencies of a module. You can't use (blocking) functions from this module in the function given to withDependencies. If you do so, a deadlock will occur.9¸Load a module (or package) and modules (or packages) it depends on. It is possible to load a module many times without any error occuring. However to unload a module one needs to call  unloadModule the same number of times.–Before loading any modules you should add wich dependencies it has with addDependency (and which dependencies the modules upon which it depends have).ÛIf the module already has been loaded nothing will be done except updating the reference count. I.e. if dependencies have been updated they will be ignored until the module has been completely unloaded and loaded again.+If any error occurs an exception is thrown.:ÊUnload a module and all modules it depends on. This unloading only occurs if the module isn't needed by any other libraries or hasn't been loaded more than once. An exception is thrown in case of error.;Same as  unloadModule+ just doesn't trow any exceptions on error.<˜Load a function from a module. It cannot load functions from packages and will throw an exception if one tries to do so. Also throws if an error occurs.ðIt seems (but I'm unsure) like any functions loaded will continue to be valid even after the module it resides in is unloaded. It will also still be valid if a new version of that module is loaded (it will thus still call the old function).=°Load a qualified function from a module or package. It will throw an exception if an error occurs. Same restriction as for DynamicLinker.loadQualifiedFunction applies here too.>bGive the modification time for a loded module. Will throw an exception if the module isn't loaded.3z{|}~€‚ƒ„/012…†‡ˆ‰Š34‹5Œ67Ž89‘:;’“<=>”?•–—˜™š›/0123456789:;<=>?2/013456789:;<=>?+z{|}~€‚ƒ„/012…†‡ˆ‰Š34‹5Œ67Ž89‘:;’“<=>”?•–—˜™š›œ      !"#$%&'()* +,-./01!"#$2'3()* +,-/01456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstSTUuvwYZx[\]^_`abcefghijy+dynamic-loader-0.0.1-2jeTf2pS5S42SQq6bQSvflSystem.Plugins.DynamicLoader%System.Plugins.Criteria.LoadCriterion'System.Plugins.Criteria.UnsafeCriterionSystem.Plugins.NameLoaderSystem.Plugins.PathLoaderDynamicArchiveda_pathDynamicPackagedp_path DynamicModuledm_pathaddDLL loadModuleloadModuleFromPath loadPackageloadPackageFromPathloadArchiveFromPath unloadArchive unloadPackage unloadModule loadFunctionloadQualifiedFunctionresolveFunctions LoadCriterion Criterion EffectiveaddDynamicLibraryresolveSymbols loadQualified$fLoadCriterion(%,%)t$fLoadCriterionTypeablet$fLoadCriterion(%%)t ModuleType MT_Module MT_Package LoadedModuleModulesetEnvironment addDependency delDependency delAllDepswithDependenciesunloadModuleQuietmoduleLoadedAt loadedModulessm_path$fEqModuleType$fOrdModuleType$fShowModuleType setBasePathsetDependencies lookupSymbolRTARTPdp_cbitsRTMdm_qnamec_addDLLc_lookupSymbol c_resolveObjs c_loadArchive c_unloadObj c_loadObj c_initLinkersplitDynamicFailableCriterionDynamicCriterionloadQualifiedDynFunctionD:R:Criterion(%,%)t0D:R:CriterionTypeablet0UnsafeCriterionD:R:Criterion(%%)t0NameEnv NameEnvData NameModuleSMsm_refcsm_timesm_deps sm_moduleNameDep NameDynamicsModuleWTLMLoadable withNameEnv withNameEnvNBmodifyNameEnv_envaddDependency'delDependency' delAllDeps'loadModuleWithDep midLoadModule lowLoadModuleunloadModuleWithDeplowUnloadModulemoduleLoadedAt'loadedModules' nameToMWTinsertHT insertHT_CmodifyHTlookupHTdeleteHT lookupDefHTPathEnv PathEnvData PathModulePMpm_refcpm_timepm_deps pm_modulePathDep PathDynamics withPathEnv withPathEnvNBmodifyPathEnv_setDependencies'