nl::ArgParser

Zusammenfassung

Aufzählungen

OptionArgumentType enum
Definiert die Argumentanforderungen für eine Befehlszeilenoption.

Typedefs

NonOptionArgHandlerFunct)(const char *progName, int argc, char *argv[]) typedef.
bool(*
Eine Funktion, die aufgerufen werden kann, um alle verbleibenden Befehlszeilenargumente zu verarbeiten, die keine Optionen sind.
OptionHandlerFunct)(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg) typedef.
bool(*
Eine Funktion, die aufgerufen werden kann, um eine Reihe von Befehlszeilenoptionen zu verarbeiten.

Variablen

PrintArgError = DefaultPrintArgError)(const char *msg,...)
void(*
Zeiger auf die Funktion, mit der Fehler ausgegeben werden, die beim Parsen von Argumenten auftreten.
gActiveOptionSets = NULL
Die Liste der OptionSets, die an den derzeit aktiven ParseArgs()-Aufruf übergeben werden.

Funktionen

CountAllOptions(OptionSet *optSets[])
size_t
CountAllOptions(OptionSet **optSets)
size_t
CountOptionSets(OptionSet *optSets[])
size_t
CountOptionSets(OptionSet **optSets)
size_t
DefaultPrintArgError(const char *msg, ...)
void
Gibt eine Fehlermeldung zum Parsen von Argumenten aus.
FindOptionById(OptionSet **optSets, int optId, OptionSet *& optSet, OptionDef *& optDef)
void
FindOptionByIndex(OptionSet **optSets, int optIndex, OptionSet *& optSet, OptionDef *& optDef)
void
GetNextArg(char *& parsePoint)
bool
IsShortOptionChar(int ch)
bool
MakeLongOptions(OptionSet **optSets)
struct option *
MakeShortOptions(OptionSet **optSets)
char *
MakeUniqueHelpGroupNamesList(OptionSet *optSets[])
const char **
ParseArgs(const char *progName, int argc, char *argv[], OptionSet *optSets[], NonOptionArgHandlerFunct nonOptArgHandler, bool ignoreUnknown)
bool
Parsen Sie eine Reihe von Befehlszeilenargumenten und rufen Sie Verarbeitungsfunktionen auf, um alle Optionen und Nicht-Optionsargumente zu verarbeiten.
ParseArgs(const char *progName, int argc, char *argv[], OptionSet *optSets[], NonOptionArgHandlerFunct nonOptArgHandler)
bool
ParseArgs(const char *progName, int argc, char *argv[], OptionSet *optSets[])
bool
ParseArgsFromEnvVar(const char *progName, const char *varName, OptionSet *optSets[], NonOptionArgHandlerFunct nonOptArgHandler, bool ignoreUnknown)
bool
Parst eine Reihe von Argumenten aus einer benannten Umgebungsvariable.
ParseArgsFromEnvVar(const char *progName, const char *varName, OptionSet *optSets[])
bool
ParseArgsFromEnvVar(const char *progName, const char *varName, OptionSet *optSets[], NonOptionArgHandlerFunct nonOptArgHandler)
bool
ParseArgsFromString(const char *progName, const char *argStr, OptionSet *optSets[], NonOptionArgHandlerFunct nonOptArgHandler, bool ignoreUnknown)
bool
Parst eine Reihe von Argumenten aus einem bestimmten String.
ParseArgsFromString(const char *progName, const char *argStr, OptionSet *optSets[], NonOptionArgHandlerFunct nonOptArgHandler)
bool
ParseArgsFromString(const char *progName, const char *argStr, OptionSet *optSets[])
bool
ParseBoolean(const char *str, bool & output)
bool
Parst einen String als booleschen Wert.
ParseFabricId(const char *str, uint64_t & fabricId, bool allowReserved)
bool
Parsen Sie eine Weave-Stoff-ID in Textform.
ParseHexString(const char *hexStr, uint32_t strLen, uint8_t *outBuf, uint32_t outBufSize, uint32_t & outDataLen)
bool
Parst einen String von Byte in hexadezimaler Form.
ParseIPAddress(const char *str, IPAddress & output)
bool
Parsen Sie eine IP-Adresse in Textform.
ParseInt(const char *str, uint64_t & output, int base)
bool
Parsen Sie einen String und versuchen Sie, ihn in eine vorzeichenlose 64-Bit-Ganzzahl zu konvertieren. Wenden Sie dabei die entsprechende Interpretation auf Basis des Basisparameters an.
ParseInt(const char *str, uint32_t & output, int base)
bool
Parsen Sie einen String und versuchen Sie, ihn in eine vorzeichenlose 32-Bit-Ganzzahl zu konvertieren. Wenden Sie dabei die entsprechende Interpretation auf Basis des Basisparameters an.
ParseInt(const char *str, int32_t & output, int base)
bool
Parsen Sie einen String und versuchen Sie, ihn in eine vorzeichenbehaftete 32-Bit-Ganzzahl zu konvertieren. Wenden Sie dabei die entsprechende Interpretation auf Basis des Basisparameters an.
ParseInt(const char *str, uint64_t & output)
bool
Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenlose 64-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.
ParseInt(const char *str, uint32_t & output)
bool
Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenlose 32-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.
ParseInt(const char *str, int32_t & output)
bool
Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenbehaftete 32-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.
ParseInt(const char *str, uint16_t & output)
bool
Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenlose 16-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.
ParseInt(const char *str, int16_t & output)
bool
Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenbehaftete 16-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.
ParseInt(const char *str, uint8_t & output)
bool
Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenlose 8-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.
ParseNodeId(const char *str, uint64_t & nodeId)
bool
Parsen Sie eine Weave-Knoten-ID in Textform.
ParseSubnetId(const char *str, uint16_t & subnetId)
bool
Parst und versucht, einen String in eine 16-Bit-Subnetz-ID ohne Vorzeichen zu konvertieren, wobei der String als hexadezimal interpretiert wird.
PrintOptionHelp(OptionSet *optSets[], FILE *s)
void
Gibt den Hilfetext für eine bestimmte Liste von Optionen in einem Stream aus.
PutStringWithBlankLine(FILE *s, const char *str)
void
PutStringWithNewLine(FILE *s, const char *str)
void
SplitArgs(char *argStr, char **& argList, char *initialArg)
int32_t

Klassen

nl::ArgParser::HelpOptions

Häufiges OptionSet zur Handhabung von Informationsoptionen (Hilfe, Version).

nl::ArgParser::OptionSetBase

Ein OptionSet, wobei der Handler eine virtuelle Funktion ist.

Strukturen

nl::ArgParser::OptionDef

Definiert eine Befehlszeilenoption.

nl::ArgParser::OptionSet

Definiert eine Gruppe logisch zusammenhängender und wiederverwendbarer Befehlszeilenoptionen.

Aufzählungen

OptionArgumentType

 OptionArgumentType

Definiert die Argumentanforderungen für eine Befehlszeilenoption.

Typedefs

NonOptionArgHandlerFunct

bool(* NonOptionArgHandlerFunct)(const char *progName, int argc, char *argv[])

Eine Funktion, die aufgerufen werden kann, um alle verbleibenden Befehlszeilenargumente zu verarbeiten, die keine Optionen sind.

OptionHandlerFunct

bool(* OptionHandlerFunct)(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg)

Eine Funktion, die aufgerufen werden kann, um eine Reihe von Befehlszeilenoptionen zu verarbeiten.

Variablen

PrintArgError

void(* PrintArgError)(const char *msg,...) = DefaultPrintArgError

Zeiger auf die Funktion, mit der Fehler ausgegeben werden, die beim Parsen von Argumenten auftreten.

Anwendungen sollten PrintArgError() aufrufen, um Fehler in ihren Optionen zur Verarbeitung von Argumenten und anderen Argumenten ohne Optionen zu melden, anstatt direkt in stdout/stderr auszugeben.

Die Standardeinstellung ist ein Zeiger auf die Funktion DefaultPrintArgError().

gActiveOptionSets

OptionSet ** gActiveOptionSets = NULL

Die Liste der OptionSets, die an den derzeit aktiven ParseArgs()-Aufruf übergeben werden.

Dieser Wert ist NULL, wenn kein Aufruf von ParseArgs() ausgeführt wird.

Funktionen

CountAllOptions

size_t CountAllOptions(
  OptionSet *optSets[]
)

CountAllOptions

size_t CountAllOptions(
  OptionSet **optSets
)

CountOptionSets

size_t CountOptionSets(
  OptionSet *optSets[]
)

CountOptionSets

size_t CountOptionSets(
  OptionSet **optSets
)

DefaultPrintArgError

void DefaultPrintArgError(
  const char *msg,
  ...
)

Gibt eine Fehlermeldung zum Parsen von Argumenten aus.

Standardfunktion zum Drucken von Fehlermeldungen, die beim Parsen von Argumenten auftreten.

Details
Parameter
[in] msg
Die zu druckende Nachricht.

Anwendungen sollten den Aufruf über den Funktionszeiger PrintArgError ausführen, anstatt diese Funktion direkt aufzurufen.

FindOptionById

void FindOptionById(
  OptionSet **optSets,
  int optId,
  OptionSet *& optSet,
  OptionDef *& optDef
)

FindOptionByIndex

void FindOptionByIndex(
  OptionSet **optSets,
  int optIndex,
  OptionSet *& optSet,
  OptionDef *& optDef
)

GetNextArg

bool GetNextArg(
  char *& parsePoint
)

IsShortOptionChar

bool IsShortOptionChar(
  int ch
)

MakeLongOptions

struct option * MakeLongOptions(
  OptionSet **optSets
)

MakeShortOptions

char * MakeShortOptions(
  OptionSet **optSets
)

MakeUniqueHelpGroupNamesList

const char ** MakeUniqueHelpGroupNamesList(
  OptionSet *optSets[]
)

ParseArgs

bool ParseArgs(
  const char *progName,
  int argc,
  char *argv[],
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler,
  bool ignoreUnknown
)

Parsen Sie eine Reihe von Befehlszeilenargumenten und rufen Sie Verarbeitungsfunktionen auf, um alle Optionen und Nicht-Optionsargumente zu verarbeiten.

ParseArgs() verwendet eine Liste von Argumenten (argv) und parst sie gemäß einer Reihe von bereitgestellten Optionsdefinitionen. Die Funktion unterstützt sowohl lange (opt) als auch kurze (-o) Optionen und implementiert dieselbe Optionssyntax wie die GNU getopt_long(3)-Funktion.

Details
Parameter
[in] progName
Der Name des Programms oder Kontexts, in dem die Argumente geparst werden. Dieser String wird verwendet, um Fehlermeldungen und Warnungen voranzustellen.
[in] argc
Die Anzahl der Argumente, die geparst werden sollen, plus 1.
[in] argv
Ein Array von Argumentstrings, die geparst werden sollen. Die Länge des Arrays muss 1 größer sein als der für argc angegebene Wert und argv[argc] muss auf NULL gesetzt werden. Das Parsen des Arguments beginnt mit dem second Array-Element (argv[1]); 0 wird ignoriert.
[in] optSets
Eine Liste von Verweisen auf OptionSet-Strukturen, die die rechtlichen Optionen definieren. Die bereitgestellte Liste muss mit NULL beendet werden.
[in] nonOptArgHandler
Ein Zeiger auf eine Funktion, die aufgerufen wird, sobald das Parsen der Optionen mit allen verbleibenden Nicht-Options-Argumenten abgeschlossen ist . Die Funktion wird unabhängig davon aufgerufen, ob noch Argumente vorhanden sind. Bei der Übergabe von NULL meldet ParseArgs() einen Fehler, wenn Argumente ohne Optionen vorhanden sind.
[in] ignoreUnknown
Falls wahr, werden nicht erkannte Optionen ignoriert.
Rückgabe
true, wenn alle Optionen und Nicht-Optionsargumente erfolgreich geparst wurden; false, wenn eine Option nicht erkannt wurde oder eine der Handler-Funktionen fehlgeschlagen ist (d.h. „false“ zurückgegeben wurde).

Optionsdefinitionen werden an ParseArgs() als Array von OptionSet-Strukturen (optSets) übergeben. Jedes OptionSet enthält ein Array mit Optionsdefinitionen und eine Handler-Funktion. ParseArgs() verarbeitet Optionsargumente in der angegebenen Reihenfolge und ruft die entsprechende Handler-Funktion für jede erkannte Option auf. Sobald alle Optionen geparst wurden, wird eine separate Handler-Funktion ohne Optionen (nonOptArgHandler) einmal aufgerufen, um alle verbleibenden Argumente zu verarbeiten.

OPTIONEN

Ein OptionSet enthält eine Reihe von Optionsdefinitionen sowie einen Zeiger auf eine Handler-Funktion, die aufgerufen wird, wenn eine der verknüpften Optionen erkannt wird. Optionssätze enthalten auch Hilfetexte zur Syntax und zum Zweck der einzelnen Optionen (siehe OPTIONEN HILFE unten). Mit Optionssätzen lassen sich wiederverwendbare Sammlungen verwandter Optionen erstellen. Dies vereinfacht die Verwaltung mehrerer Anwendungen, die ähnliche Optionen akzeptieren (z.B. Testanwendungen).

Es gibt zwei Muster zum Definieren von OptionSetsone, die entweder eine Instanz der OptionSet-Struktur selbst initialisieren können, z.B. als statische globale oder Unterklasse OptionSetBase erstellen und einen Konstruktor bereitstellen. Letzteres verwendet eine rein virtuelle HandleOption()-Funktion, um die Optionsbehandlung an die Unterklasse zu delegieren.

Listen von OptionSets werden als NULL-terminiertes Zeiger-Array an die ParseArgs()-Funktion übergeben. E.g.:

static OptionSet gToolOptions =
{
    HandleOption,        // handler function
    gToolOptionDefs,  // array of option definitions
    "GENERAL OPTIONS",   // help group
    gToolOptionHelp   // option help text
};

static OptionSet *gOptionSets[] =
{
    &gToolOptions,
    &gNetworkOptions,
    &gTestingOptions,
    &gHelpOptions,
    NULL
};

int main(int argc, char *argv[])
{
    if (!ParseArgs("test-app", argc, argv, gOptionSets))
    {
        ...
    }
}

OPTIONENDEFINITIONEN

Optionen werden mithilfe der OptionDef-Struktur definiert. Optionsdefinitionen sind als Array von OptionDef-Elementen organisiert, wobei jedes Element den Namen der Option, eine Ganzzahl-ID zum Identifizieren der Option und die Angabe, ob die Option ein Argument erwartet oder zulässt, enthält. Das Ende des Optionsarrays wird durch ein NULL-Namensfeld signalisiert. E.g.:

enum
{
    kOpt_Listen = 1000,
    kOpt_Length,
    kOpt_Count,
};

static OptionDef gToolOptionDefs[] =
{
    // NAME         REQUIRES/ALLOWS ARG?  ID/SHORT OPTION CHAR
    // ============================================================
    {  "listen",    kNoArgument,          kOpt_Listen     },
    {  "length",    kArgumentRequired,    kOpt_Length     },
    {  "count",     kArgumentRequired,    kOpt_Count      },
    {  "num",       kArgumentRequired,    kOpt_Count      }, // alias for --count
    {  "debug",     kArgumentOptional,    'd'             },
    {  "help",      kNoArgument,          'h'             },
    {  NULL }
};

OPTIONEN-IDS

Options-IDs kennzeichnen Optionen für den Code, mit dem sie verarbeitet werden (die Option Handler-Funktion). Options-IDs beziehen sich auf das OptionSet, in dem sie angezeigt werden, und können daher für verschiedene OptionSets wiederverwendet werden (siehe KURZOPTIONEN weiter unten). Üblicherweise beginnt die Nummerierungsoption mit 1000, es kann jedoch > 128 kann verwendet werden. Alias-Optionen können erstellt werden, indem dieselbe Options-ID mit unterschiedlichen Optionsnamen verwendet wird.

KURZOPTIONEN

Im Gegensatz zu getopt_long(3) verwendet ParseArgs() keinen separaten String, der die Liste der kurzen Optionszeichen angibt. Stattdessen kann jede Option, deren ID-Wert in den Bereich der grafischen ASCII-Zeichen fällt, dieses Zeichen als kurze Option verwenden.

Für ParseArgs() müssen kurze Optionszeichen in allen OptionSets eindeutig sein. Aus diesem Grund wird von der Verwendung kurzer Optionen für OptionSets, die von mehreren Programmen gemeinsam genutzt werden, abgeraten, da die Gefahr von Kollisionen sehr hoch ist. Kurze Optionszeichen können in einem einzelnen OptionSet wiederverwendet werden, um die Erstellung von langen Alias-Optionsnamen zu ermöglichen.

OPTIONENHILFE

Jedes OptionSet enthält einen OptionHelp-String, der den Zweck und die Syntax der zugehörigen Optionen beschreibt. Diese Strings werden von der Funktion PrintOptionHelp() verwendet, um Informationen zur Nutzung von Optionen zu generieren.

Konventionsgemäß bestehen Optionshilfe-Zeichenfolgen aus einem Syntaxbeispiel, auf das eine Textbeschreibung der Option folgt. Falls die Option eine Kurzversion oder einen Aliasnamen hat, wird sie vor dem primären langen Namen angegeben. Aus Konsistenzgründen werden Syntaxzeilen mit zwei Leerzeichen und Beschreibungszeilen mit 7 Leerzeichen eingerückt. Nach jeder Optionsbeschreibung, einschließlich der letzten, folgt eine einzelne Leerzeile.

E.g.:

static const char *const gToolOptionHelp =
    "  --listen\n"
    "       Listen and respond to requests sent from another node.\n"
    "\n"
    "  --length \n"
    "       Send requests with the specified number of bytes in the payload.\n"
    "\n"
    "  --num, --count \n"
    "       Send the specified number of requests and exit.\n"
    "\n"
    "  -d, --debug []\n"
    "       Set debug logging to the given level. (Default: 1)\n"
    "\n"
    "  -h, --help\n"
    "       Print help information.\n"
    "\n";

OPTIONEN-HILFEGRUPPEN

OptionSets enthalten einen HelpGroupName-String, mit dem Optionen in der Hilfeausgabe gruppiert werden. Die Funktion PrintOptionHelp() verwendet den HelpGroupName als Abschnittstitel in der generierten Nutzungsausgabe. Wenn mehrere OptionSets denselben HelpGroupName haben, gibt PrintOptionHelp() die Optionshilfe für die verschiedenen OptionSets zusammen unter einem gemeinsamen Abschnittstitel aus.

ParseArgs

bool ParseArgs(
  const char *progName,
  int argc,
  char *argv[],
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler
)

ParseArgs

bool ParseArgs(
  const char *progName,
  int argc,
  char *argv[],
  OptionSet *optSets[]
)

ParseArgsFromEnvVar

bool ParseArgsFromEnvVar(
  const char *progName,
  const char *varName,
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler,
  bool ignoreUnknown
)

Parst eine Reihe von Argumenten aus einer benannten Umgebungsvariable.

ParseArgsFromEnvVar() liest eine benannte Umgebungsvariable und übergibt den Wert zum Parsen an ParseArgsFromString(). Wenn die Umgebungsvariable nicht festgelegt ist, passiert mit der Funktion nichts.

Details
Parameter
[in] progName
Der Name des Programms oder Kontexts, in dem die Argumente geparst werden. Dieser String wird verwendet, um Fehlermeldungen und Warnungen voranzustellen.
[in] varName
Der Name der Umgebungsvariablen.
[in] optSets
Eine Liste von Verweisen auf OptionSet-Strukturen, die die rechtlichen Optionen definieren. Die bereitgestellte Liste muss mit NULL beendet werden.
[in] nonOptArgHandler
Ein Zeiger auf eine Funktion, die aufgerufen wird, sobald das Parsen der Optionen mit allen verbleibenden Nicht-Options-Argumenten abgeschlossen ist . Die Funktion wird unabhängig davon aufgerufen, ob noch Argumente vorhanden sind. Bei der Übergabe von NULL meldet ParseArgs() einen Fehler, wenn Argumente ohne Optionen vorhanden sind.
[in] ignoreUnknown
Falls wahr, werden nicht erkannte Optionen ignoriert.
Rückgabe
true, wenn alle Optionen und Nicht-Optionsargumente erfolgreich geparst wurden oder die angegebene Umgebungsvariable nicht festgelegt ist; false, wenn eine Option nicht erkannt wurde, eine der Handler-Funktionen fehlgeschlagen ist (d.h. „false“ zurückgegeben wurde) oder ein interner Fehler aufgetreten ist.

ParseArgsFromEnvVar

bool ParseArgsFromEnvVar(
  const char *progName,
  const char *varName,
  OptionSet *optSets[]
)

ParseArgsFromEnvVar

bool ParseArgsFromEnvVar(
  const char *progName,
  const char *varName,
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler
)

ParseArgsFromString

bool ParseArgsFromString(
  const char *progName,
  const char *argStr,
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler,
  bool ignoreUnknown
)

Parst eine Reihe von Argumenten aus einem bestimmten String.

ParseArgsFromString() teilt einen bestimmten String (argStr) in einen Satz von Argumenten auf und parst die Argumente mithilfe der Funktion ParseArgs().

Details
Parameter
[in] progName
Der Name des Programms oder Kontexts, in dem die Argumente geparst werden. Dieser String wird verwendet, um Fehlermeldungen und Warnungen voranzustellen.
[in] argStr
Ein String mit Optionen und Argumenten, die geparst werden sollen.
[in] optSets
Eine Liste von Verweisen auf OptionSet-Strukturen, die die rechtlichen Optionen definieren. Die bereitgestellte Liste muss mit NULL beendet werden.
[in] nonOptArgHandler
Ein Zeiger auf eine Funktion, die aufgerufen wird, sobald das Parsen der Optionen mit allen verbleibenden Nicht-Options-Argumenten abgeschlossen ist . Die Funktion wird unabhängig davon aufgerufen, ob noch Argumente vorhanden sind. Bei der Übergabe von NULL meldet ParseArgs() einen Fehler, wenn Argumente ohne Optionen vorhanden sind.
[in] ignoreUnknown
Falls wahr, werden nicht erkannte Optionen ignoriert.
Rückgabe
true, wenn alle Optionen und Nicht-Optionsargumente erfolgreich geparst wurden; false, wenn eine Option nicht erkannt wurde, eine der Handler-Funktionen fehlgeschlagen ist (d.h. „false“ zurückgegeben wurde) oder ein interner Fehler aufgetreten ist.

Die Syntax der Eingabestrings ähnelt der Syntax von Unix-Shell-Befehlen, weist jedoch ein vereinfachtes Zitatschema auf. Im Detail:

  • Argumente werden durch Leerzeichen getrennt, es sei denn, die Leerzeichen werden in Anführungszeichen gesetzt oder mit Escapezeichen versehen.
  • Durch einen umgekehrten Schrägstrich wird das folgende Zeichen maskiert, sodass es als normales Zeichen behandelt wird. Der umgekehrte Schrägstrich selbst wird entfernt.
  • Teilstrings in Anführungszeichen am Anfang/Ende in einfachen oder doppelten Anführungszeichen. Innerhalb einer Teilzeichenfolge sind die einzigen Sonderzeichen der umgekehrte Schrägstrich, der das nächste Zeichen mit Escapezeichen versehen, und das entsprechende Anführungszeichen am Ende. Die Anführungszeichen am Anfang/Ende werden entfernt.

E.g.:

--listen --count 10 --sw-version '1.0 (DEVELOPMENT)' "--hostname=nest.com"

ParseArgsFromString

bool ParseArgsFromString(
  const char *progName,
  const char *argStr,
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler
)

ParseArgsFromString

bool ParseArgsFromString(
  const char *progName,
  const char *argStr,
  OptionSet *optSets[]
)

ParseBoolean

bool ParseBoolean(
  const char *str,
  bool & output
)

Parst einen String als booleschen Wert.

Diese Funktion akzeptiert die folgenden Eingabewerte (ohne Berücksichtigung der Groß- und Kleinschreibung): „true“, „yes“, „t“, „y“, „1“, „false“, „no“, „f“, „n“, „0“.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der den zu analysierenden Wert darstellt.
[out] output
Ein Verweis auf einen booleschen Wert, in dem der geparste Wert im Erfolgsfall gespeichert wird.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

ParseFabricId

bool ParseFabricId(
  const char *str,
  uint64_t & fabricId,
  bool allowReserved
)

Parsen Sie eine Weave-Stoff-ID in Textform.

Die Funktion ParseFabricId() akzeptiert eine 64-Bit-Fabric-ID im Hexadezimalformat mit oder ohne vorangestelltes "0x".

Details
Parameter
[in] str
Ein Zeiger auf einen mit NULL beendeten C-String, der die zu parsende Fabric-ID enthält.
[out] output
Ein Verweis auf einen uint64_t-lvalue, in dem der geparste Wert bei Erfolg gespeichert wird.
[in] allowReserved
Falls wahr, wird das Parsen von Struktur-IDs im reservierten Bereich zugelassen.
Rückgabe
true, wenn der Wert erfolgreich geparst wurde; false, wenn nicht.

ParseHexString

bool ParseHexString(
  const char *hexStr,
  uint32_t strLen,
  uint8_t *outBuf,
  uint32_t outBufSize,
  uint32_t & outDataLen
)

Parst einen String von Byte in hexadezimaler Form.

ParseHexString() erwartet, dass die Eingabe in Form von Hexadezimalziffernpaaren (Groß- oder Kleinschreibung) vorliegt. Hexadezimalpaare können optional durch eines der folgenden Zeichen getrennt werden: Doppelpunkt, Semikolon, Komma, Punkt oder Bindestrich. Außerdem werden Leerzeichen an beliebiger Stelle im Eingabestring ignoriert.

Details
Parameter
[in] hexStr
Ein Zeiger auf den String, der geparst werden soll.
[in] strLen
Die Anzahl der Zeichen in hexStr, die geparst werden sollen.
[in] outBuf
Ein Zeiger auf einen Zwischenspeicher, in dem die Parse-Byte gespeichert werden.
[in] outBufSize
Die Größe des Zwischenspeichers, auf den outBuf verweist.
[out] outDataLen
Ein Verweis auf eine Ganzzahl, die die Gesamtzahl der geparsten Byte erhält. Falls „outBuf“ nicht groß genug ist, um die angegebene Anzahl von Byte aufzunehmen, wird outDataLen auf UINT32_MAX gesetzt.
Rückgabe
true, wenn der Wert erfolgreich geparst wurde; "false", wenn die Eingabedaten fehlerhaft sind oder outBuf zu klein ist.

ParseIPAddress

bool ParseIPAddress(
  const char *str,
  IPAddress & output
)

Parsen Sie eine IP-Adresse in Textform.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der die zu parsende Adresse enthält.
[out] output
Ein Verweis auf ein IPAddress-Objekt, in dem der geparste Wert bei Erfolg gespeichert wird.
Rückgabe
true, wenn der Wert erfolgreich geparst wurde; false, wenn nicht.

ParseInt

bool ParseInt(
  const char *str,
  uint64_t & output,
  int base
)

Parsen Sie einen String und versuchen Sie, ihn in eine vorzeichenlose 64-Bit-Ganzzahl zu konvertieren. Wenden Sie dabei die entsprechende Interpretation auf Basis des Basisparameters an.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der die zu parsende Ganzzahl darstellt.
[out] output
Ein Verweis auf die Speicherung einer vorzeichenlosen 64-Bit-Ganzzahl, für die der geparste Wert im Erfolgsfall gespeichert wird.
[in] base
Basis, anhand derer der String interpretiert und geparst werden soll. Wenn der Wert 0 oder 16 ist, kann der String hexadezimal sein und das Präfix „0x“ haben. Andernfalls wird eine 0 als 10 impliziert, es sei denn, eine führende 0 wird als 8 angedeutet.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

ParseInt

bool ParseInt(
  const char *str,
  uint32_t & output,
  int base
)

Parsen Sie einen String und versuchen Sie, ihn in eine vorzeichenlose 32-Bit-Ganzzahl zu konvertieren. Wenden Sie dabei die entsprechende Interpretation auf Basis des Basisparameters an.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der die zu parsende Ganzzahl darstellt.
[out] output
Ein Verweis auf die Speicherung einer vorzeichenlosen 32-Bit-Ganzzahl, für die der geparste Wert im Erfolgsfall gespeichert wird.
[in] base
Basis, anhand derer der String interpretiert und geparst werden soll. Wenn der Wert 0 oder 16 ist, kann der String hexadezimal sein und das Präfix „0x“ haben. Andernfalls wird eine 0 als 10 impliziert, es sei denn, eine führende 0 wird als 8 angedeutet.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

ParseInt

bool ParseInt(
  const char *str,
  int32_t & output,
  int base
)

Parsen Sie einen String und versuchen Sie, ihn in eine vorzeichenbehaftete 32-Bit-Ganzzahl zu konvertieren. Wenden Sie dabei die entsprechende Interpretation auf Basis des Basisparameters an.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der die zu parsende Ganzzahl darstellt.
[out] output
Ein Verweis auf die Speicherung einer signierten 32-Bit-Ganzzahl, in der der geparste Wert im Erfolgsfall gespeichert wird.
[in] base
Basis, anhand derer der String interpretiert und geparst werden soll. Wenn der Wert 0 oder 16 ist, kann der String hexadezimal sein und das Präfix „0x“ haben. Andernfalls wird eine 0 als 10 impliziert, es sei denn, eine führende 0 wird als 8 angedeutet.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

ParseInt

bool ParseInt(
  const char *str,
  uint64_t & output
)

Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenlose 64-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der die zu parsende Ganzzahl darstellt.
[out] output
Ein Verweis auf die Speicherung einer vorzeichenlosen 64-Bit-Ganzzahl, für die der geparste Wert im Erfolgsfall gespeichert wird.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

ParseInt

bool ParseInt(
  const char *str,
  uint32_t & output
)

Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenlose 32-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der die zu parsende Ganzzahl darstellt.
[out] output
Ein Verweis auf die Speicherung einer vorzeichenlosen 32-Bit-Ganzzahl, für die der geparste Wert im Erfolgsfall gespeichert wird.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

ParseInt

bool ParseInt(
  const char *str,
  int32_t & output
)

Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenbehaftete 32-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der die zu parsende Ganzzahl darstellt.
[out] output
Ein Verweis auf die Speicherung einer signierten 32-Bit-Ganzzahl, in der der geparste Wert im Erfolgsfall gespeichert wird.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

ParseInt

bool ParseInt(
  const char *str,
  uint16_t & output
)

Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenlose 16-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der die zu parsende Ganzzahl darstellt.
[out] output
Ein Verweis auf die Speicherung einer vorzeichenlosen 16-Bit-Ganzzahl, für die der geparste Wert im Erfolgsfall gespeichert wird.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

ParseInt

bool ParseInt(
  const char *str,
  int16_t & output
)

Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenbehaftete 16-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der die zu parsende Ganzzahl darstellt.
[out] output
Ein Speicherreferenz für eine vorzeichenbehaftete 16-Bit-Ganzzahl, in der der geparste Wert im Erfolgsfall gespeichert wird.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

ParseInt

bool ParseInt(
  const char *str,
  uint8_t & output
)

Parst und versucht, einen String, der als Dezimalwert interpretiert wird, in eine vorzeichenlose 8-Bit-Ganzzahl umzuwandeln. Dabei wird die entsprechende Interpretation auf Grundlage des Basisparameters angewendet.

Details
Parameter
[in] str
Ein Zeiger auf einen NULL-terminierten C-String, der die zu parsende Ganzzahl darstellt.
[out] output
Ein Verweis auf die Speicherung einer vorzeichenlosen 8-Bit-Ganzzahl, für die der geparste Wert im Erfolgsfall gespeichert wird.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

ParseNodeId

bool ParseNodeId(
  const char *str,
  uint64_t & nodeId
)

Parsen Sie eine Weave-Knoten-ID in Textform.

Die Funktion ParseNodeId() akzeptiert entweder eine 64-Bit-Knoten-ID im Hexadezimalformat (mit oder ohne vorangestelltes „0x“) oder die Wörter „any“ oder "alle" Diese werden als jede Knoten-ID (0xFFFFFFFFFFFFFFFF) interpretiert.

Details
Parameter
[in] str
Ein Zeiger auf einen mit NULL beendeten C-String, der die zu analysierende Knoten-ID enthält.
[out] output
Ein Verweis auf einen uint64_t-lvalue, in dem der geparste Wert bei Erfolg gespeichert wird.
Rückgabe
true, wenn der Wert erfolgreich geparst wurde; false, wenn nicht.

ParseSubnetId

bool ParseSubnetId(
  const char *str,
  uint16_t & subnetId
)

Parst und versucht, einen String in eine 16-Bit-Subnetz-ID ohne Vorzeichen zu konvertieren, wobei der String als hexadezimal interpretiert wird.

Details
Parameter
[in] str
Ein Zeiger auf einen mit NULL beendeten C-String, der die als hexadezimal formatierte Subnetz-ID zum Parsen darstellt.
[in,out] subnetId
Ein Verweis auf die Speicherung einer vorzeichenlosen 16-Bit-Ganzzahl, in der der geparste Subnetz-ID-Wert im Erfolgsfall gespeichert wird.
Rückgabe
„true“ im Erfolgsfall; andernfalls „false“ bei einem Fehler.

PrintOptionHelp

void PrintOptionHelp(
  OptionSet *optSets[],
  FILE *s
)

Gibt den Hilfetext für eine bestimmte Liste von Optionen in einem Stream aus.

Details
Parameter
[in] optSets
Eine Liste von Verweisen auf OptionSet-Strukturen, die den zu druckenden Hilfetext enthalten.
[in] s
Der FILE-Stream, in den der Hilfetext gedruckt werden soll.

PutStringWithBlankLine

void PutStringWithBlankLine(
  FILE *s,
  const char *str
)

PutStringWithNewLine

void PutStringWithNewLine(
  FILE *s,
  const char *str
)

SplitArgs

int32_t SplitArgs(
  char *argStr,
  char **& argList,
  char *initialArg
)