module

[attributes] module modulename {elementlist};

attributes
The uuid, version, helpstring, helpcontext, hidden, and dllname attributes are accepted before a module statement. See "Attribute Descriptions," in the Ole Automation book, for more information on the attributes accepted before a module definition. The dllname attribute is required. If the uuid attribute is omitted, the module is not uniquely specified in the system.
modulename
The name of the module.
elementlist
List of constant definitions and function prototypes for each function in the DLL. Any number of function definitions can appear in the function list. A function in the function list has the following form:

[attributes] returntype [calling convention] funcname(params);
[attributes] const constname = constval;

Only the helpstring and helpcontext attributes are accepted for a const.

The following attributes are accepted on a function in a module: helpstring, helpcontext, string, entry, propget, propput, propputref, vararg. If vararg is specified, the last parameter must be a safe array of VARIANT type.

The optional calling convention can be one of __pascal/_pascal/pascal, __cdecl/_cdecl/cdecl, or __stdcall/_stdcall/stdcall. The calling convention can include up to two leading underscores.

The parameter list is a comma-delimited list of:

[attributes] type paramname

The type can be any previously declared type or built-in type, a pointer to any type, or a pointer to a built-in type. Attributes on parameters are:

in, out, optional

If optional is used, the types of those parameters must be VARIANT or VARIANT *.

Examples

[uuid(. . .), 
    helpstring("This is not GDI.EXE"), helpcontext(190), 
    dllname("MATH.DLL")] 
module somemodule{ 
    [helpstring("Color for the frame")] unsigned long const COLOR_FRAME 
        = 0xH80000006; 
    [helpstring("Not a rectangle but a square"), entry(1)] pascal double square([in] double x); 
}; 
 

Remarks

The module statement defines a group of functions, typically a set of DLL entry points. The header file (.H) output for modules is a series of function prototypes. The module keyword and surrounding brackets are stripped from the header (.H) file output, but a comment (// module modulename) is inserted before the prototypes. The keyword extern is inserted before the declarations.

See Also

Generating a Type Library With MIDL, Contents of a Type Library, ODL File Syntax, TYPEFLAGS