nl::ArgParser

摘要

枚举

OptionArgumentType 枚举
定义命令行选项的参数要求。

类型定义符

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(*
为处理一组命令行选项而可调用的函数。

变量

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

定义命令行选项的参数要求。

类型定义符

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)

为处理一组命令行选项而可调用的函数。

变量

PrintArgError

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

指向函数的指针,用于输出在参数解析期间发生的错误。

应用应调用 PrintArgError() 来报告其选项和非选项参数处理函数中的错误,而不是直接输出到 stdout/stderr。

默认为指向 DefaultPrintArgError() 函数的指针。

gActiveOptionSets

OptionSet ** gActiveOptionSets = NULL

传递到当前活跃 ParseArgs() 调用的 OptionSet 列表。

如果没有正在进行对 ParseArgs() 的调用,此值将为 NULL。

函数

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 Name 字段发出信号。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 中重复使用(但请参阅下面的简短选项)。常见惯例是从 1000 开始编号选项 ID,但可以使用任何大于 128 的数字。可通过使用相同选项 ID 和不同选项名称创建别名选项。

短视频选项

与 getopt_long(3) 不同,ParseArgs() 不采用单独的字符串来指定短选项字符列表。相反,ID 值在 ASCII 图形字符范围内的任何选项都允许将该字符用作简短选项。

ParseArgs() 要求短选项字符在所有 OptionSet 中必须是唯一的。因此,不建议对在程序之间共享的任何 OptionSet 使用短选项,因为这样很有可能发生冲突。可以在单个 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 shell 命令语法类似,但采用了简化的引号方案。具体而言:

  • 参数由空格分隔,除非空格使用引号或转义。
  • 反斜杠可转义后续字符,使其被视为普通字符。反斜杠本身会被删除。
  • 英文单引号或英文双引号以英文单引号/英文双引号括起/以英文单引号括起的子字符串。在子字符串中,唯一的特殊字符是反斜杠,用于转义下一个字符和相应的结束引号。起始/结束引号字符会被删除。

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”或不带前导“0x”。

具体说明
参数
[in] str
指向以 NULL 终止的 C 字符串的指针,该字符串包含要解析的结构 ID。
[out] output
对 uint64_t 值的引用,成功时将在其中存储解析后的值。
[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”,这些单词被解读为“Any 节点 ID”(0xFFFFFFFFFFFFFFFFFF) 的意思。

具体说明
参数
[in] str
指向以 NULL 结尾的 C 字符串的指针,该字符串包含要解析的节点 ID。
[out] output
对 uint64_t 值的引用,成功时将在其中存储解析后的值。
返回值
如果值成功解析,则为 true;否则为 false。

ParseSubnetId

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

解析并尝试将字符串转换为 16 位无符号子网 ID,将该字符串解释为十六进制。

具体说明
参数
[in] str
指向以 NULL 结尾的 C 字符串的指针,该字符串表示要解析的子网 ID(采用十六进制格式)。
[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
)