nl::ArgParser

摘要

列舉

OptionArgumentType 列舉
定義指令列選項的引數需求。

Typedefs

NonOptionArgHandlerFunct)(const char *progName, int argc, char *argv[]) typedef
bool(*
可呼叫的函式可處理任何其他的非選項指令列引數。
OptionHandlerFunct)(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg) typedef
bool(*
可呼叫的函式,用於處理一組指令列選項。

Variables

PrintArgError = DefaultPrintArgError)(const char *msg,...)
void(*
用於輸出引數剖析期間發生的錯誤的函式指標。
gActiveOptionSets = NULL
傳送至目前有效 ParseArgs() 呼叫的 OptionSet 清單。

函式

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
列印與引數剖析相關聯的錯誤訊息。
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
剖析一組指令列樣式的引數,呼叫處理函式來處理每個選項和非選項引數。
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
從具名環境變數剖析一組引數。
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
從指定字串剖析一組引數。
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
將字串剖析為布林值。
ParseFabricId(const char *str, uint64_t & fabricId, bool allowReserved)
bool
以文字格式剖析 Weave 布料 ID。
ParseHexString(const char *hexStr, uint32_t strLen, uint8_t *outBuf, uint32_t outBufSize, uint32_t & outDataLen)
bool
剖析以十六進位格式提供的位元組字串。
ParseIPAddress(const char *str, IPAddress & output)
bool
以文字格式剖析 IP 位址。
ParseInt(const char *str, uint64_t & output, int base)
bool
剖析並嘗試將字串轉換為 64 位元無正負號整數,根據基本參數套用適當的解釋。
ParseInt(const char *str, uint32_t & output, int base)
bool
剖析並嘗試將字串轉換為 32 位元無正負號整數,根據基本參數套用適當的解釋。
ParseInt(const char *str, int32_t & output, int base)
bool
剖析並嘗試將字串轉換為 32 位元帶正負號整數,根據底數參數套用適當的解釋。
ParseInt(const char *str, uint64_t & output)
bool
剖析並嘗試將解譯為十進位值的字串轉換為 64 位元無正負號整數,根據基本參數套用適當的解釋。
ParseInt(const char *str, uint32_t & output)
bool
剖析並嘗試將解譯為十進位值的字串轉換為 32 位元無正負號整數,根據基本參數套用適當的解釋。
ParseInt(const char *str, int32_t & output)
bool
剖析並嘗試將解譯為十進位值的字串轉換為 32 位元帶正負號整數,根據基本參數套用適當的解釋。
ParseInt(const char *str, uint16_t & output)
bool
剖析並嘗試將解譯為十進位值的字串轉換為 16 位元無正負號整數,根據基本參數套用適當的解釋。
ParseInt(const char *str, int16_t & output)
bool
剖析並嘗試將解譯為十進位值的字串轉換為 16 位元帶正負號整數,根據基本參數套用適當的解釋。
ParseInt(const char *str, uint8_t & output)
bool
剖析並嘗試將解譯為十進位值的字串轉換為 8 位元無正負號整數,並根據基本參數套用適當的解釋。
ParseNodeId(const char *str, uint64_t & nodeId)
bool
以文字格式剖析 Weave 節點 ID。
ParseSubnetId(const char *str, uint16_t & subnetId)
bool
剖析並嘗試將字串轉換為未簽署的 16 位元子網路 ID,並將字串解讀為十六進位。
PrintOptionHelp(OptionSet *optSets[], FILE *s)
void
列印指定選項清單的說明文字至串流。
PutStringWithBlankLine(FILE *s, const char *str)
void
PutStringWithNewLine(FILE *s, const char *str)
void
SplitArgs(char *argStr, char **& argList, char *initialArg)
int32_t

類別

nl::ArgParser::HelpOptions

處理資訊選項 (說明、版本) 的常見 OptionSet

nl::ArgParser::OptionSetBase

一個 OptionSet,其中處理常式是虛擬函式。

結構

nl::ArgParser::OptionDef

定義指令列選項。

nl::ArgParser::OptionSet

定義一組邏輯相關且可重複使用的指令列選項。

列舉

OptionArgumentType

 OptionArgumentType

定義指令列選項的引數需求。

Typedefs

NonOptionArgHandlerFunct

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

可呼叫的函式可處理任何其他的非選項指令列引數。

OptionHandlerFunct

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

可呼叫的函式,用於處理一組指令列選項。

Variables

PrintArgError

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

用於輸出引數剖析期間發生的錯誤的函式指標。

應用程式應呼叫 PrintArgError(),以在選項和非選項引數處理函式中回報錯誤,而不是直接將錯誤傳送至 stdout/stderr。

預設為 DefaultPrintArgError() 函式的指標。

gActiveOptionSets

OptionSet ** gActiveOptionSets = NULL

傳送至目前有效 ParseArgs() 呼叫的 OptionSet 清單。

如果未呼叫 ParseArgs(),這個值會是空值。

函式

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

列印與引數剖析相關聯的錯誤訊息。

這個預設函式可用於輸出因剖析引數而產生的錯誤訊息。

詳細說明
參數
[in] msg
要列印的訊息。

應用程式應透過 PrintArgError 函式指標呼叫,而不是直接呼叫此函式。

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
)

剖析一組指令列樣式的引數,呼叫處理函式來處理每個選項和非選項引數。

ParseArgs() 會使用引數清單 (argv),然後根據一組提供的選項定義進行剖析。這個函式支援長 (opt) 和簡短 (-o) 選項,並實作與 GNU getopt_long(3) 函式相同的選項語法。

詳細說明
參數
[in] progName
要剖析引數的程式或結構定義的名稱。這個字串會用來在錯誤訊息和警告前置字元。
[in] argc
要剖析的引數數量,加上 1 個。
[in] argv
要剖析的引數字串陣列。陣列長度必須大於為 argc 指定的值 1,而 argv[argc] 必須設為 NULL。引數剖析作業會從 second 陣列元素 (argv[1]) 開始;系統會忽略元素 0。
[in] optSets
OptionSet 結構的指標清單,用於定義法律選項。提供的清單必須以 NULL 結尾。
[in] nonOptArgHandler
任何剩餘的非選項引數,系統會在完成選項剖析後呼叫的函式指標。無論是否保留任何引數,系統都會呼叫函式。如果傳遞 NULL,ParseArgs() 將會報告任何非選項引數時回報錯誤。
[in] ignoreUnknown
如果設為 true,系統會直接忽略所有無法辨識的選項。
傳回
如果所有選項和非選項引數皆剖析成功,則為 true;如果選項無法辨識或其中一個處理常式函式失敗 (也就是傳回 false),則為 false

選項定義會以 OptionSet 結構 (optSets) 的陣列形式傳遞到 ParseArgs()。每個 OptionSet 都包含一個選項定義陣列和處理常式函式。ParseArgs() 會按照指定順序處理選項引數,並為每個辨識的選項呼叫對應的處理常式函式。剖析完所有選項後,系統會呼叫一個獨立的非選項處理常式函式 (nonOptArgHandler),以便處理其餘的引數。

選項集

OptionSet 包含一組選項定義,以及一個處理常式函式指標,系統會在遇到其中一個相關選項時呼叫該處理常式。此外,選項集也包含說明文字,說明每個選項的語法和用途 (請參閱下方的「選項說明」)。而選項集旨在允許建立可重複使用的相關選項集合。如此一來,您就不必費時維護多個可接受類似選項的應用程式 (例如測試應用程式)。

定義 OptionSetsone 有兩種模式,都可以初始化 OptionSet 結構體的例項,例如做為靜態全域子類別,或是以子類別 OptionSetBase 進行子類別,並提供建構函式。後者會使用純虛擬 HandleOption() 函式,將選項處理委派給子類別。

OptionSet 清單會以 NULL 結尾的指標陣列傳遞至 ParseArgs() 函式。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))
    {
        ...
    }
}

選項定義

選項是透過 OptionDef 結構定義。選項定義會整理成 OptionDef 元素的陣列,其中每個元素都包含:選項名稱、用於識別選項的整數 ID,以及選項是否預期是否允許/允許引數。選項陣列的結尾會透過 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 }
};

選項 ID

選項 ID 會找出處理選項的程式碼選項 (OptionHandler 函式)。選項 ID 相對於其出現的 OptionSet,因此可重複用於不同的 OptionSet (但請看下方的 SHORT OPTIONS)。常見的慣例是使用 1000 的編號選項 ID 開始編號,但可以使用任何大於 128 的數字。您可以使用相同的選項 ID 搭配不同的選項名稱來建立別名選項。

簡短選項

與 getopt_long(3) 不同的是,ParseArgs() 不會使用另一個字串來指定短選項字元清單。相反地,只要選項的 ID 值落在圖形 ASCII 字元範圍內,該字元就會成為簡短選項。

ParseArgs() 要求所有 OptionSet 中的簡短選項字元不得重複。因此,我們不建議對跨程式共用的 OptionSets 使用,因為這樣極有可能碰到衝突。短選項字元可在單一 OptionSet 中重複使用,以便建立較長的別名選項名稱。

選項說明

每個 OptionSet 都包含一個 OptionHelp 字串,用於說明相關聯選項的用途和語法。PrintOptionHelp() 函式會使用這些字串來產生選項使用資訊。

依照慣例,選項說明字串是由選項的文字說明所組成的語法範例。如果選項有簡短版本或別名,系統會在主要全名之前顯示。為保持一致性,語法行會以 2 個空格縮排,說明行則以 7 個空格縮排。每個選項說明後面會有一個空白行,包括最後一行。

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

選項說明論壇

OptionSet 包含 HelpGroupName 字串,用於在說明輸出中將選項分組。PrintOptionHelp() 函式在產生的用量輸出結果中,會使用 HelpGroupName 做為區段標題。如果多個 OptionSet 組具有相同的 HelpGroupName,PrintOptionHelp() 會根據共同的章節標題,將不同 OptionSet 的選項列印出來。

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
)

從具名環境變數剖析一組引數。

ParseArgsFromEnvVar() 會讀取已命名的環境變數,並將值傳遞至 ParseArgsFromString() 進行剖析。如未設定環境變數,函式就不會有任何作用。

詳細說明
參數
[in] progName
要剖析引數的程式或結構定義的名稱。這個字串會用來在錯誤訊息和警告前置字元。
[in] varName
環境變數的名稱。
[in] optSets
OptionSet 結構的指標清單,用於定義法律選項。提供的清單必須以 NULL 結尾。
[in] nonOptArgHandler
任何剩餘的非選項引數,系統會在完成選項剖析後呼叫的函式指標。無論是否保留任何引數,系統都會呼叫函式。如果傳遞 NULL,ParseArgs() 將會報告任何非選項引數時回報錯誤。
[in] ignoreUnknown
如果設為 true,系統會直接忽略所有無法辨識的選項。
傳回
如果所有選項和非選項引數皆成功剖析,或是未設定指定環境變數,則為 true;如果是無法辨識的選項、其中一個處理常式函式失敗 (傳回 false),或發生內部錯誤,則為 false

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
)

從指定字串剖析一組引數。

ParseArgsFromString() 將指定字串 (argStr) 分割為一組引數,並使用 ParseArgs() 函式剖析引數。

詳細說明
參數
[in] progName
要剖析引數的程式或結構定義的名稱。這個字串會用來在錯誤訊息和警告前置字元。
[in] argStr
字串,包含要剖析的選項和引數。
[in] optSets
OptionSet 結構的指標清單,用於定義法律選項。提供的清單必須以 NULL 結尾。
[in] nonOptArgHandler
任何剩餘的非選項引數,系統會在完成選項剖析後呼叫的函式指標。無論是否保留任何引數,系統都會呼叫函式。如果傳遞 NULL,ParseArgs() 將會報告任何非選項引數時回報錯誤。
[in] ignoreUnknown
如果設為 true,系統會直接忽略所有無法辨識的選項。
傳回
如果成功剖析所有選項和非選項引數,則為 true;如果無法辨識選項、其中一個處理常式函式失敗 (亦即傳回 false),或發生內部錯誤,則為 false

輸入字串的語法與 unix 殼層指令語法類似,但使用的引用架構較為簡化。詳細說明:

  • 引數會以空白字元分隔,除非空白字元以引號或逸出。
  • 反斜線會逸出下列字元,導致系統將這個字元視為一般字元。反斜線本身則去除。
  • 單引號或雙引號開始/結束加上引號的子字串。在子字串中,只有特殊字元是反斜線,這會逸出下一個字元和對應的結尾引號。系統會移除開頭/結尾的引號字元。

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
)

將字串剖析為布林值。

這個函式接受下列輸入值 (不區分大小寫):「true」、「yes」、「t」、「y」、「1」、「false」、「no」、「f」、「n」、「0」。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,用來表示要剖析的值。
[out] output
布林值的參照,用於在成功時儲存剖析的值。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

ParseFabricId

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

以文字格式剖析 Weave 布料 ID。

ParseFabricId() 函式接受以十六進位格式提供的 64 位元架構 ID,開頭或不含「0x」。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,其中包含要剖析的布料 ID。
[out] output
uint64_t lvalue 的參照,此值會在成功時儲存剖析值。
[in] allowReserved
如果為 true,請允許剖析保留範圍內的布料 ID,
傳回
如果成功剖析值,則為 true;如果不是,則為 false。

ParseHexString

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

剖析以十六進位格式提供的位元組字串。

ParseHexString() 會預期輸入內容採用十六進位數字組合 (大寫或小寫)。十六進位值組可以視需要用下列任一字元分隔:冒號、分號、逗號、句號或破折號。此外,系統會忽略輸入字串中任一處的空白字元。

詳細說明
參數
[in] hexStr
指向要剖析字串的指標。
[in] strLen
要剖析的十六進位值字元數。
[in] outBuf
指向要儲存剖析位元組的緩衝區指標。
[in] outBufSize
outBuf 指向的緩衝區大小。
[out] outDataLen
整數參照,用於接收剖析的位元組總數。如果 OutBuf 的大小不足以容納指定位元組數,outDataLen 會設為 UINT32_MAX。
傳回
如果系統成功剖析該值,則為 true;如果輸入資料格式錯誤或 outBuf 太小,則為 false。

ParseIPAddress

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

以文字格式剖析 IP 位址。

詳細說明
參數
[in] str
指向 NULL 結尾的 C 字串的指標,其中包含要剖析的地址。
[out] output
IPAddress 物件的參照,此物件會在成功時儲存剖析的值。
傳回
如果成功剖析值,則為 true;如果不是,則為 false。

ParseInt

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

剖析並嘗試將字串轉換為 64 位元無正負號整數,根據基本參數套用適當的解釋。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,用來代表要剖析的整數。
[out] output
64 位元無正負號整數的儲存空間參考資料,剖析值會在成功時儲存。
[in] base
應解讀及剖析字串的基礎。如果字串為 0 或 16,字串可能會是十六進位,並加上「0x」。否則,系統會將 0 表示為 10,除非開頭的 0 是隱含的 8。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

ParseInt

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

剖析並嘗試將字串轉換為 32 位元無正負號整數,根據基本參數套用適當的解釋。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,用來代表要剖析的整數。
[out] output
32 位元無正負號整數的儲存空間參考資料,剖析值會在成功時儲存。
[in] base
應解讀及剖析字串的基礎。如果字串為 0 或 16,字串可能會是十六進位,並加上「0x」。否則,系統會將 0 表示為 10,除非開頭的 0 是隱含的 8。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

ParseInt

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

剖析並嘗試將字串轉換為 32 位元帶正負號整數,根據底數參數套用適當的解釋。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,用來代表要剖析的整數。
[out] output
32 位元帶正負號整數的儲存空間參考資料,剖析值會在成功時儲存。
[in] base
應解讀及剖析字串的基礎。如果字串為 0 或 16,字串可能會是十六進位,並加上「0x」。否則,系統會將 0 表示為 10,除非開頭的 0 是隱含的 8。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

ParseInt

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

剖析並嘗試將解譯為十進位值的字串轉換為 64 位元無正負號整數,根據基本參數套用適當的解釋。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,用來代表要剖析的整數。
[out] output
64 位元無正負號整數的儲存空間參考資料,剖析值會在成功時儲存。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

ParseInt

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

剖析並嘗試將解譯為十進位值的字串轉換為 32 位元無正負號整數,根據基本參數套用適當的解釋。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,用來代表要剖析的整數。
[out] output
32 位元無正負號整數的儲存空間參考資料,剖析值會在成功時儲存。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

ParseInt

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

剖析並嘗試將解譯為十進位值的字串轉換為 32 位元帶正負號整數,根據基本參數套用適當的解釋。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,用來代表要剖析的整數。
[out] output
32 位元帶正負號整數的儲存空間參考資料,剖析值會在成功時儲存。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

ParseInt

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

剖析並嘗試將解譯為十進位值的字串轉換為 16 位元無正負號整數,根據基本參數套用適當的解釋。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,用來代表要剖析的整數。
[out] output
16 位元無正負號整數的儲存空間參考資料,剖析值會在成功時儲存。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

ParseInt

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

剖析並嘗試將解譯為十進位值的字串轉換為 16 位元帶正負號整數,根據基本參數套用適當的解釋。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,用來代表要剖析的整數。
[out] output
16 位元帶正負號整數的儲存空間參考資料,剖析值會在成功時儲存。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

ParseInt

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

剖析並嘗試將解譯為十進位值的字串轉換為 8 位元無正負號整數,並根據基本參數套用適當的解釋。

詳細說明
參數
[in] str
指向以 NULL 結束的 C 字串的指標,用來代表要剖析的整數。
[out] output
8 位元無正負號整數儲存體的參考資料,剖析值會在成功時儲存。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

ParseNodeId

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

以文字格式剖析 Weave 節點 ID。

ParseNodeId() 函式接受以十六進位格式提供的 64 位元節點 ID (無論是否開頭的「0x」),或是「any」或「all」字詞,系統會將其解讀為「任何節點 ID」(0xFFFFFFFFFFFFFF)。

詳細說明
參數
[in] str
指向 NULL 結尾的 C 字串的指標,其中包含要剖析的節點 ID。
[out] output
uint64_t lvalue 的參照,此值會在成功時儲存剖析值。
傳回
如果成功剖析值,則為 true;如果不是,則為 false。

ParseSubnetId

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

剖析並嘗試將字串轉換為未簽署的 16 位元子網路 ID,並將字串解讀為十六進位。

詳細說明
參數
[in] str
指標指向用來剖析子網路 ID 的 NULL 結尾 C 字串,並以十六進位格式剖析。
[in,out] subnetId
儲存 16 位元無正負號整數的儲存空間參考資料,已剖析的子網路 ID 值會在成功時儲存。
傳回
成功時會傳回 true;否則,失敗時會傳回 false。

PrintOptionHelp

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

列印指定選項清單的說明文字至串流。

詳細說明
參數
[in] optSets
OptionSet 結構的指標清單,其中包含要列印的說明文字。
[in] s
應列印說明文字的 FILE 串流。

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
)