Condividi tramite


macro EXT_COMMAND (engextcpp.hpp)

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.

Nota In alternativa alla fornitura di una stringa che descrive gli argomenti, è possibile usare la stringa "{{custom}}" per indicare che il comando di estensione analizzerà gli argomenti stessi. Il metodo GetRawArgStr può essere usato per recuperare l'argomento non elaborato per l'analisi.
 

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)

Vedere anche

EXT_CLASS

EXT_COMMAND_METHOD

ExtExtension