Atributo module
A instrução module define um grupo de funções, normalmente um conjunto de pontos de entrada de DLL.
[
attributes
]
module modulename
{
elementlist
};
-
attributes
-
Os atributos [uuid], [version], [helpstring], [helpcontext], [hidden]e [dllname] são aceitos antes de uma instrução module . Consulte Descrições de atributo, no livro Automação OLE, para obter mais informações sobre os atributos aceitos antes de uma definição de módulo. O atributo [dllname] é necessário. Se o atributo [uuid] for omitido, o módulo não será especificado exclusivamente no sistema.
-
Modulename
-
O nome do módulo.
-
elementlist
-
Lista de definições constantes e protótipos de função para cada função na DLL. Qualquer número de definições de função pode aparecer na lista de funções. Uma função na lista de funções tem o seguinte formulário:
[atributos] returntype [calling convention funcname](params);
[atributos] const constanttype constname = constval;
Somente os atributos [helpstring] e [helpcontext] são aceitos para um const.
Os seguintes atributos são aceitos em uma função em um módulo: [helpstring], [helpcontext], [string], [entry], [propget], [propput], [propputref], e [vararg]. Se [vararg] for especificado, o último parâmetro deverá ser uma matriz segura do tipo VARIANT .
A convenção de chamada opcional pode ser uma das __pascal/_pascal/pascal, __cdecl/_cdecl/cdecl ou __stdcall/_stdcall/stdcall. O paramname do tipo de convenção de chamada pode incluir até dois sublinhados à esquerda.
A lista de parâmetros é uma lista delimitada por vírgulas de:
[atributos]
O tipo pode ser qualquer tipo declarado anteriormente ou tipo interno, um ponteiro para qualquer tipo ou um ponteiro para um tipo interno. Os atributos nos parâmetros são:
Se [opcional] for usado, os tipos desses parâmetros deverão ser VARIANT ou VARIANT*.
A saída do arquivo de cabeçalho (.h) para módulos é uma série de protótipos de função. O módulo palavra-chave e colchetes ao redor são retirados da saída do arquivo de cabeçalho (.h), mas um comentário (//module modulename) é inserido antes dos protótipos. O palavra-chave extern é inserido antes das declarações.
[
uuid(12345678-1234-1234-1234-123456789ABC),
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);
};