XEmacs 21.4.19 (Constant Variable).
[chise/xemacs-chise.git.1] / info / emodules.info
index 9b95d11..14137b7 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/emodules.info, produced by makeinfo version 4.0 from
+This is ../info/emodules.info, produced by makeinfo version 4.8 from
 emodules.texi.
 
    This file documents the module loading technology of XEmacs.
@@ -41,7 +41,7 @@ support documentation.
 * Menu:
 
 * Introduction::                Introducing Emacs Modules
-* Annatomy of a Module::        Basic module layout and technology
+* Anatomy of a Module::         Basic module layout and technology
 * Using ellcc::                 How to use the module compiler
 * Defining Functions::          Creating new Lisp primitives
 * Defining Variables::          Creating new Lisp variables
@@ -49,12 +49,12 @@ support documentation.
 
  --- The Detailed Node Listing ---
 
-Annatomy of a Module
+Anatomy of a Module
 
 * Required Header File::        Always include <emodules.h>
 * Required Functions::          Functions you must always provide
 * Required Variables::          Variables whose values you must provide
-* Loading other Modules::       How to load dependant modules
+* Loading other Modules::       How to load dependent modules
 
 Using `ellcc'
 
@@ -70,12 +70,12 @@ Defining Functions
 * Declaring Functions::         Declaring functions to the Lisp reader
 
 \1f
-File: emodules.info,  Node: Introduction,  Next: Annatomy of a Module,  Prev: Top,  Up: Top
+File: emodules.info,  Node: Introduction,  Next: Anatomy of a Module,  Prev: Top,  Up: Top
 
-Introduction
-************
+1 Introduction
+**************
 
-   XEmacs is a powerful, extensible editor.  The traditional way of
+XEmacs is a powerful, extensible editor.  The traditional way of
 extending the functionality of XEmacs is to use its built-in Lisp
 language (called Emacs Lisp, or Elisp for short).  However, while Elisp
 is a full programming language and capable of extending XEmacs in more
@@ -84,7 +84,7 @@ ways than you can imagine, it does have its short-comings.
    Firstly, Elisp is an interpreted language, and this has serious speed
 implications.  Like all other interpreted languages (like Java), Elisp
 is often suitable only for certain types of application or extension.
-So although Elisp is a general purpose language, and very ligh level,
+So although Elisp is a general purpose language, and very high level,
 there are times when it is desirable to descend to a lower level
 compiled language for speed purposes.
 
@@ -95,8 +95,8 @@ suited to a wider range of applications, especially those that require
 low level access to a system or need to be as quick as possible.
 
    This manual describes a new way of extending XEmacs, by using dynamic
-loadable modules (also knows as dynamicaly loadable libraries (DLLs),
-dynamic shared objects (DSOs) or just simply shared objectcs), which can
+loadable modules (also known as dynamically loadable libraries (DLLs),
+dynamic shared objects (DSOs) or just simply shared objects), which can
 be written in C or C++ and loaded into XEmacs at any time.  I sometimes
 refer to this technology as "CEmacs", which is short for "C Extensible
 Emacs".
@@ -121,7 +121,7 @@ perspective though, a lot more is provided.
      XEmacs.
 
    *   CEmacs also makes all of the relevant XEmacs internal header
-     files availible for module authors to use.  This is often required
+     files available for module authors to use.  This is often required
      to get data structure definitions and external variable
      declarations.  The header files installed include the module
      specific header file `emodules.h'.  Due to the nature of dynamic
@@ -154,12 +154,12 @@ deal to look at the actual XEmacs source code to see how things are
 done.
 
 \1f
-File: emodules.info,  Node: Annatomy of a Module,  Next: Using ellcc,  Prev: Introduction,  Up: Top
+File: emodules.info,  Node: Anatomy of a Module,  Next: Using ellcc,  Prev: Introduction,  Up: Top
 
-Annatomy of a Module
-********************
+2 Anatomy of a Module
+*********************
 
-   Each dynamically loadable XEmacs extension (hereafter refered to as a
+Each dynamically loadable XEmacs extension (hereafter referred to as a
 module) has a certain compulsory format, and must contain several
 pieces of information and several mandatory functions.  This chapter
 describes the basic layout of a module, and provides a very simple
@@ -171,22 +171,22 @@ sample.  The source for this sample can be found in the file
 * Required Header File::        Always include <emodules.h>
 * Required Functions::          Functions you must always provide
 * Required Variables::          Variables whose values you must provide
-* Loading other Modules::       How to load dependant modules
+* Loading other Modules::       How to load dependent modules
 
 \1f
-File: emodules.info,  Node: Required Header File,  Next: Required Functions,  Prev: Annatomy of a Module,  Up: Annatomy of a Module
+File: emodules.info,  Node: Required Header File,  Next: Required Functions,  Prev: Anatomy of a Module,  Up: Anatomy of a Module
 
-Required Header File
-====================
+2.1 Required Header File
+========================
 
-   Every module must include the file `<emodules.h>'.  This will
-include several other XEmacs internal header files, and will set up
-certain vital macros.  One of the most important files included by
-`emodules.h' is the generated `config.h' file, which contains all of
-the required system abstraction macros and definitions.  Most modules
-will probably require some pre-processor conditionals based on
-constants defined in `config.h'.  Please read that file to familiarize
-yourself with the macros defined there.
+Every module must include the file `<emodules.h>'.  This will include
+several other XEmacs internal header files, and will set up certain
+vital macros.  One of the most important files included by `emodules.h'
+is the generated `config.h' file, which contains all of the required
+system abstraction macros and definitions.  Most modules will probably
+require some pre-processor conditionals based on constants defined in
+`config.h'.  Please read that file to familiarize yourself with the
+macros defined there.
 
    Depending on exactly what your module will be doing, you will
 probably need to include one or more of the XEmacs internal header
@@ -200,7 +200,7 @@ files included are:
      variable declarations.
 
 `sysdep.h'
-     All system dependant declarations and abstraction macros live
+     All system dependent declarations and abstraction macros live
      here.  You should never call low level system functions directly.
      Rather, you should use the abstraction macros provided in this
      header file.
@@ -223,14 +223,14 @@ files included are:
      manipulating XEmacs frames.
 
 \1f
-File: emodules.info,  Node: Required Functions,  Next: Required Variables,  Prev: Required Header File,  Up: Annatomy of a Module
+File: emodules.info,  Node: Required Functions,  Next: Required Variables,  Prev: Required Header File,  Up: Anatomy of a Module
 
-Required Functions
-==================
+2.2 Required Functions
+======================
 
-   Every module requires several initialization functions.  It is the
-responsibility of these functions to load in any dependant modules, and
-to declare all variables and functions which are to be made visibile to
+Every module requires several initialization functions.  It is the
+responsibility of these functions to load in any dependent modules, and
+to declare all variables and functions which are to be made visible to
 the XEmacs Lisp reader.  Each of these functions performs a very
 specific task, and they are executed in the correct order by XEmacs.
 All of these functions are `void' functions which take no arguments.
@@ -252,7 +252,14 @@ place-holder, not an actual function name.
      `DEFVAR_LISP()', `DEFVAR_BOOL()' etc, and its purpose is to
      declare and initialize all and any variables that your module
      defines.  They syntax for declaring variables is identical to the
-     syntax used for all internal XEmacs source code.
+     syntax used for all internal XEmacs source code.  If the module is
+     intended to be usable statically linked into XEmacs, the actions
+     of this function are severely restricted.  *Note General Coding
+     Rules: (internals)General Coding Rules.  Also see the comments in
+     `src/emacs.c' (`main_1').  Modules which perform initializations
+     not permitted by these rules will probably work, but dual-use
+     (dynamic loading and static linking) modules will require very
+     careful, and possibly fragile, coding.
 
 `modules_of_module'
      This optional function should be used to load in any modules which
@@ -268,12 +275,12 @@ place-holder, not an actual function name.
      functions and variables declared in your module.
 
 \1f
-File: emodules.info,  Node: Required Variables,  Next: Loading other Modules,  Prev: Required Functions,  Up: Annatomy of a Module
+File: emodules.info,  Node: Required Variables,  Next: Loading other Modules,  Prev: Required Functions,  Up: Anatomy of a Module
 
-Required Variables
-==================
+2.3 Required Variables
+======================
 
-   Not only does a module need to declare the initialization functions
+Not only does a module need to declare the initialization functions
 mentioned above, it is also required to provide certain variables which
 the module loading code searches for in order to determine the viability
 of a module.  You are _not_ required to provide these variables in your
@@ -296,7 +303,7 @@ discussed here simply for the sake of completeness.
      This is a short (typically 10 characters or less) name for the
      module, and it is used as a suffix for all of the required
      functions.  This is also the name by which the module is
-     recognised when loading dependant modules.  The name does not
+     recognized when loading dependent modules.  The name does not
      necessarily have to be the same as the physical file name,
      although keeping the two names in sync is a pretty good idea.  The
      name must not be empty, and it must be a valid part of a C
@@ -322,21 +329,20 @@ discussed here simply for the sake of completeness.
      module.  The value is set by the `--mod-title' argument to `ellcc'.
 
 \1f
-File: emodules.info,  Node: Loading other Modules,  Prev: Required Variables,  Up: Annatomy of a Module
+File: emodules.info,  Node: Loading other Modules,  Prev: Required Variables,  Up: Anatomy of a Module
 
-Loading other Modules
-=====================
+2.4 Loading other Modules
+=========================
 
-   During the loading of a module, it is the responsibility of the
-function `modules_of_module' to load in any modules which the current
-module depends on.  If the module is stand-alone, and does not depend
-on other modules, then this function can be left empty or even
-undeclared.  However, if it does have dependnacies, it must call
-`emodules_load':
+During the loading of a module, it is the responsibility of the function
+`modules_of_module' to load in any modules which the current module
+depends on.  If the module is stand-alone, and does not depend on other
+modules, then this function can be left empty or even undeclared.
+However, if it does have dependencies, it must call `emodules_load':
 
-     int emodules_load (CONST char *module,
-                        CONST char *modname,
-                        CONST char *modver)
+     int emodules_load (const char *module,
+                        const char *modname,
+                        const char *modver)
 
    The first argument MODULE is the name of the actual shared object or
 DLL.  You can omit the `.so', `.ell' or `.dll' extension of you wish.
@@ -364,15 +370,29 @@ unloaded.  This means that if any child modules fail to load, then
 their parents will also fail to load.  This does not include previous
 successful calls to `emodules_load' at the top level.
 
+   *Warning:* Modules are _not_ loaded with the `RTLD_GLOBAL' flag.
+The practical upshot is that individual modules do not have access to
+each other's C symbols.  One module cannot make a C function call to a
+function defined in another module, nor can it read or set a C variable
+in another module.  All interaction between modules must, therefore,
+take place at the Lisp level.  This is by design.  Other projects have
+attempted to use `RTLD_GLOBAL', only to find that spurious symbol name
+clashes were the result.  Helper functions often have simple names,
+increasing the probability of such a clash.  If you really need to
+share symbols between modules, create a shared library containing those
+symbols, and link your modules with that library.  Otherwise,
+interactions between modules must take place via Lisp function calls
+and Lisp variables accesses.
+
 \1f
-File: emodules.info,  Node: Using ellcc,  Next: Defining Functions,  Prev: Annatomy of a Module,  Up: Top
+File: emodules.info,  Node: Using ellcc,  Next: Defining Functions,  Prev: Anatomy of a Module,  Up: Top
 
-Using `ellcc'
-*************
+3 Using `ellcc'
+***************
 
-   Before discussing the anatomy of a module in greater detail, you
-should be aware of the steps required in order to correctly compile and
-link a module for use within XEmacs.  There is little difference between
+Before discussing the anatomy of a module in greater detail, you should
+be aware of the steps required in order to correctly compile and link a
+module for use within XEmacs.  There is little difference between
 compiling normal C code and compiling a module.  In fact, all that
 changes is the command used to compile the module, and a few extra
 arguments to the compiler.
@@ -405,13 +425,13 @@ messages to be displayed on the standard output.
 \1f
 File: emodules.info,  Node: Compile Mode,  Next: Initialization Mode,  Prev: Using ellcc,  Up: Using ellcc
 
-Compile Mode
-============
+3.1 Compile Mode
+================
 
-   By default, `ellcc' is in "compile" mode.  This means that it
-assumes that all of the command line arguments are C compiler arguments,
-and that you want to compile the specified source file or files.  You
-can force compile mode by specifying the `--mode=compile' argument to
+By default, `ellcc' is in "compile" mode.  This means that it assumes
+that all of the command line arguments are C compiler arguments, and
+that you want to compile the specified source file or files.  You can
+force compile mode by specifying the `--mode=compile' argument to
 `ellcc'.
 
    In this mode, `ellcc' is simply a front-end to the same C compiler
@@ -426,7 +446,7 @@ and messages that your C compiler does.
 some appropriate place something similar to:
 
      CC=ellcc --mode=compile
-     
+
      .c.o:
          $(CC) $(CFLAGS) -c $<
 
@@ -439,10 +459,10 @@ below for details).
 \1f
 File: emodules.info,  Node: Initialization Mode,  Next: Link Mode,  Prev: Compile Mode,  Up: Using ellcc
 
-Initialization Mode
-===================
+3.2 Initialization Mode
+=======================
 
-   XEmacs uses a rather bizarre way of documenting variables and
+XEmacs uses a rather bizarre way of documenting variables and
 functions.  Rather than have the documentation for compiled functions
 and variables passed as static strings in the source code, the
 documentation is included as a C comment.  A special program, called
@@ -462,8 +482,8 @@ trickery in the module loading code.  This is all done using the
    The result of running `ellcc' in initialization mode is a C source
 file which you compile with (you guessed it) `ellcc' in compile mode.
 Initialization mode is where you set the module name, version, title
-and gather together all of the documentaion strings for the functions
-and vairables in your module.  There are several options that you are
+and gather together all of the documentation strings for the functions
+and variables in your module.  There are several options that you are
 required to pass `ellcc' in initialization mode, the first of which is
 the mode switch itself, `--mode=init'.
 
@@ -502,28 +522,28 @@ required to populate the `docs_of_module' function.  Below is a sample
      LD=ellcc --mode=link
      MODINIT=ellcc --mode=init
      CFLAGS=-O2 -DSOME_STUFF
-     
+
      .c.o:
          $(CC) $(CFLAGS) -c $<
-     
+
      MODNAME=sample
      MODVER=1.0.0
      MODTITLE="Small sample module"
-     
+
      SRCS=modfile1.c modfile2.c modfile3.c
      OBJS=$(SRCS:.c=.o)
-     
+
      all: sample.ell
      clean:
          rm -f $(OBJS) sample_init.o sample.ell
-     
+
      install: all
          mkdir `ellcc --mod-location`/mymods > /dev/null
          cp sample.ell `ellcc --mod-location`/mymods/sample.ell
-     
+
      sample.ell: $(OBJS) sample_init.o
          $(LD) --mod-output=$ $(OBJS) sample_init.o
-     
+
      sample_init.o: sample_init.c
      sample_init.c: $(SRCS)
          $(MODINIT) --mod-name=$(MODNAME) --mod-version=$(MODVER) \
@@ -533,7 +553,7 @@ required to populate the `docs_of_module' function.  Below is a sample
 sample module, and optionally install it.  The `--mod-location'
 argument to `ellcc' will produce, on the standard output, the base
 location of the XEmacs module directory.  Each sub-directory of that
-directory is automatically searched for for modules when they are loaded
+directory is automatically searched for modules when they are loaded
 with `load-module'.  An alternative location would be
 `/usr/local/lib/xemacs/site-modules'.  That path can change depending
 on the options the person who compiled XEmacs chose, so you can always
@@ -542,19 +562,19 @@ option.  This directory is treated the same way as the main module
 directory.  Each sub-directory within it is searched for a given module
 when the user attempts to load it.  The valid extensions that the
 loader attempts to use are `.so', `.ell' and `.dll'.  You can use any
-of these extensions, although `.ell' is the prefered extension.
+of these extensions, although `.ell' is the preferred extension.
 
 \1f
 File: emodules.info,  Node: Link Mode,  Next: Other ellcc options,  Prev: Initialization Mode,  Up: Using ellcc
 
-Link Mode
-=========
+3.3 Link Mode
+=============
 
-   Once all of your source code files have been compiled (including the
-generated init file) you need to link them all together to created the
+Once all of your source code files have been compiled (including the
+generated init file) you need to link them all together to create the
 loadable module.  To do this, you invoke `ellcc' in link mode, by
-pasing the `--mode-link' command.  You need to specify the final output
-file using the `--mod-output=NAME' command, but other than that all
+passing the `--mode=link' option.  You need to specify the final output
+file using the `--mod-output=NAME' option, but other than that all
 other arguments are passed on directly to the system compiler or
 linker, along with any other required arguments to create the loadable
 module.
@@ -571,10 +591,10 @@ invoked the linker correctly.
 \1f
 File: emodules.info,  Node: Other ellcc options,  Next: Environment Variables,  Prev: Link Mode,  Up: Using ellcc
 
-Other `ellcc' options
-=====================
+3.4 Other `ellcc' options
+=========================
 
-   Aside from the three main `ellcc' modes described above, `ellcc' can
+Aside from the three main `ellcc' modes described above, `ellcc' can
 accept several other options.  These are typically used in a `Makefile'
 to determine installation paths.  `ellcc' also allows you to over-ride
 several of its built-in compiler and linker options using environment
@@ -599,8 +619,8 @@ variables.  Here is the complete list of options that `ellcc' accepts.
      is displayed.
 
 `--mod-name=NAME'
-     Sets the short internaml module NAME to the string specified,
-     which must consist only of valid C identifiers.  Required during
+     Sets the short internal module NAME to the string specified, which
+     must consist only of valid C identifiers.  Required during
      initialization mode.
 
 `--mod-version=VERSION'
@@ -629,8 +649,8 @@ variables.  Here is the complete list of options that `ellcc' accepts.
      exit.
 
 `--mod-archdir'
-     Prints the name of the root of the architecture-dependant
-     directory that XEmacs searches for architecture-dependant files.
+     Prints the name of the root of the architecture-dependent
+     directory that XEmacs searches for architecture-dependent files.
 
 `--mod-config'
      Prints the name of the configuration for which XEmacs and `ellcc'
@@ -639,15 +659,15 @@ variables.  Here is the complete list of options that `ellcc' accepts.
 \1f
 File: emodules.info,  Node: Environment Variables,  Prev: Other ellcc options,  Up: Using ellcc
 
-Environment Variables
-=====================
+3.5 Environment Variables
+=========================
 
-   During its normal operation, `ellcc' uses the compiler and linker
-flags that were determined at the time XEmacs was configured.  In
-certain rare circumstances you may wish to over-ride the flags passed to
-the compiler or linker, and you can do so using environment variables.
-The table below lists all of the environment variables that `ellcc'
-recognises.
+During its normal operation, `ellcc' uses the compiler and linker flags
+that were determined at the time XEmacs was configured.  In certain
+rare circumstances you may wish to over-ride the flags passed to the
+compiler or linker, and you can do so using environment variables.  The
+table below lists all of the environment variables that `ellcc'
+recognizes.
 
 `ELLCC'
      This is used to over-ride the name of the C compiler that is
@@ -686,11 +706,11 @@ recognises.
 \1f
 File: emodules.info,  Node: Defining Functions,  Next: Defining Variables,  Prev: Using ellcc,  Up: Top
 
-Defining Functions
-******************
+4 Defining Functions
+********************
 
-   One of the main reasons you would ever write a module is to provide
-one or more "functions" for the user or the editor to use.  The term
+One of the main reasons you would ever write a module is to provide one
+or more "functions" for the user or the editor to use.  The term
 "function" is a bit overloaded here, as it refers to both a C function
 and the way it appears to Lisp, which is a "subroutine", or simply a
 "subr".  A Lisp subr is also known as a Lisp primitive, but that term
@@ -726,26 +746,26 @@ It is all taken care of in the `docs_of_module' function created by
 \1f
 File: emodules.info,  Node: Using DEFUN,  Next: Declaring Functions,  Prev: Defining Functions,  Up: Defining Functions
 
-Using `DEFUN'
-=============
+4.1 Using `DEFUN'
+=================
 
-   Although the full syntax of a function declaration is discussed in
-the XEmacs internals manual in greater depth, what follows is a brief
+Although the full syntax of a function declaration is discussed in the
+XEmacs internals manual in greater depth, what follows is a brief
 description of how to define and implement a new Lisp primitive in a
 module.  This is done using the `DEFUN' macro.  Here is a small example:
 
      DEFUN ("my-function", Fmy_function, 1, 1, "FFile name: ", /*
      Sample Emacs primitive function.
-     
-     The specified FILE is frobricated before it is fnozzled.
+
+     The specified FILE is frobnicated before it is fnozzled.
      */
          (file))
      {
        char *filename;
-     
+
        if (NILP(file))
          return Qnil;
-     
+
        filename = (char *)XSTRING_DATA(file);
        frob(filename);
        return Qt;
@@ -769,11 +789,11 @@ argument names, if any.
 \1f
 File: emodules.info,  Node: Declaring Functions,  Prev: Using DEFUN,  Up: Defining Functions
 
-Declaring Functions
-===================
+4.2 Declaring Functions
+=======================
 
-   Simply writing the code for a function is not enough to make it
-availible to the Lisp reader.  You have to, during module
+Simply writing the code for a function is not enough to make it
+available to the Lisp reader.  You have to, during module
 initialization, let the Lisp reader know about the new function.  This
 is done by calling `DEFSUBR' with the name of the function.  This is
 the sole purpose of the initialization function `syms_of_module'.
@@ -800,12 +820,12 @@ XEmacs internals manual for more details.
 \1f
 File: emodules.info,  Node: Defining Variables,  Next: Index,  Prev: Defining Functions,  Up: Top
 
-Defining Variables
-******************
+5 Defining Variables
+********************
 
-   Rarely will you write a module that only contains functions.  It is
+Rarely will you write a module that only contains functions.  It is
 common to also provide variables which can be used to control the
-behaviour of the function, or store the results of the function being
+behavior of the function, or store the results of the function being
 executed.  The actual C variable types are the same for modules and
 internal XEmacs primitives, and the declaration of the variables is
 identical.
@@ -823,7 +843,7 @@ internals manual.
    One _very_ important difference between XEmacs variables and module
 variables is how you use pure space.  Simply put, you *never* use pure
 space in XEmacs modules.  The pure space storage is of a limited size,
-and is initialized propperly during the dumping of XEmacs.  Because
+and is initialized properly during the dumping of XEmacs.  Because
 variables are being added dynamically to an already running XEmacs when
 you load a module, you cannot use pure space.  Be warned: *do not use
 pure space in modules.  Repeat, do not use pure space in modules.*
@@ -836,20 +856,20 @@ a prudent thing to do.
 
      Lisp_Object Vsample_string;
      int sample_boolean;
-     
+
      void
      vars_of_module()
      {
        DEFVAR_LISP ("sample-string", &Vsample_string /*
      This is a sample string, declared in a module.
-     
+
      Nothing magical about it.
      */);
-     
+
        DEFVAR_BOOL("sample-boolean", &sample_boolean /*
      *Sample user-settable boolean.
      */);
-     
+
        sample_boolean = 0;
        Vsample_string = build_string("My string");
      }
@@ -860,93 +880,105 @@ File: emodules.info,  Node: Index,  Prev: Defining Variables,  Up: Top
 Index
 *****
 
+\0\b[index\0\b]
 * Menu:
 
-* annatomy:                              Annatomy of a Module.
-* compiler:                              Introduction.
-* compiling:                             Compile Mode.
-* config.h:                              Required Header File.
-* defining functions:                    Defining Functions.
-* defining objects:                      Defining Variables.
-* defining variables:                    Defining Variables.
-* DEFSUBR:                               Declaring Functions.
-* DEFUN:                                 Using DEFUN.
-* DEFVAR_BOOL:                           Defining Variables.
-* DEFVAR_INT:                            Defining Variables.
-* DEFVAR_LISP:                           Defining Variables.
-* dependancies:                          Loading other Modules.
-* DLL:                                   Introduction.
-* docs_of_module:                        Required Functions.
-* documentation <1>:                     Initialization Mode.
-* documentation:                         Introduction.
-* DSO:                                   Introduction.
+* anatomy:                               Anatomy of a Module.  (line  6)
+* compiler:                              Introduction.         (line 39)
+* compiling:                             Compile Mode.         (line  6)
+* config.h:                              Required Header File. (line  6)
+* defining functions:                    Defining Functions.   (line  6)
+* defining objects:                      Defining Variables.   (line  6)
+* defining variables:                    Defining Variables.   (line  6)
+* DEFSUBR:                               Declaring Functions.  (line  6)
+* DEFUN:                                 Using DEFUN.          (line  6)
+* DEFVAR_BOOL:                           Defining Variables.   (line  6)
+* DEFVAR_INT:                            Defining Variables.   (line  6)
+* DEFVAR_LISP:                           Defining Variables.   (line  6)
+* dependencies:                          Loading other Modules.
+                                                               (line  6)
+* DLL:                                   Introduction.         (line 25)
+* docs_of_module:                        Required Functions.   (line 47)
+* documentation <1>:                     Initialization Mode.  (line  6)
+* documentation:                         Introduction.         (line 69)
+* DSO:                                   Introduction.         (line 25)
 * ELLCC:                                 Environment Variables.
-* ellcc <1>:                             Using ellcc.
-* ellcc:                                 Introduction.
+                                                               (line 14)
+* ellcc <1>:                             Using ellcc.          (line  6)
+* ellcc:                                 Introduction.         (line 39)
 * ELLCFLAGS:                             Environment Variables.
+                                                               (line 22)
 * ELLDLLFLAGS:                           Environment Variables.
+                                                               (line 32)
 * ELLLD:                                 Environment Variables.
+                                                               (line 18)
 * ELLLDFLAGS:                            Environment Variables.
+                                                               (line 27)
 * ELLMAKEDOC:                            Environment Variables.
+                                                               (line 42)
 * ELLPICFLAGS:                           Environment Variables.
-* Emacs Modules:                         Introduction.
-* emodules.h:                            Required Header File.
+                                                               (line 36)
+* Emacs Modules:                         Introduction.         (line 25)
+* emodules.h:                            Required Header File. (line  6)
 * emodules_load:                         Loading other Modules.
+                                                               (line  6)
 * environment variables:                 Environment Variables.
-* format, module:                        Annatomy of a Module.
-* functions, declaring:                  Declaring Functions.
-* functions, defining:                   Using DEFUN.
-* functions, Lisp:                       Using DEFUN.
-* functions, required:                   Required Functions.
-* header files:                          Introduction.
-* help:                                  Introduction.
-* include files:                         Required Header File.
-* initialization <1>:                    Initialization Mode.
-* initialization <2>:                    Required Variables.
-* initialization:                        Required Functions.
-* linker:                                Introduction.
-* linking:                               Link Mode.
-* module compiler:                       Using ellcc.
-* module format:                         Annatomy of a Module.
-* module skeleton:                       Annatomy of a Module.
+                                                               (line  6)
+* format, module:                        Anatomy of a Module.  (line  6)
+* functions, declaring:                  Declaring Functions.  (line  6)
+* functions, defining:                   Using DEFUN.          (line  6)
+* functions, Lisp:                       Using DEFUN.          (line  6)
+* functions, required:                   Required Functions.   (line  6)
+* header files:                          Introduction.         (line 51)
+* help:                                  Introduction.         (line 69)
+* include files:                         Required Header File. (line  6)
+* initialization <1>:                    Initialization Mode.  (line  6)
+* initialization <2>:                    Required Variables.   (line  6)
+* initialization:                        Required Functions.   (line  6)
+* linker:                                Introduction.         (line 39)
+* linking:                               Link Mode.            (line  6)
+* module compiler:                       Using ellcc.          (line  6)
+* module format:                         Anatomy of a Module.  (line  6)
+* module skeleton:                       Anatomy of a Module.  (line  6)
 * modules_of_module <1>:                 Loading other Modules.
-* modules_of_module:                     Required Functions.
-* objects, defining:                     Defining Variables.
-* objects, Lisp:                         Defining Variables.
-* paths:                                 Other ellcc options.
-* required functions:                    Required Functions.
-* required header:                       Required Header File.
-* required variables:                    Required Variables.
-* samples:                               Introduction.
-* shared object:                         Introduction.
-* skeleton, module:                      Annatomy of a Module.
-* subrs:                                 Using DEFUN.
-* syms_of_module:                        Required Functions.
-* variables, defining:                   Defining Variables.
-* variables, Lisp:                       Defining Variables.
-* variables, required:                   Required Variables.
-* vars_of_module:                        Required Functions.
+                                                               (line  6)
+* modules_of_module:                     Required Functions.   (line 40)
+* objects, defining:                     Defining Variables.   (line  6)
+* objects, Lisp:                         Defining Variables.   (line  6)
+* paths:                                 Other ellcc options.  (line  6)
+* required functions:                    Required Functions.   (line  6)
+* required header:                       Required Header File. (line  6)
+* required variables:                    Required Variables.   (line  6)
+* samples:                               Introduction.         (line 61)
+* shared object:                         Introduction.         (line 25)
+* skeleton, module:                      Anatomy of a Module.  (line  6)
+* subrs:                                 Using DEFUN.          (line  6)
+* syms_of_module:                        Required Functions.   (line 20)
+* variables, defining:                   Defining Variables.   (line  6)
+* variables, Lisp:                       Defining Variables.   (line  6)
+* variables, required:                   Required Variables.   (line  6)
+* vars_of_module:                        Required Functions.   (line 26)
 
 
 \1f
 Tag Table:
 Node: Top\7f1536
-Node: Introduction\7f2884
-Node: Annatomy of a Module\7f7393
-Node: Required Header File\7f8209
-Node: Required Functions\7f10130
-Node: Required Variables\7f12379
-Node: Loading other Modules\7f15066
-Node: Using ellcc\7f17124
-Node: Compile Mode\7f18919
-Node: Initialization Mode\7f20287
-Node: Link Mode\7f25319
-Node: Other ellcc options\7f26466
-Node: Environment Variables\7f29046
-Node: Defining Functions\7f30737
-Node: Using DEFUN\7f32748
-Node: Declaring Functions\7f34459
-Node: Defining Variables\7f35802
-Node: Index\7f38047
+Node: Introduction\7f2883
+Node: Anatomy of a Module\7f7392
+Node: Required Header File\7f8207
+Node: Required Functions\7f10131
+Node: Required Variables\7f12860
+Node: Loading other Modules\7f15551
+Node: Using ellcc\7f18472
+Node: Compile Mode\7f20267
+Node: Initialization Mode\7f21635
+Node: Link Mode\7f26635
+Node: Other ellcc options\7f27785
+Node: Environment Variables\7f30369
+Node: Defining Functions\7f32066
+Node: Using DEFUN\7f34078
+Node: Declaring Functions\7f35779
+Node: Defining Variables\7f37127
+Node: Index\7f39351
 \1f
 End Tag Table