This directory contains some examples of dynamically loaded modules
that may be loaded via the `import' intrinsic function.  If you choose
to build these modules, do so only AFTER installing the slang library
because the Makefile references the installed slang library location.

The default installation location for the modules is in
$(prefix)/lib/slang/modules.

--------------------------------------------------------------------

This directory contains some examples of dynamically loaded modules
that may be loaded via the `import' intrinsic function:

  import ("NAME");

This intrinsic function is available to applications that enable it
via a call to the `SLang_init_import' function.  Of course, the OS
must provide support for dynamic linking.

When a slang script contains a line such as

  import ("NAME");
  
or

  import ("NAME", "NAMESPACE");
  

slang requests that the operating system dynamically link to a shared
object called NAME-module.so.  Then the slang library will call the
function `init_NAME_ns' that NAME-module.so must define.  This function
must have the prototype:

  int init_NAME_ns (char *namespace);

and shall return 0 upon success, or -1 if an error occurred.  The
namespace argument corresponds to the second (option) parameter of the
import intrinsic.  This means that the user wishes to import the
module into the specified namespace.  To this end, the module must
call one of the SLns_* functions to load intrinsics into a namespace.

Optionally, the module may define a function called `deinit_NAME' that
will be called by the interpreter to deinitialize the module.  This
function must have the prototype:

   void deinit_NAME (void);

To ensure the correct prototypes for these functions, the module
should include the line:

    SLANG_MODULE(name);

SLANG_MODULE is a macro that expands into function prototypes.

See the examples in this directory for more information.

To run these modules, use the slsh program in ../slsh/.
slsh.c is a program that embeds the interpreter and may be used to
test slang scripts.  In fact, it may be used to create unix executable
scripts via, e.g.,

#! /usr/bin/env slsh

as the first line of the script.  See ../slsh/scripts subdirectory for
examples of this approach.

