Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La macro EXT_COMMAND viene utilizzata per definire un comando di estensione dichiarato utilizzando la macro EXT_COMMAND_METHOD.
Un comando di estensione è definito come segue:
Sintassi
void EXT_COMMAND(
_Name,
_Desc,
_Args
);
Parametri
_Name
Nome del comando di estensione. Deve corrispondere al parametro _Name usato per dichiarare il comando di estensione usando EXT_COMMAND_METHOD.
Poiché EXT_COMMAND è una macro, _Name deve essere il nome bare del comando di estensione e non deve essere racchiuso tra virgolette o essere una variabile.
_Desc
Stringa che descrive il comando di estensione.
_Args
Stringa che descrive gli argomenti previsti dal comando di estensione. Per informazioni sulla formattazione della stringa _Args, vedere Parsing Extension Arguments.
Valore restituito
Nessuno
Osservazioni
Il corpo del comando di estensione non accetta argomenti. Tuttavia, poiché il comando di estensione viene dichiarato come metodo della classe EXT_CLASS, ha accesso a tutti i membri della ExtExtension classe base, alcune delle quali vengono inizializzate per l'esecuzione del comando di estensione.
La macro EXT_COMMAND_METHOD deve essere usata per dichiarare il comando di estensione. Come per tutte le dichiarazioni C++, la dichiarazione di EXT_COMMAND_METHOD deve essere visualizzata nei file di origine prima della definizione di EXT_COMMAND.
Quando il motore del debugger chiama un metodo di comando dell'estensione, esegue il wrapping della chiamata in un try/ eccetto blocco. In questo modo il motore viene protetto da alcuni tipi di bug nel codice di estensione; tuttavia, poiché le chiamate di estensione vengono eseguite nello stesso thread del motore, possono comunque causare un arresto anomalo.
Questa macro crea anche una funzione denominata _Name (che chiama il metodo definito dalla macro). Affinché il motore chiami l'estensione, questa funzione deve essere esportata dalla DLL della libreria di estensioni.
La costante EXT_CLASS specifica il nome della classe C++ che rappresenta la libreria di estensioni EngExtCpp.
EXT_CLASS
#ifndef EXT_CLASS
#define EXT_CLASS Extension
#endif
Il valore predefinito di EXT_CLASS è Extension. È possibile modificare questo valore definendo EXT_CLASS prima di includere il file di intestazione Engextcpp.hpp.
Ogni comando di estensione nella libreria viene dichiarato come membro della classe EXT_CLASS usando la macro EXT_COMMAND_METHOD. Ad esempio, una libreria con due comandi di estensione, extcmd e un altroxtcmd , potrebbe definire la classe EXT_CLASS come indicato di seguito:
class EXT_CLASS : public ExtExtension
{
public:
EXT_COMMAND_METHOD(extcmd);
EXT_COMMAND_METHOD(anotherextcmd);
}
I comandi di estensione dichiarati tramite EXT_COMMAND_METHOD devono essere definiti usando EXT_COMMAND e devono essere esportati dalla libreria.
La macro EXT_DECLARE_GLOBALS crea una singola istanza della classe EXT_CLASS.
La macro EXT_DECLARE_GLOBALS configura alcune variabili globali da usare nel framework di estensione EngExtCpp. Ciò include la creazione di una singola istanza della classe EXT_CLASS che rappresenta la libreria di estensioni EngExtCpp.
Uno dei file di origine da compilare nella libreria di estensioni EngExtCpp deve includere il comando seguente
EXT_DECLARE_GLOBALS()
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Desktop |
intestazione | engextcpp.hpp (include Engextcpp.hpp) |