O programador referido nesta secção é o dos módulos funcionais e não o do nível de programa, que será sempre referido de forma explícita.
O código dos métodos gerados a partir da interface da classe da carta
é criado de acordo com o que foi dito no capítulo 4.
Cada corpo é gerado a partir da macro SPM_quot
LETENV_METHOD", caso o
tipo de retorno seja void, ou SPM_quot
R_LETENV_METHOD", caso
contrário. Estas macros vão incluir outras macros, correspondentes às
directivas vistas no capítulo 4, cujas redefinições
permitem alterar a expansão que se obtém a partir das respectivas
versões pré-definidas. Note-se que o gerador de envelopes não utiliza
as macros directamente, apenas se limitando a preparar o código gerado
para que delas possam fazer uso.
#define LETENV_METHOD(type,method,args...) \ { \ BEFORE_BODY(type,method,args) \ REPLACE_BODY(type,method,args) \ AFTER_BODY(type,method,args) \ } #define R_LETENV_METHOD(type,method,args...) \ { \ SomeType ___method_result___; \ BEFORE_BODY(type,method,args) \ R_REPLACE_BODY(type,method,args) \ AFTER_BODY(type,method,args) \ return ___method_result___; \ }
As definições de algumas destas macros envolvem número variável de argumentos: NOME(type,method,args...). O pré-processador deve ser escolhido de modo a suportá-las, e.g. pré-processador do compilador GNU C.