Analysieren von Erweiterungsargumenten
Das EngExtCpp-Erweiterungsframework stellt Methoden bereit, um die an eine Erweiterung übergebenen Befehlszeilenargumente zu analysieren. Um diese Methoden nutzen zu können, muss die Erweiterung zuerst das Format der Befehlszeilenargumente im EXT_COMMAND-Makro deklarieren.
Um die vom Framework durchgeführte Befehlszeilenargumentanalyse zu umgehen und die Erweiterung selbst zu analysieren, legen Sie die Befehlszeilenbeschreibung auf "{{custom}}"
die Methode "GetRawArgStr " fest, um die Befehlszeilenargumente für die Analyse abzurufen.
Befehlszeilenbeschreibungszeichenfolgen werden automatisch umbrochen, wenn sie gedruckt werden, um die Spaltenbreite der Anzeige anzupassen. Zeilenumbruchzeichen können jedoch in die Beschreibungszeichenfolgen eingebettet werden, indem sie "\n
" verwenden, um neue Zeilen zu beginnen.
Die Befehlszeilenbeschreibung kann NULL oder die leere Zeichenfolge sein. Wenn eines der Beiden auftritt, gibt er an, dass der Erweiterungsbefehl keine Argumente verwendet.
Befehlszeilenbeschreibung
Die Beschreibung der Befehlszeilenargumente ist eine Sequenz, die zwei Typen von Komponenten enthält: Direktiven und Argumente. Die Beschreibung kann optional eine der einzelnen Direktiven enthalten und bis zu 64 Argumente enthalten.
Direktiven
Direktiven geben an, wie die Argumente analysiert werden. Sie werden durch doppelte geschweifte Klammern ('{{'
und '}}'
) eingeschlossen. Jede Direktive kann optional null oder einmal in der Zeichenfolge angezeigt werden, die die Argumente beschreibt.
Die folgenden Richtlinien sind verfügbar:
custom
Deaktiviert die vom Erweiterungsframework vorgenommene Analyse und ermöglicht es der Erweiterung, eine eigene Analyse durchzuführen.
l:str
Überschreibt die standardmäßige lange Beschreibung der Befehlszeilenargumente. Das Erweiterungsframework verwendet str für die vollständige Beschreibung aller Argumente.
opt:str
Überschreibt die Standardpräfixzeichen für benannte Befehle. Der Standardwert ist "/-"
, sodass '/
' oder '-
' als Präfix verwendet werden kann, das benannte Argumente identifiziert.
s:str
Überschreibt die standardmäßige kurze Beschreibung der Befehlszeilenargumente. Das Erweiterungsframework verwendet str für die kurze Beschreibung aller Argumente.
Hier sind einige Beispiele für Direktiven. Die folgende Zeichenfolge wird von einem Erweiterungsbefehl verwendet, der eigene Argumente analysiert. Außerdem werden kurze und lange Beschreibungen für die Verwendung mit dem automatischen Befehl "!help extension" bereitgestellt:
{{custom}}{{s:<arg1> <arg2>}}{{l:arg1 - Argument 1\narg2 - Argument 2}}
Die folgende Zeichenfolge ändert die Argumentoptionspräfixzeichen in "/
" oder "-
". Mit dieser Richtlinie werden die Argumente mit "+arg
" und ":arg
" anstelle von "/arg
" und "-arg
" angegeben:
{{opt:+:}}
Argumente
Argumente können von zwei Typen sein: benannt und unbenannt. Nicht benannte Argumente werden positionell gelesen. Beide Argumenttypen weisen auch einen Anzeigenamen auf, der vom Hilfebefehl verwendet wird.
Argumentbeschreibungen werden durch einzelne geschweifte Klammern ('{'
und '}'
) eingeschlossen.
Jede Argumentbeschreibung weist die folgende Syntax auf:
{[optname];[type[,flags]];[argname];[argdesc]}
Dabei gilt Folgendes:
optname
Der Name des Arguments. Dies ist der Name, der in Befehlen und in Methoden verwendet wird, die Argumente nach Namen abrufen. Dieser Name ist optional. Wenn es vorhanden ist, wird das Argument zu einem "benannten Argument"; sie kann an einer beliebigen Stelle in der Befehlszeile angezeigt werden und wird anhand des Namens referenziert. Wenn es nicht vorhanden ist, wird das Argument zu einem "unbenannten Argument"; Ihre Position in der Befehlszeile ist wichtig und wird anhand ihrer Position relativ zu den anderen nicht benannten Argumenten referenziert.
type
Der Typ des Arguments. Dies wirkt sich darauf aus, wie das Argument analysiert und wie es abgerufen wird. Der Typparameter kann einen der folgenden Werte aufweisen:
b
Boolescher Typ. Das Argument ist entweder vorhanden oder nicht vorhanden. Benannte boolesche Argumente können mithilfe von HasArg abgerufen werden.
e[d][s][bits]
Ausdruckstyp. Das Argument weist einen numerischen Wert auf. Benannte Ausdrucksargumente können mithilfe von GetArgU64 abgerufen werden, und nicht benannte Ausdrucksargumente können mithilfe von GetUnnamedArgU64 abgerufen werden.
d
Der Ausdruck ist auf das nächste Leerzeichen in der Argumentzeichenfolge beschränkt. Wenn dies nicht vorhanden ist, verwendet der Ausdrucksauswerter Zeichen aus der Befehlszeile, bis er bestimmt, dass er das Ende des Ausdrucks erreicht hat.
Der Wert des Ausdrucks ist signiert. Andernfalls ist der Wert des Ausdrucks nicht signiert.
Bits
Die Anzahl der Bits im Wert des Arguments. Der Maximalwert für Bits beträgt 64.
Zeichenfolgentyp. Die Zeichenfolge ist auf das nächste Leerzeichen beschränkt. Benannte Zeichenfolgenargumente können mithilfe von GetArgStr abgerufen werden, und nicht benannte Zeichenfolgenargumente können mit GetUnnamedArgStr abgerufen werden.
x
Zeichenfolgentyp. Das Argument ist der Rest der Befehlszeile. Das Argument wird mit "GetArgStr " oder "GetUnnamedArgStr" wie beim Zeichenfolgentyp abgerufen.
flags
Das Argument flags. Diese bestimmen, wie das Argument vom Parser behandelt wird. Der Flags-Parameter kann einen der folgenden Werte aufweisen:
d=Ausdruck
Der Standardwert des Arguments. Wenn das Argument nicht in der Befehlszeile vorhanden ist, wird das Argument auf Ausdruck festgelegt. Der Standardwert ist eine Zeichenfolge, die gemäß dem Typ des Arguments analysiert wird.
Ds
Der Standardwert wird in der von der Hilfe bereitgestellten Argumentbeschreibung nicht angezeigt.
o
Das -Argument ist optional. Dies ist die Standardeinstellung für benannte Argumente.
r
Das Argument ist erforderlich. Dies ist die Standardeinstellung für nicht benannte Argumente.
argname
Der Anzeigename des Arguments. Dies ist der Name, der vom automatischen !help-Erweiterungsbefehl und von den automatischen Argumenten /? oder -? verwendet wird. Wird beim Drucken einer Zusammenfassung der Befehlszeilenoptionen verwendet.
argdesc
Eine Beschreibung des Arguments. Dies ist die Beschreibung, die von der automatischen !help-Erweiterung und von den automatischen Argumenten "/?" oder "-?" gedruckt wird.
Hier sind einige Beispiele für Argumentbeschreibungen. Der folgende Ausdruck definiert einen Befehl, der ein einzelnes optionales Ausdrucksargument verwendet. Das Argument muss in 32 Bits passen. Wenn das Argument in der Befehlszeile nicht vorhanden ist, wird der Standardwert von 0x100 verwendet.
{;e32,o,d=0x100;flags;Flags to control command}
Der folgende Ausdruck definiert einen Befehl mit einem optionalen booleschen Argument "/v" und einem erforderlichen nicht benannten Zeichenfolgenargument.
{v;b;;Verbose mode}{;s;name;Name of object}
Der folgende Ausdruck definiert einen Befehl mit einem optionalen benannten Ausdrucksargument /oname expr und einem optionalen benannten Zeichenfolgenargument /eol str. Wenn /eol vorhanden ist, wird der Wert auf den Rest der Befehlszeile festgelegt, und es werden keine weiteren Argumente analysiert.
{oname;e;expr;Address of object}{eol;x;str;Commands to use}
Befehlszeile
Im Folgenden finden Sie eine Liste einiger Möglichkeiten, wie Argumente in der Befehlszeile analysiert werden:
Die Werte der benannten Ausdrucks- und Zeichenfolgenargumente folgen dem Namen in der Befehlszeile. Beispiel: /name expr oder /name str.
Bei benannten booleschen Argumenten ist der Wert "true", wenn der Name in der Befehlszeile angezeigt wird. andernfalls "false".
Mehrere boolesche Optionen mit einem einzelnen Zeichennamen können in der Befehlszeile gruppiert werden. Beispielsweise kann "/a /b /c" mit der Kurzhandnotation "/abc" geschrieben werden (es sei denn, es gibt bereits ein Argument namens "abc").
Wenn die Befehlszeile das benannte Argument "?" enthält , z. B. "/?" und "-?", wird das Argument analysiert, und der Hilfetext für die Erweiterung wird angezeigt.
Analysieren von Internen
Mehrere Methoden werden vom Argumentparser zum Festlegen von Argumenten verwendet.
Die Methode SetUnnamedArg ändert den Wert eines nicht benannten Arguments. Aus Gründen der Einfachheit werden die Methoden SetUnnamedArgStr und SetUnnamedArgU64 jeweils nicht benannte Zeichenfolgen- und Ausdrucksargumente festlegen.
Ähnliche Methoden sind für benannte Argumente vorhanden. SetArg wird verwendet, um den Wert eines benannten Arguments zu ändern, und SetArgStr und SetArgU64 werden für benannte Zeichenfolgen- bzw. Ausdrucksargumente verwendet.