Loaders can be used to dynamically load Neko primitives stored in NDLL libraries.

Loaders can be used to dynamically load other Neko modules (.n bytecode files). Modules are referenced by names. To lookup the corresponding bytecode file, the default loader first look in its cache, then eventually adds the .n extension to the name and lookup the bytecode in its path.

Loaders can be used for sandbox security. When a Module is loaded with a given Loader, this loader can manager the module security by filtering which primitives can be loaded by this module or by rewrapping them at loading-time with custom secured versions. Loaders are inherited in loaded submodules.

Static methods

@:has_untypedstaticlocal():Loader

Returns the local Loader. This is the loader that was used to load the module in which the code is defined.

@:has_untypedstaticmake(loadPrim:(String, Int) ‑> Dynamic, loadModule:(String, Loader) ‑> Module):Loader

Creates a loader using two methods. This loader will not have an accessible cache or path, although you can implement such mechanism in the methods body.

Constructor

Variables

l:LoaderHandle

The abstract handle.

Methods

@:has_untypedaddPath(s:String):Void

Adds a directory to the search path. See getPath.

@:has_untypedbackupCache(c:Dynamic):Dynamic

Change the cache value and returns the old value. This can be used to backup the loader cache and restore it later.

@:has_untypedgetCache():Map<String, Module>

The default loader contains a cache of already loaded modules. It's ensuring that the same module does not get loaded twice when circular references are occurring. The same module can eventually be loaded twice but with different names, for example with two relative paths representing the same file, since the cache is done on a by-name basic.

@:has_untypedgetPath():Array<String>

The default loader contains a search path in its path field. It's a linked list of Neko strings that is a parsed version of the NEKOPATH. This path is used to lookup for modules and libraries.

@:has_untypedloadModule(modName:String, ?loader:Loader):Module

Loads a Module with the given name. If loader is defined, this will be this Module loader, else this loader will be inherited. When loaded this way, the module is directly executed.

@:has_untypedloadPrimitive(prim:String, nargs:Int):Dynamic

Loads a neko primitive. By default, the name is of the form [library@method]. The primitive might not be used directly in Haxe since some of the Neko values needs an object wrapper in Haxe.

@:has_untypedsetCache(name:String, m:Module):Void

Set a module in the loader cache.