macro EXT_COMMAND (engextcpp.hpp)
La macro EXT_COMMAND se usa para definir un comando de extensión declarado mediante la macro EXT_COMMAND_METHOD .
Un comando de extensión se define de la siguiente manera:
Sintaxis
void EXT_COMMAND(
_Name,
_Desc,
_Args
);
Parámetros
_Name
Nombre del comando de extensión. Debe ser el mismo que el parámetro _Name que se usa para declarar el comando de extensión mediante EXT_COMMAND_METHOD.
Dado que EXT_COMMAND es una macro, _Name debe ser el nombre sin sistema operativo del comando de extensión y no debe ir entre comillas o ser una variable.
_Desc
Cadena que describe el comando de extensión.
_Args
Cadena que describe los argumentos esperados por el comando de extensión. Para obtener información sobre cómo se da formato a la cadena de _Args , vea Analizar argumentos de extensión.
Valor devuelto
None
Observaciones
El cuerpo del comando de extensión no toma ningún argumento. Sin embargo, dado que el comando de extensión se declara como un método de la clase EXT_CLASS , tiene acceso a todos los miembros de la clase base ExtExtension , algunos de los cuales se inicializan para la ejecución del comando de extensión.
La macro EXT_COMMAND_METHOD se debe usar para declarar el comando de extensión. Al igual que con todas las declaraciones de C++, la declaración EXT_COMMAND_METHOD debe aparecer en los archivos de origen antes de la definición de EXT_COMMAND.
Cuando el motor del depurador llama a un método de comando de extensión, encapsula la llamada en un bloque try/except . Esto protege el motor de algunos tipos de errores en el código de extensión; pero, dado que las llamadas de extensión se ejecutan en el mismo subproceso que el motor, todavía pueden provocar que se bloquee.
Esta macro también crea una función denominada _Name (que llama al método definido por la macro). Para que el motor llame a la extensión, esta función debe exportarse desde el archivo DLL de la biblioteca de extensiones.
La constante EXT_CLASS especifica el nombre de la clase de C++ que representa la biblioteca de extensiones EngExtCpp.
EXT_CLASS
#ifndef EXT_CLASS
#define EXT_CLASS Extension
#endif
El valor predeterminado de EXT_CLASS es Extension. Puede cambiar este valor definiendo EXT_CLASS antes de incluir el archivo de encabezado Engextcpp.hpp.
Cada comando de extensión de la biblioteca se declara como miembro de la clase EXT_CLASS mediante la macro EXT_COMMAND_METHOD. Por ejemplo, una biblioteca con dos comandos de extensión, extcmd y otroextcmd, podría definir la clase EXT_CLASS de la siguiente manera:
class EXT_CLASS : public ExtExtension
{
public:
EXT_COMMAND_METHOD(extcmd);
EXT_COMMAND_METHOD(anotherextcmd);
}
Los comandos de extensión declarados mediante EXT_COMMAND_METHOD deben definirse mediante EXT_COMMAND y deben exportarse desde la biblioteca.
La macro EXT_DECLARE_GLOBALS crea una única instancia de la clase EXT_CLASS.
La macro EXT_DECLARE_GLOBALS configura algunas variables globales para usarlas en el marco de extensión EngExtCpp. Esto incluye la creación de una única instancia de la clase EXT_CLASS que representa la biblioteca de extensiones EngExtCpp.
Uno de los archivos de origen que se van a compilar en la biblioteca de extensiones EngExtCpp debe incluir el siguiente comando.
EXT_DECLARE_GLOBALS()
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | engextcpp.hpp (include Engextcpp.hpp) |