gm2-libs/M2Dependent (The GNU Modula-2 Compiler)

#### 4.1.23 gm2-libs/M2Dependent ¶

    DEFINITION MODULE M2Dependent ;

    FROM SYSTEM IMPORT ADDRESS ;

    TYPE
       ArgCVEnvP = PROCEDURE (INTEGER, ADDRESS, ADDRESS) ;

    PROCEDURE ConstructModules (applicationmodule, libname,
                                overrideliborder: ADDRESS;
                                argc: INTEGER; argv, envp: ADDRESS) ;

    PROCEDURE DeconstructModules (applicationmodule, libname: ADDRESS;
                                  argc: INTEGER; argv, envp: ADDRESS) ;

    (*
       RegisterModule - adds module name to the list of outstanding
                        modules which need to have their dependencies
                        explored to determine initialization order.
    *)

    PROCEDURE RegisterModule (modulename, libname: ADDRESS;
                              init, fini:  ArgCVEnvP;
                              dependencies: PROC) ;

    (*
       RequestDependant - used to specify that modulename:libname
                          is dependant upon
                          module dependantmodule:dependantlibname
    *)

    PROCEDURE RequestDependant (modulename, libname,
                                dependantmodule, dependantlibname: ADDRESS) ;

    (*
       InstallTerminationProcedure - installs a procedure, p, which will
                                     be called when the procedure
                                     ExecuteTerminationProcedures
                                     is invoked.  It returns TRUE is the
                                     procedure is installed.
    *)

    PROCEDURE InstallTerminationProcedure (p: PROC) : BOOLEAN ;

    (*
       ExecuteInitialProcedures - executes the initial procedures installed
                                  by InstallInitialProcedure.
    *)

    PROCEDURE ExecuteInitialProcedures ;

    (*
       InstallInitialProcedure - installs a procedure to be executed just
                                 before the BEGIN code section of the main
                                 program module.
    *)

    PROCEDURE InstallInitialProcedure (p: PROC) : BOOLEAN ;

    (*
       ExecuteTerminationProcedures - calls each installed termination procedure
                                      in reverse order.
    *)

    PROCEDURE ExecuteTerminationProcedures ;

    END M2Dependent.