Jump to content

SOMInitModule

From EDM2

This function invokes the class creation routines for the classes contained in an OS/2 or Windows class library (DLL).

Syntax

long      majorVersion;
long      minorVersion;
string    className;

SOMInitModule(majorVersion, minorVersion, className);

Parameters

majorVersion (long)
The major version number of the class that was requested when the library was loaded.
minorVersion (long)
The minor version number of the class that was requested when the library was loaded.
className (string)
The name of the class that was requested when the library was loade

Return Code

Remarks

On OS/2 or Windows, a class library (DLL) can contain the implementations for multiple classes, all of which should be created when the DLL is loaded. On OS/2, when loading a DLL, the SOM class manager determines the name of a DLL initialization function, and if the DLL exports a function of this name, the class manager invokes that function (whose purpose is to create the classes in the DLL). SOMInitModule is the default name for this DLL initialization function.

On Windows, the SOM class manager does not call this function. It must be called from the default Windows DLL initialization function, LibMain. This call is made indirectly through the SOM_ClassLibrary macro (see the Example).

Example Code

   #include "xyz.h"
   #ifdef __IBMC__
     #pragma linkage (SOMInitModule, system)
   #endif
   SOMEXTERN void  SOMLINK SOMInitModule (long majorVersion,
                             long minorVersion, string className)
   {
       SOM_IgnoreWarning (majorVersion);  /* This function makes  */
       SOM_IgnoreWarning (minorVersion);  /* no use of the passed */
       SOM_IgnoreWarning (className);     /* arguments.   */
       xyzNewClass, (A_MajorVersion, A_MinorVersion);
   }

For Windows, also include the following function:

    #include <windows.h>
    int CALLBACK LibMain (HINSTANCE inst,
                          WORD ds,
                          WORD Heapsize,
                          LPSTR cmdLine)
    {
        SOM_IgnoreWarning (inst);
        SOM_ignoreWarning (ds);
        SOM_IgnoreWarning (heapSize);
        SOM_IgnoreWarning (cmdLine);
        SOM_ClassLibrary ("xyz.dll");
        return 1;  /* Indicate success to loader */
    }

Related

Functions

Methods

Macros