nl::ArgParser

Podsumowanie

Wyliczenia

OptionArgumentType enum | typ wyliczeniowy
Określa wymagania dotyczące argumentów w przypadku opcji wiersza poleceń.

Definiuje typ

NonOptionArgHandlerFunct)(const char *progName, int argc, char *argv[]) typedef
bool(*
Funkcja, którą można wywołać w celu obsługi wszystkich pozostałych argumentów wiersza poleceń niebędących opcją.
OptionHandlerFunct)(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg) typedef
bool(*
Funkcja, którą można wywołać w celu obsługi zestawu opcji wiersza poleceń.

Zmienne

PrintArgError = DefaultPrintArgError)(const char *msg,...)
void(*
Wskaźnik funkcji służący do drukowania błędów występujących podczas analizowania argumentu.
gActiveOptionSets = NULL
Lista OptionSets przekazanych do obecnie aktywnego wywołania ParseArgs().

Funkcje

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
Drukuj komunikat o błędzie związany z analizowaniem argumentów.
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
Przeanalizować zestaw argumentów w stylu wiersza poleceń, wywołując funkcje obsługi w celu przetworzenia poszczególnych opcji oraz argumentów niebędących opcjami.
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
Przeanalizuj zestaw argumentów z nazwanej zmiennej środowiskowej.
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
Analiza zbioru argumentów danego ciągu znaków.
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
Przeanalizuj ciąg znaków jako wartość logiczną.
ParseFabricId(const char *str, uint64_t & fabricId, bool allowReserved)
bool
Przeanalizuj identyfikator tkaniny Weave w formie tekstowej.
ParseHexString(const char *hexStr, uint32_t strLen, uint8_t *outBuf, uint32_t outBufSize, uint32_t & outDataLen)
bool
Przeanalizuj ciąg bajtów podany w postaci szesnastkowej.
ParseIPAddress(const char *str, IPAddress & output)
bool
Analizuj adres IP w postaci tekstowej.
ParseInt(const char *str, uint64_t & output, int base)
bool
Przeprowadź analizę i spróbuj przekonwertować ciąg na 64-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.
ParseInt(const char *str, uint32_t & output, int base)
bool
Przeprowadź analizę i spróbuj przekonwertować ciąg na 32-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.
ParseInt(const char *str, int32_t & output, int base)
bool
Przeprowadź analizę i spróbuj przekonwertować ciąg na 32-bitową liczbę całkowitą ze znakiem, stosując odpowiednią interpretację na podstawie parametru podstawowego.
ParseInt(const char *str, uint64_t & output)
bool
Przeanalizuj i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętną na 64-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.
ParseInt(const char *str, uint32_t & output)
bool
Przeanalizuj i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętną na 32-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.
ParseInt(const char *str, int32_t & output)
bool
Przeprowadź analizę i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętna na 32-bitową liczbę całkowitą ze znakiem, stosując odpowiednią interpretację na podstawie parametru podstawowego.
ParseInt(const char *str, uint16_t & output)
bool
Przeprowadź analizę i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętna na 16-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.
ParseInt(const char *str, int16_t & output)
bool
Przeprowadź analizę i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętna na 16-bitową liczbę całkowitą ze znakiem, stosując odpowiednią interpretację na podstawie parametru podstawowego.
ParseInt(const char *str, uint8_t & output)
bool
Przeprowadź analizę i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętna na 8-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.
ParseNodeId(const char *str, uint64_t & nodeId)
bool
Przeanalizuj identyfikator węzła Weave w formie tekstowej.
ParseSubnetId(const char *str, uint16_t & subnetId)
bool
Przeprowadź analizę i spróbuj przekonwertować ciąg na 16-bitowy niepodpisany identyfikator podsieci, interpretując ciąg jako szesnastkowy.
PrintOptionHelp(OptionSet *optSets[], FILE *s)
void
Wydrukuj tekst pomocy dla określonej listy opcji do strumienia.
PutStringWithBlankLine(FILE *s, const char *str)
void
PutStringWithNewLine(FILE *s, const char *str)
void
SplitArgs(char *argStr, char **& argList, char *initialArg)
int32_t

Zajęcia

nl::ArgParser::HelpOptions

Typowy element OptionSet używany do obsługi opcji informacyjnych (pomoc, wersja).

nl::ArgParser::OptionSetBase

Wartość OptionSet, w której moduł obsługi to funkcja wirtualna.

Struktura

nl::ArgParser::OptionDef

Definiuje opcję wiersza poleceń.

nl::ArgParser::OptionSet

Definiuje grupę powiązanych logicznie opcji wiersza poleceń wielokrotnego użytku.

Wyliczenia

OptionArgumentType

 OptionArgumentType

Określa wymagania dotyczące argumentów w przypadku opcji wiersza poleceń.

Definiuje typ

NonOptionArgHandlerFunct

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

Funkcja, którą można wywołać w celu obsługi wszystkich pozostałych argumentów wiersza poleceń niebędących opcją.

OptionHandlerFunct

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

Funkcja, którą można wywołać w celu obsługi zestawu opcji wiersza poleceń.

Zmienne

PrintArgError

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

Wskaźnik funkcji służący do drukowania błędów występujących podczas analizowania argumentu.

Zamiast drukować bezpośrednio do stdout/stderr, aplikacje powinny wywoływać funkcję PrintArgError(), aby zgłaszać błędy w funkcjach obsługi opcji i argumentów niebędących opcjami.

Domyślnie jest to wskaźnik do funkcji DefaultPrintArgError().

gActiveOptionSets

OptionSet ** gActiveOptionSets = NULL

Lista OptionSets przekazanych do obecnie aktywnego wywołania ParseArgs().

Ta wartość będzie miała wartość NULL, jeśli nie jest wykonywane żadne wywołanie ParseArgs().

Funkcje

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,
  ...
)

Drukuj komunikat o błędzie związany z analizowaniem argumentów.

Funkcja domyślna używana do wyświetlania komunikatów o błędach, które pojawiają się w wyniku analizy argumentów.

Szczegóły
Parametry
[in] msg
Wiadomość do wydrukowania.

Aplikacje powinny wywoływać tę funkcję za pomocą wskaźnika funkcji PrintArgError, a nie jej bezpośrednio wywoływać.

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
)

Przeanalizować zestaw argumentów w stylu wiersza poleceń, wywołując funkcje obsługi w celu przetworzenia poszczególnych opcji oraz argumentów niebędących opcjami.

ParseArgs() pobiera listę argumentów (argv) i analizuje je zgodnie z zestawem podanych definicji opcji. Funkcja ta obsługuje zarówno opcje długie (opt), jak i Short (-o), a także implementuje tę samą składnię opcji co funkcja GNU getopt_long(3).

Szczegóły
Parametry
[in] progName
Nazwa programu lub kontekst, w którym analizowane są argumenty. Ten ciąg znaków będzie używany jako prefiks komunikatów o błędach i ostrzeżeniach.
[in] argc
Liczba argumentów do przeanalizowania plus 1.
[in] argv
Tablica ciągów argumentów do analizy. Długość tablicy musi być o 1 większa od wartości określonej dla argumentu argc, a parametr argv[argc] musi mieć wartość NULL. Analiza argumentów rozpoczyna się od drugiego elementu tablicy (argv[1]); element 0 jest ignorowany.
[in] optSets
Lista wskaźników do struktur OptionSet, które definiują opcje prawne. Podana lista musi być zakończona wartością NULL.
[in] nonOptArgHandler
Wskaźnik do funkcji, która będzie wywoływana po zakończeniu analizy opcji wraz ze wszystkimi pozostałymi argumentami niebędącymi opcjami . Funkcja jest wywoływana niezależnie od tego, czy pozostały jakiekolwiek argumenty. Jeśli wartość NULL zostanie przekazana, ParseArgs() zgłosi błąd (o ile będą dostępne argumenty inne niż opcja).
[in] ignoreUnknown
Jeśli ma wartość Prawda, dyskretnie zignoruj wszystkie nierozpoznane opcje.
Zwroty
true, jeśli udało się przeanalizować wszystkie opcje i argumenty inne niż opcja; false, jeśli opcja nie została rozpoznana lub któraś z funkcji obsługi zawiodła (czyli zwróciła wartość „fałsz”).

Definicje opcji są przekazywane do ParseArgs() w postaci tablicy struktur OptionSet (optSets). Każdy element OptionSet zawiera tablicę definicji opcji i funkcję obsługi. ParseArgs() przetwarza argumenty opcji w podanej kolejności, wywołując odpowiednią funkcję obsługi dla każdej rozpoznanej opcji. Po przeanalizowaniu wszystkich opcji do przetworzenia pozostałych argumentów wywoływana jest jednorazowa funkcja obsługi innej niż opcja (nonOptArgHandler).

ZESTAW OPCJI

Element OptionSet zawiera zestaw definicji opcji wraz ze wskaźnikiem do funkcji obsługi, która zostanie wywołana po napotkaniu jednej z powiązanych opcji. Zestawy opcji zawierają również tekst pomocy opisujący składnię i przeznaczenie każdej opcji (patrz OPCJA POMOCY poniżej). Zestawy opcji umożliwiają tworzenie kolekcji powiązanych opcji do wielokrotnego użytku. Ułatwia to utrzymanie wielu aplikacji, które akceptują podobne opcje (np. aplikacje testowe).

Istnieją 2 wzorce definiowania OptionSetsone.Mogą to być albo zainicjowanie wystąpienia samej struktury OptionSet, np. jako statyczny element globalny lub podklasę OptionSetBase i udostępnić konstruktor. W tym drugim przypadku użyto czysto wirtualnej funkcji HandleOption() do przekazania obsługi opcji do podklasy.

Listy wartości OptionSet są przekazywane do funkcji ParseArgs() w postaci tablicy wskaźników z zakończeniem NULL. 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))
    {
        ...
    }
}

DEFINICJE OPCJI

Opcje definiuje się za pomocą struktury OptionDef. Definicje opcji są uporządkowane w postaci tablicy elementów OptionDef, z których każdy element zawiera: nazwę opcji, identyfikator będący liczbą całkowitą służącą do jej identyfikacji oraz informację, czy opcja oczekuje na argument. Koniec tablicy „option” jest sygnalizowany przez pole Nazwa NULL. 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 }
};

IDENTYFIKATORY OPCJI

Identyfikatory opcji identyfikują opcje w kodzie, które je obsługuje (funkcja OptionHandler). Identyfikatory opcji odnoszą się do elementów OptionSet, w których występują, i dlatego mogą być wielokrotnie wykorzystywane w różnych elementach OptionSet (zobacz jednak OPCJE SHORTS poniżej). Zazwyczaj stosuje się, aby identyfikatory opcji numerowania zaczynały się od wartości 1000, ale każda liczba > 128. Opcje aliasu można utworzyć, używając tego samego identyfikatora opcji z różnymi nazwami opcji.

OPCJE SHORT

W przeciwieństwie do metody getopt_long(3) funkcja ParseArgs() nie pobiera osobnego ciągu znaków określającego listę krótkich znaków opcji. W przypadku każdej opcji, której identyfikator mieści się w zakresie graficznych znaków ASCII, można użyć tego znaku jako krótkiej opcji.

Parametr ParseArgs() wymaga, aby krótkie znaki opcji były niepowtarzalne wśród wszystkich obiektów OptionSet. Z tego powodu odradzamy korzystanie z opcji krótkich w przypadku obiektów OptionSets, które są udostępniane między programami, ze względu na znaczne ryzyko kolizji. Krótkie znaki opcji można stosować ponownie w pojedynczym elemencie OptionSet, aby umożliwić tworzenie długich nazw opcji będących aliasami.

POMOC W OPCJI

Każdy element OptionSet zawiera ciąg znaków OptionHelp opisujący przeznaczenie i składnię powiązanych opcji. Funkcja PrintOptionHelp() używa tych ciągów znaków do generowania informacji o wykorzystaniu opcji.

Zgodnie z konwencją ciągi pomocy dotyczące opcji składają się z przykładu składni, po którym następuje opis opcji. Jeśli opcja ma krótką wersję lub nazwę aliasu, jest ona umieszczona przed długą nazwą podstawową. Dla zachowania spójności linie składni zostaną dodane do 2 spacji, a wiersze opisu – po 7 spacji. Pod każdym opisem opcji, w tym ostatnim, znajduje się jeden pusty wiersz.

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";

GRUPY POMOCY W PRZYPADKU OPCJI

Zestawy OptionSet zawierają ciąg znaków HelpGroupName, który służy do grupowania opcji w danych wyjściowych pomocy. Funkcja PrintOptionHelp() wykorzystuje HelpGroupName jako tytuł sekcji w wygenerowanych danych wyjściowych dotyczących wykorzystania. Jeśli wiele zestawów OptionSet ma taką samą nazwę grupy pomocy, funkcja PrintOptionHelp() wyświetli pomoc dotyczącą opcji dla różnych zestawów opcji razem pod wspólnym tytułem sekcji.

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
)

Przeanalizuj zestaw argumentów z nazwanej zmiennej środowiskowej.

ParseArgsFromEnvVar() odczytuje nazwaną zmienną środowiskową i przekazuje wartość do ParseArgsFromString() do analizy. Jeśli zmienna środowiskowa nie jest ustawiona, funkcja nie wykonuje żadnego działania.

Szczegóły
Parametry
[in] progName
Nazwa programu lub kontekst, w którym analizowane są argumenty. Ten ciąg znaków będzie używany jako prefiks komunikatów o błędach i ostrzeżeniach.
[in] varName
Nazwa zmiennej środowiskowej.
[in] optSets
Lista wskaźników do struktur OptionSet, które definiują opcje prawne. Podana lista musi być zakończona wartością NULL.
[in] nonOptArgHandler
Wskaźnik do funkcji, która będzie wywoływana po zakończeniu analizy opcji wraz ze wszystkimi pozostałymi argumentami niebędącymi opcjami . Funkcja jest wywoływana niezależnie od tego, czy pozostały jakiekolwiek argumenty. Jeśli wartość NULL zostanie przekazana, ParseArgs() zgłosi błąd (o ile będą dostępne argumenty inne niż opcja).
[in] ignoreUnknown
Jeśli ma wartość Prawda, dyskretnie zignoruj wszystkie nierozpoznane opcje.
Zwroty
true, jeśli wszystkie opcje i argumenty inne niż opcja zostały przeanalizowane pomyślnie lub jeśli określona zmienna środowiskowa nie została ustawiona; false, jeśli opcja nie została rozpoznana, jeśli jedna z funkcji obsługi nie zadziałała (tj. zakończyła się wartością „fałsz”) lub wystąpił błąd wewnętrzny.

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
)

Analiza zbioru argumentów danego ciągu znaków.

ParseArgsFromString() dzieli dany ciąg (argStr) na zbiór argumentów i analizuje argumenty za pomocą funkcji ParseArgs().

Szczegóły
Parametry
[in] progName
Nazwa programu lub kontekst, w którym analizowane są argumenty. Ten ciąg znaków będzie używany jako prefiks komunikatów o błędach i ostrzeżeniach.
[in] argStr
Ciąg tekstowy zawierający opcje i argumenty do analizy.
[in] optSets
Lista wskaźników do struktur OptionSet, które definiują opcje prawne. Podana lista musi być zakończona wartością NULL.
[in] nonOptArgHandler
Wskaźnik do funkcji, która będzie wywoływana po zakończeniu analizy opcji wraz ze wszystkimi pozostałymi argumentami niebędącymi opcjami . Funkcja jest wywoływana niezależnie od tego, czy pozostały jakiekolwiek argumenty. Jeśli wartość NULL zostanie przekazana, ParseArgs() zgłosi błąd (o ile będą dostępne argumenty inne niż opcja).
[in] ignoreUnknown
Jeśli ma wartość Prawda, dyskretnie zignoruj wszystkie nierozpoznane opcje.
Zwroty
true, jeśli udało się przeanalizować wszystkie opcje i argumenty inne niż opcja; false, jeśli opcja nie została rozpoznana, jeśli jedna z funkcji obsługi nie zadziałała (tj. zakończyła się wartością „fałsz”) lub wystąpił błąd wewnętrzny.

Składnia ciągów wejściowych jest podobna do składni poleceń powłoki systemu uniksowego, ale ma uproszczony schemat cytowania. Oto najważniejsze kwestie:

  • Argumenty są rozdzielone odstępami, chyba że spacja jest cudzysłowem lub ze zmianą znaczenia.
  • Ukośnik lewy zmienia znaczenie kolejnego znaku, co powoduje, że jest on traktowany jako zwykły znak. a sam ukośnik lewy jest usuwany.
  • Pojedyncze lub podwójne cudzysłowy zaczynają się/koniec cudzysłowów ujętych w cudzysłów. Jedynymi znakami specjalnymi w podłańcuchu są ukośnik lewy, który zmienia znaczenie kolejnego znaku, i odpowiadający cudzysłów końcowy. Znaki w cudzysłowie na początku/końcu są ucinane.

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
)

Przeanalizuj ciąg znaków jako wartość logiczną.

Ta funkcja akceptuje następujące wartości wejściowe (wielkość liter nie jest rozróżniana): „true”, „yes”, „t”, „y”, „1”, „false”, „no”, „f”, „n”, „0”.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z wartością NULL, który reprezentuje wartość do przeanalizowania.
[out] output
Odwołanie do pamięci masowej dla wartości logicznej, w której zostanie zapisana po analizie wartość.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

ParseFabricId

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

Przeanalizuj identyfikator tkaniny Weave w formie tekstowej.

Funkcja ParseFabricId() akceptuje 64-bitowy identyfikator tkaniny podany w formacie szesnastkowym z początkowym „0x” lub bez niego.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C zakończonego NULL, zawierającego identyfikator tkaniny do przeanalizowania.
[out] output
Odwołanie do wartości uint64_t lvalue, w której po przeanalizowaniu zostanie zapisana wartość.
[in] allowReserved
Jeśli ma wartość prawda, zezwól na analizę identyfikatorów tkanin w zarezerwowanym zakresie.
Zwroty
true (prawda), jeśli wartość została pomyślnie przeanalizowana; false, jeśli nie.

ParseHexString

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

Przeanalizuj ciąg bajtów podany w postaci szesnastkowej.

Funkcja ParseHexString() oczekuje, że dane wejściowe mają postać par cyfr szesnastkowych (wielkie lub małe litery). Pary szesnastkowe mogą być opcjonalnie rozdzielone takimi znakami: dwukropek, średnik, przecinek, kropka lub myślnik. Oprócz tego odstępy w całym ciągu wejściowym są ignorowane.

Szczegóły
Parametry
[in] hexStr
Wskaźnik do ciągu znaków do przeanalizowania.
[in] strLen
Liczba znaków w ciągu hexStr do przeanalizowania.
[in] outBuf
Wskaźnik do bufora, w którym będą przechowywane analizowane bajty.
[in] outBufSize
Rozmiar bufora wskazanego przez outBuf.
[out] outDataLen
Odwołanie do liczby całkowitej, które otrzyma łączną liczbę przeanalizowanych bajtów. Jeśli rozmiar outBuf nie jest wystarczająco duży, aby obsłużyć podaną liczbę bajtów, outDataLen zostanie ustawiony na UINT32_MAX.
Zwroty
true (prawda), jeśli wartość została pomyślnie przeanalizowana; Wartość false, jeśli dane wejściowe są uszkodzone lub jeśli wartość outBuf jest zbyt mała.

ParseIPAddress

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

Analizuj adres IP w postaci tekstowej.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z wartością NULL, który zawiera adres do przeanalizowania.
[out] output
Odwołanie do obiektu IPAddress, w którym zostanie zachowana przeanalizowana wartość.
Zwroty
true (prawda), jeśli wartość została pomyślnie przeanalizowana; false, jeśli nie.

ParseInt

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

Przeprowadź analizę i spróbuj przekonwertować ciąg na 64-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z zakończeniem NULL, reprezentującego liczbę całkowitą do przeanalizowania.
[out] output
Odwołanie do pamięci masowej 64-bitowej nieoznaczonej liczby całkowitej, w której zostanie zapisana po przeanalizowaniu wartości.
[in] base
Podstawa, zgodnie z którą ciąg powinien zostać zinterpretowany i przeanalizowany. Jeśli ma wartość 0 lub 16, ciąg może być ciągiem szesnastkowym z prefiksem „0x”. W innym przypadku 0 jest domniemane jako 10, chyba że występuje na początku 0, gdzie 8 to domniemana.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

ParseInt

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

Przeprowadź analizę i spróbuj przekonwertować ciąg na 32-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z zakończeniem NULL, reprezentującego liczbę całkowitą do przeanalizowania.
[out] output
Odwołanie do pamięci 32-bitowej nieoznaczonej liczby całkowitej, w której zostanie zapisana po przeanalizowaniu wartości.
[in] base
Podstawa, zgodnie z którą ciąg powinien zostać zinterpretowany i przeanalizowany. Jeśli ma wartość 0 lub 16, ciąg może być ciągiem szesnastkowym z prefiksem „0x”. W innym przypadku 0 jest domniemane jako 10, chyba że występuje na początku 0, gdzie 8 to domniemana.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

ParseInt

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

Przeprowadź analizę i spróbuj przekonwertować ciąg na 32-bitową liczbę całkowitą ze znakiem, stosując odpowiednią interpretację na podstawie parametru podstawowego.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z zakończeniem NULL, reprezentującego liczbę całkowitą do przeanalizowania.
[out] output
Odwołanie do pamięci dla 32-bitowej liczby całkowitej ze znakiem, w której zostanie zachowana po przeanalizowaniu wartości.
[in] base
Podstawa, zgodnie z którą ciąg powinien zostać zinterpretowany i przeanalizowany. Jeśli ma wartość 0 lub 16, ciąg może być ciągiem szesnastkowym z prefiksem „0x”. W innym przypadku 0 jest domniemane jako 10, chyba że występuje na początku 0, gdzie 8 to domniemana.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

ParseInt

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

Przeanalizuj i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętną na 64-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z zakończeniem NULL, reprezentującego liczbę całkowitą do przeanalizowania.
[out] output
Odwołanie do pamięci masowej 64-bitowej nieoznaczonej liczby całkowitej, w której zostanie zapisana po przeanalizowaniu wartości.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

ParseInt

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

Przeanalizuj i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętną na 32-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z zakończeniem NULL, reprezentującego liczbę całkowitą do przeanalizowania.
[out] output
Odwołanie do pamięci 32-bitowej nieoznaczonej liczby całkowitej, w której zostanie zapisana po przeanalizowaniu wartości.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

ParseInt

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

Przeprowadź analizę i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętna na 32-bitową liczbę całkowitą ze znakiem, stosując odpowiednią interpretację na podstawie parametru podstawowego.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z zakończeniem NULL, reprezentującego liczbę całkowitą do przeanalizowania.
[out] output
Odwołanie do pamięci dla 32-bitowej liczby całkowitej ze znakiem, w której zostanie zachowana po przeanalizowaniu wartości.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

ParseInt

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

Przeprowadź analizę i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętna na 16-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z zakończeniem NULL, reprezentującego liczbę całkowitą do przeanalizowania.
[out] output
Odwołanie do pamięci na 16-bitową nieoznaczoną liczbę całkowitą, w której zostanie zachowana po przeanalizowaniu wartości.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

ParseInt

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

Przeprowadź analizę i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętna na 16-bitową liczbę całkowitą ze znakiem, stosując odpowiednią interpretację na podstawie parametru podstawowego.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z zakończeniem NULL, reprezentującego liczbę całkowitą do przeanalizowania.
[out] output
Odwołanie do pamięci 16-bitowej liczby całkowitej ze znakiem, w której zostanie zachowana po przeanalizowaniu wartości.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

ParseInt

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

Przeprowadź analizę i spróbuj przekonwertować ciąg interpretowany jako wartość dziesiętna na 8-bitową liczbę całkowitą bez znaku, stosując odpowiednią interpretację na podstawie parametru podstawowego.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z zakończeniem NULL, reprezentującego liczbę całkowitą do przeanalizowania.
[out] output
Odwołanie do pamięci masowej 8-bitowej nieoznaczonej liczby całkowitej, w której zostanie zapisana po przeanalizowaniu wartości.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

ParseNodeId

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

Przeanalizuj identyfikator węzła Weave w formie tekstowej.

Funkcja ParseNodeId() akceptuje 64-bitowy identyfikator węzła podany w formacie szesnastkowym (z początkowym znakiem „0x” lub bez niego) albo słowa „any” lub „wszystko” które są interpretowane jako identyfikator dowolnego węzła (0xFFFFFFFFFFFFFFFF).

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C zakończonego wartością NULL, który zawiera identyfikator węzła do przeanalizowania.
[out] output
Odwołanie do wartości uint64_t lvalue, w której po przeanalizowaniu zostanie zapisana wartość.
Zwroty
true (prawda), jeśli wartość została pomyślnie przeanalizowana; false, jeśli nie.

ParseSubnetId

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

Przeprowadź analizę i spróbuj przekonwertować ciąg na 16-bitowy niepodpisany identyfikator podsieci, interpretując ciąg jako szesnastkowy.

Szczegóły
Parametry
[in] str
Wskaźnik do ciągu znaków C z wartością NULL, który reprezentuje identyfikator podsieci do przeanalizowania w formacie szesnastkowym.
[in,out] subnetId
Odwołanie do pamięci na 16-bitową niepodpisaną liczbę całkowitą, w której będzie zapisywana wartość przeanalizowanego identyfikatora podsieci.
Zwroty
prawda o sukcesie; w przeciwnym razie ma wartość Fałsz w przypadku niepowodzenia.

PrintOptionHelp

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

Wydrukuj tekst pomocy dla określonej listy opcji do strumienia.

Szczegóły
Parametry
[in] optSets
Lista wskaźników do struktur OptionSet zawierających tekst pomocy do wydrukowania.
[in] s
Strumień FILE, w którym ma zostać wydrukowany tekst pomocy.

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
)