nl:: ArgParser

خلاصه

شمارش ها

OptionArgumentType enum
الزامات آرگومان را برای یک گزینه خط فرمان تعریف می کند.

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(*
تابعی که می تواند برای مدیریت مجموعه ای از گزینه های خط فرمان فراخوانی شود.

متغیرها

PrintArgError = DefaultPrintArgError)(const char *msg,...)
void(*
اشاره گر به تابع برای چاپ خطاهایی که در طول تجزیه آرگومان رخ می دهد استفاده می شود.
gActiveOptionSets = NULL
لیستی از OptionSets به فراخوانی ()ParseArgs فعال فعلی ارسال می شود.

توابع

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 را به صورت متنی تجزیه کنید.
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 را به صورت متنی تجزیه کنید.
ParseSubnetId (const char *str, uint16_t & subnetId)
bool
تجزیه و تلاش برای تبدیل یک رشته به یک شناسه زیرشبکه بدون علامت 16 بیتی، رشته را به صورت هگزادسیمال تفسیر کنید.
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

Common 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)

تابعی که می تواند برای مدیریت مجموعه ای از گزینه های خط فرمان فراخوانی شود.

متغیرها

PrintArgError

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

اشاره گر به تابع برای چاپ خطاهایی که در طول تجزیه آرگومان رخ می دهد استفاده می شود.

برنامه‌ها باید PrintArgError() را فراخوانی کنند تا خطاها را در توابع مدیریت آرگومان گزینه‌ای و غیرگزینه‌ای خود گزارش کنند، نه اینکه مستقیماً در stdout/stderr چاپ کنند.

به طور پیش‌فرض اشاره‌گر تابع DefaultPrintArgError() است.

gActiveOptionSets

OptionSet ** gActiveOptionSets = NULL

لیستی از OptionSets به فراخوانی ()ParseArgs فعال فعلی ارسال می شود.

زمانی که هیچ فراخوانی به 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) پشتیبانی می کند و همان نحو گزینه را به عنوان تابع getopt_long(3) گنو پیاده سازی می کند.

جزئیات
پارامترها
[in] progName
نام برنامه یا زمینه ای که آرگومان ها در آن تجزیه می شوند. این رشته برای پیشوند پیام های خطا و هشدارها استفاده خواهد شد.
[in] argc
تعداد آرگومان هایی که باید تجزیه شوند، به اضافه 1.
[in] argv
آرایه ای از رشته های آرگومان برای تجزیه. طول آرایه باید 1 بیشتر از مقدار مشخص شده برای argc باشد و argv[argc] باید روی NULL تنظیم شود. تجزیه آرگومان با عنصر آرایه دوم (argv[1]) آغاز می شود. عنصر 0 نادیده گرفته می شود.
[in] optSets
فهرستی از اشاره گرها به ساختارهای OptionSet که گزینه های قانونی را تعریف می کنند. لیست ارائه شده باید با یک NULL خاتمه یابد.
[in] nonOptArgHandler
یک اشاره گر به تابعی که پس از تکمیل تجزیه گزینه با آرگومان های غیر گزینه ای باقیمانده فراخوانی می شود. تابع بدون توجه به باقی ماندن آرگومان ها فراخوانی می شود. اگر یک NULL ارسال شود ParseArgs() در صورت وجود آرگومان های غیر گزینه ای خطا را گزارش می کند.
[in] ignoreUnknown
اگر درست است، بی سر و صدا هر گزینه ناشناخته را نادیده بگیرید.
برمی گرداند
true اگر همه آرگومان‌های گزینه‌ها و غیرگزینه‌ها با موفقیت تجزیه شوند. اگر گزینه ای شناسایی نشده باشد یا یکی از عملکردهای کنترل کننده شکست بخورد (یعنی false برگردانده شود)، false .

تعاریف گزینه به عنوان آرایه ای از ساختارهای OptionSet ( optSets ) به ParseArgs () منتقل می شود. هر OptionSet شامل آرایه ای از تعاریف گزینه و یک تابع handler است. ParseArgs () آرگومان های گزینه را به ترتیب داده شده پردازش می کند و تابع handler مربوطه را برای هر گزینه شناسایی شده فراخوانی می کند. هنگامی که همه گزینه ها تجزیه شدند، یک تابع کنترل کننده غیر گزینه جداگانه ( nonOptArgHandler ) یک بار برای پردازش هر آرگومان باقی مانده فراخوانی می شود.

مجموعه گزینه ها

یک OptionSet شامل مجموعه ای از تعاریف گزینه به همراه یک اشاره گر به یک تابع کنترل کننده است که در صورت مواجهه با یکی از گزینه های مرتبط فراخوانی می شود. مجموعه‌های گزینه‌ها همچنین حاوی متن راهنما هستند که نحو و هدف هر گزینه را توصیف می‌کند (به OPTION HELP زیر مراجعه کنید). مجموعه‌های گزینه‌ای طراحی شده‌اند تا امکان ایجاد مجموعه‌های قابل استفاده مجدد از گزینه‌های مرتبط را فراهم کنند. این امر تلاش لازم برای حفظ چندین برنامه کاربردی را که گزینه های مشابه را می پذیرند (مانند برنامه های آزمایشی) ساده می کند.

دو الگو برای تعریف OptionSetsone وجود دارد که می‌تواند نمونه‌ای از خود ساختار OptionSet را مقداردهی اولیه کند، مثلاً به‌عنوان یک جهانی استاتیک، یا زیر کلاس OptionSetBase و سازنده ارائه کند. دومی از یک تابع مجازی HandleOption() برای واگذاری مدیریت گزینه به زیر کلاس استفاده می کند.

لیستی از OptionSets به تابع ParseArgs () به عنوان یک آرایه با پایان NULL از اشاره گرها ارسال می شود. به عنوان مثال:

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 سازماندهی می‌شوند که در آن هر عنصر شامل: نام گزینه، شناسه عدد صحیحی است که برای شناسایی گزینه استفاده می‌شود و اینکه آیا گزینه انتظار دارد/به آرگومان اجازه می‌دهد یا خیر. انتهای آرایه گزینه با یک فیلد NULL Name علامت گذاری می شود. به عنوان مثال:

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

OPTION IDS

شناسه‌های گزینه، گزینه‌های کدی را که آنها را مدیریت می‌کند، شناسایی می‌کنند (عملکرد OptionHandler). شناسه‌های گزینه نسبت به OptionSet که در آن ظاهر می‌شوند هستند، و بنابراین ممکن است در OptionSet‌های مختلف مجدداً مورد استفاده قرار گیرند (اما به گزینه‌های کوتاه در زیر مراجعه کنید). قرارداد معمول این است که شماره گذاری شناسه های گزینه را از 1000 شروع کنیم، با این حال می توان از هر عدد > 128 استفاده کرد. گزینه های مستعار را می توان با استفاده از همان شناسه گزینه با نام گزینه های مختلف ایجاد کرد.

گزینه های کوتاه

برخلاف getopt_long(3)، ParseArgs() یک رشته مجزا برای تعیین لیست کاراکترهای گزینه کوتاه نمی گیرد. در عوض، هر گزینه ای که مقدار شناسه آن در محدوده کاراکترهای ASCII گرافیکی قرار می گیرد، به آن کاراکتر اجازه می دهد تا به عنوان یک گزینه کوتاه استفاده شود.

ParseArgs () مستلزم آن است که کاراکترهای گزینه کوتاه در تمام OptionSets منحصر به فرد باشند. به همین دلیل، استفاده از گزینه‌های کوتاه برای هر OptionSet که در بین برنامه‌ها به اشتراک گذاشته می‌شود، به دلیل احتمال زیاد برخورد، ممنوع است. کاراکترهای گزینه های کوتاه ممکن است در یک OptionSet مورد استفاده مجدد قرار گیرند تا امکان ایجاد نام های طولانی نام مستعار گزینه ها فراهم شود.

OPTION HELP

هر OptionSet شامل یک رشته OptionHelp است که هدف و نحو گزینه های مرتبط را توصیف می کند. این رشته ها توسط تابع PrintOptionHelp() برای تولید اطلاعات استفاده از گزینه استفاده می شوند.

طبق قرارداد، رشته های کمک گزینه شامل یک مثال نحوی است که با توضیح متنی گزینه دنبال می شود. اگر گزینه دارای نسخه کوتاه یا نام مستعار باشد، قبل از نام طولانی اولیه داده می شود. برای هماهنگی، خطوط نحو با 2 فاصله تورفتگی دارند، در حالی که خطوط توضیحات با 7 فاصله فرورفته می شوند. یک خط خالی تنها به دنبال توضیحات هر گزینه، از جمله آخرین مورد، قرار می گیرد.

به عنوان مثال:

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

OPTION HELP GROUPS

OptionSets شامل یک رشته HelpGroupName است که برای گروه بندی گزینه ها با هم در خروجی راهنما استفاده می شود. تابع PrintOptionHelp() از HelpGroupName به عنوان عنوان بخش در خروجی استفاده تولید شده استفاده می کند. اگر چندین OptionSet HelpGroupName یکسان داشته باشند، PrintOptionHelp() راهنمای گزینه را برای OptionSets مختلف با هم تحت عنوان بخش مشترک چاپ می کند.

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 اگر همه آرگومان‌های گزینه‌ها و غیرگزینه‌ها با موفقیت تجزیه شده باشند، یا اگر متغیر محیطی مشخص شده تنظیم نشده باشد. اگر یک گزینه شناسایی نشده باشد، اگر یکی از عملکردهای کنترل کننده ناموفق باشد (یعنی نادرست برگردانده شود) یا اگر یک خطای داخلی رخ داده باشد، 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 اگر همه آرگومان‌های گزینه‌ها و غیرگزینه‌ها با موفقیت تجزیه شوند. اگر یک گزینه شناسایی نشده باشد، اگر یکی از عملکردهای کنترل کننده ناموفق باشد (یعنی نادرست برگردانده شود) یا اگر یک خطای داخلی رخ داده باشد، false .

نحو رشته های ورودی مشابه دستورات پوسته یونیکس است، اما با یک طرح نقل قول ساده شده است. به طور مشخص:

  • آرگومان‌ها با فضای سفید محدود می‌شوند، مگر اینکه فضای سفید نقل‌قول یا خارج شده باشد.
  • یک بک اسلش از کاراکتر زیر فرار می کند و باعث می شود که به عنوان یک کاراکتر عادی در نظر گرفته شود. خود اسلش پاک شده است.
  • نقل‌قول‌های تکی یا دوگانه، زیررشته‌های نقل‌شده را شروع/پایان می‌دهند. در یک رشته فرعی، تنها کاراکترهای خاص عبارتند از بک اسلش که از کاراکتر بعدی و نقل قول انتهایی مربوطه فرار می کند. کاراکترهای نقل قول شروع/پایان حذف می شوند.

به عنوان مثال:

--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[]
)

پارس بولین

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

یک رشته را به عنوان مقدار بولی تجزیه کنید.

این تابع مقادیر ورودی زیر را می‌پذیرد (بدون حساسیت): "true"، "yes"، "t"، "y"، "1"، "false"، "no"، "f"، "n"، " 0".

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C خاتمه یافته با NULL که نشان دهنده مقدار مورد تجزیه است.
[out] output
ارجاع به ذخیره سازی برای یک bool که در صورت موفقیت، مقدار تجزیه شده در آن ذخیره می شود.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

ParseFabricId

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

شناسه پارچه Weave را به صورت متنی تجزیه کنید.

تابع ParseFabricId() یک شناسه فابریک 64 بیتی ارائه شده در فرمت هگز، با یا بدون «0x» پیشرو را می پذیرد.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که حاوی شناسه پارچه برای تجزیه است.
[out] output
ارجاع به uint64_t lvalue که در آن مقدار تجزیه شده در موفقیت ذخیره می شود.
[in] allowReserved
اگر درست است، تجزیه شناسه پارچه را در محدوده رزرو شده مجاز کنید.
برمی گرداند
درست است اگر مقدار با موفقیت تجزیه شود. نادرست اگر نه

ParseHexString

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

رشته ای از بایت های داده شده به شکل هگز را تجزیه کنید.

ParseHexString () انتظار دارد ورودی به شکل جفت ارقام هگز (حروف بزرگ یا کوچک) باشد. جفت‌های هگز را می‌توان به‌صورت اختیاری با هر یک از کاراکترهای زیر از هم جدا کرد: دو نقطه، نقطه ویرگول، کاما، نقطه یا خط تیره. علاوه بر این، کاراکترهای فضای خالی در هر نقطه از رشته ورودی نادیده گرفته می شوند.

جزئیات
پارامترها
[in] hexStr
یک اشاره گر به رشته برای تجزیه.
[in] strLen
تعداد کاراکترها در hexStr برای تجزیه.
[in] outBuf
اشاره گر به بافری که بایت های تجزیه در آن ذخیره می شوند.
[in] outBufSize
اندازه بافر که توسط outBuf به آن اشاره شده است.
[out] outDataLen
ارجاع به یک عدد صحیح که تعداد کل بایت های تجزیه شده را دریافت می کند. در صورتی که outBuf به اندازه کافی بزرگ نباشد که تعداد بایت های داده شده را در خود نگه دارد، outDataLen روی UINT32_MAX تنظیم می شود.
برمی گرداند
درست است اگر مقدار با موفقیت تجزیه شود. اگر داده ورودی نادرست باشد، یا اگر outBuf خیلی کوچک باشد، false است.

آدرس ParseIPA

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

یک آدرس IP را به صورت متنی تجزیه کنید.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که حاوی آدرسی است که باید تجزیه شود.
[out] output
ارجاع به یک شیء آدرس IP که در آن مقدار تجزیه شده در موفقیت ذخیره می شود.
برمی گرداند
درست است اگر مقدار با موفقیت تجزیه شود. نادرست اگر نه

ParseInt

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

تجزیه و تلاش برای تبدیل یک رشته به یک عدد صحیح بدون علامت 64 بیتی، با اعمال تفسیر مناسب بر اساس پارامتر پایه.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که نشان دهنده عدد صحیح برای تجزیه است.
[out] output
ارجاع به فضای ذخیره سازی برای یک عدد صحیح بدون علامت 64 بیتی که در صورت موفقیت، مقدار تجزیه شده در آن ذخیره می شود.
[in] base
پایه ای که رشته باید بر اساس آن تفسیر و تجزیه شود. اگر 0 یا 16 باشد، رشته ممکن است هگزادسیمال و با پیشوند "0x" باشد. در غیر این صورت، 0 به عنوان 10 در نظر گرفته می شود، مگر اینکه با 0 پیشرو مواجه شود که در آن 8 ضمنی باشد.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

ParseInt

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

تجزیه و تلاش برای تبدیل یک رشته به یک عدد صحیح بدون علامت 32 بیتی، با اعمال تفسیر مناسب بر اساس پارامتر پایه.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که نشان دهنده عدد صحیح برای تجزیه است.
[out] output
ارجاع به ذخیره سازی برای یک عدد صحیح بدون علامت 32 بیتی که در صورت موفقیت، مقدار تجزیه شده در آن ذخیره می شود.
[in] base
پایه ای که رشته باید بر اساس آن تفسیر و تجزیه شود. اگر 0 یا 16 باشد، رشته ممکن است هگزادسیمال و با پیشوند "0x" باشد. در غیر این صورت، 0 به عنوان 10 در نظر گرفته می شود، مگر اینکه با 0 پیشرو مواجه شود که در آن 8 ضمنی باشد.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

ParseInt

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

تجزیه و تلاش برای تبدیل یک رشته به یک عدد صحیح امضا شده 32 بیتی، با اعمال تفسیر مناسب بر اساس پارامتر پایه.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که نشان دهنده عدد صحیح برای تجزیه است.
[out] output
ارجاع به ذخیره سازی برای یک عدد صحیح امضا شده 32 بیتی که در صورت موفقیت، مقدار تجزیه شده در آن ذخیره می شود.
[in] base
پایه ای که رشته باید بر اساس آن تفسیر و تجزیه شود. اگر 0 یا 16 باشد، رشته ممکن است هگزادسیمال و با پیشوند "0x" باشد. در غیر این صورت، 0 به عنوان 10 در نظر گرفته می شود، مگر اینکه با 0 پیشرو مواجه شود که در آن 8 ضمنی باشد.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

ParseInt

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

تجزیه و تلاش برای تبدیل رشته تفسیر شده به عنوان یک مقدار اعشاری به یک عدد صحیح بدون علامت 64 بیتی، با اعمال تفسیر مناسب بر اساس پارامتر پایه.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که نشان دهنده عدد صحیح برای تجزیه است.
[out] output
ارجاع به فضای ذخیره سازی برای یک عدد صحیح بدون علامت 64 بیتی که در صورت موفقیت، مقدار تجزیه شده در آن ذخیره می شود.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

ParseInt

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

تجزیه و تلاش برای تبدیل رشته تفسیر شده به عنوان یک مقدار اعشاری به یک عدد صحیح بدون علامت 32 بیتی، با اعمال تفسیر مناسب بر اساس پارامتر پایه.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که نشان دهنده عدد صحیح برای تجزیه است.
[out] output
ارجاع به ذخیره سازی برای یک عدد صحیح بدون علامت 32 بیتی که در صورت موفقیت، مقدار تجزیه شده در آن ذخیره می شود.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

ParseInt

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

تجزیه و تلاش برای تبدیل رشته ای که به عنوان یک مقدار اعشاری تفسیر می شود به یک عدد صحیح امضا شده 32 بیتی، با اعمال تفسیر مناسب بر اساس پارامتر پایه.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که نشان دهنده عدد صحیح برای تجزیه است.
[out] output
ارجاع به ذخیره سازی برای یک عدد صحیح امضا شده 32 بیتی که در صورت موفقیت، مقدار تجزیه شده در آن ذخیره می شود.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

ParseInt

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

تجزیه و تلاش برای تبدیل رشته تفسیر شده به عنوان یک مقدار اعشاری به یک عدد صحیح بدون علامت 16 بیتی، با اعمال تفسیر مناسب بر اساس پارامتر پایه.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که نشان دهنده عدد صحیح برای تجزیه است.
[out] output
ارجاع به ذخیره سازی برای یک عدد صحیح بدون علامت 16 بیتی که در صورت موفقیت، مقدار تجزیه شده در آن ذخیره می شود.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

ParseInt

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

تجزیه و تلاش برای تبدیل رشته ای که به عنوان یک مقدار اعشاری تفسیر می شود به یک عدد صحیح امضا شده 16 بیتی، با اعمال تفسیر مناسب بر اساس پارامتر پایه.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که نشان دهنده عدد صحیح برای تجزیه است.
[out] output
ارجاع به ذخیره سازی برای یک عدد صحیح امضا شده 16 بیتی که در صورت موفقیت، مقدار تجزیه شده در آن ذخیره می شود.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

ParseInt

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

تجزیه و تلاش برای تبدیل رشته تفسیر شده به عنوان یک مقدار اعشاری به یک عدد صحیح بدون علامت 8 بیتی، با اعمال تفسیر مناسب بر اساس پارامتر پایه.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که نشان دهنده عدد صحیح برای تجزیه است.
[out] output
ارجاع به ذخیره سازی برای یک عدد صحیح بدون علامت 8 بیتی که مقدار تجزیه شده در صورت موفقیت در آن ذخیره می شود.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

ParseNodeId

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

شناسه گره Weave را به صورت متنی تجزیه کنید.

تابع ParseNodeId() شناسه گره 64 بیتی را می پذیرد که در قالب هگز (با یا بدون "0x" اصلی) یا کلمات "any" یا "all" را می پذیرد که به معنای شناسه هر گره (0xFFFFFFFFFFFFFFFFFFFF) تفسیر می شوند. .

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C خاتمه یافته NULL حاوی شناسه گره برای تجزیه.
[out] output
ارجاع به uint64_t lvalue که در آن مقدار تجزیه شده در موفقیت ذخیره می شود.
برمی گرداند
درست است اگر مقدار با موفقیت تجزیه شود. نادرست اگر نه

ParseSubnetId

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

تجزیه و تلاش برای تبدیل یک رشته به یک شناسه زیرشبکه بدون علامت 16 بیتی، رشته را به صورت هگزادسیمال تفسیر کنید.

جزئیات
پارامترها
[in] str
یک اشاره گر به یک رشته C با پایان NULL که نشان دهنده شناسه زیرشبکه است که به صورت هگزادسیمال قالب بندی شده است تا تجزیه شود.
[in,out] subnetId
ارجاع به ذخیره سازی برای یک عدد صحیح بدون علامت 16 بیتی که در صورت موفقیت، مقدار شناسه زیرشبکه تجزیه شده در آن ذخیره می شود.
برمی گرداند
درست در مورد موفقیت؛ در غیر این صورت، نادرست در مورد شکست.

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
)