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

متغیر

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
تجزیه و تلاش برای تبدیل رشته به عدد صحیح بدون علامت ۶۴ بیتی، با اعمال تفسیر مناسب براساس پارامتر پایه.
ParseInt(const char *str, uint32_t & output, int base)
bool
تجزیه و تلاش برای تبدیل رشته به عدد صحیح بدون علامت ۳۲ بیتی، با اعمال تفسیر مناسب براساس پارامتر پایه.
ParseInt(const char *str, int32_t & output, int base)
bool
تجزیه و تلاش برای تبدیل رشته به عدد صحیح علامت‌دار ۳۲ بیتی، با اعمال تفسیر مناسب براساس پارامتر پایه.
ParseInt(const char *str, uint64_t & output)
bool
رشته‌ای را که به‌عنوان مقدار اعشاری تفسیر شده است تجزیه می‌کند و تلاش می‌کند آن را به عدد صحیح بدون علامت ۶۴ بیتی تبدیل کند، و تفسیر مناسب را براساس پارامتر پایه اعمال می‌کند.
ParseInt(const char *str, uint32_t & output)
bool
رشته‌ای را که به‌عنوان مقدار اعشاری تفسیر شده است تجزیه می‌کند و تلاش می‌کند آن را به عدد صحیح بدون علامت ۳۲ بیتی تبدیل کند و تفسیر مناسب را براساس پارامتر پایه اعمال می‌کند.
ParseInt(const char *str, int32_t & output)
bool
تجزیه و تلاش برای تبدیل رشته‌ای که به‌عنوان مقدار ده‌دهی تفسیر شده است به عدد صحیح علامت‌دار ۳۲ بیتی، با اعمال تفسیر مناسب براساس پارامتر پایه.
ParseInt(const char *str, uint16_t & output)
bool
رشته‌ای را که به‌عنوان مقدار ده‌دهی تفسیر شده است تجزیه می‌کند و تلاش می‌کند آن را به عدد صحیح بدون علامت ۱۶ بیتی تبدیل کند و تفسیر مناسب را براساس پارامتر پایه اعمال می‌کند.
ParseInt(const char *str, int16_t & output)
bool
رشته‌ای را که به‌عنوان مقدار ده‌دهی تفسیر شده است تجزیه می‌کند و تلاش می‌کند آن را به عدد صحیح علامت‌دار ۱۶ بیتی تبدیل کند و تفسیر مناسب را براساس پارامتر پایه اعمال می‌کند.
ParseInt(const char *str, uint8_t & output)
bool
رشته‌ای را که به‌عنوان مقدار اعشاری تفسیر شده است تجزیه می‌کند و تلاش می‌کند آن را به عدد صحیح بدون علامت ۸ بیتی تبدیل کند و تفسیر مناسب را براساس پارامتر پایه اعمال می‌کند.
ParseNodeId(const char *str, uint64_t & nodeId)
bool
شناسه گره Weave را در قالب نوشتار تجزیه می‌کند.
ParseSubnetId(const char *str, uint16_t & subnetId)
bool
تجزیه و تلاش برای تبدیل رشته به شناسه زیرشبکه ۱۶ بیتی بدون علامت، با تفسیر رشته به‌عنوان شانزده‌شانزدهی.
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)

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

متغیر

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

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

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

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

OptionSet حاوی مجموعه‌ای از تعاریف گزینه به‌همراه اشاره‌گری به تابع کنترل‌کننده است که هنگام مواجهه با یکی از گزینه‌های مرتبط فراخوانده می‌شود. مجموعه‌های گزینه همچنین حاوی نوشتار راهنمایی هستند که نحو و هدف هر گزینه را شرح می‌دهد (به «راهنمای گزینه» در زیر مراجعه کنید). مجموعه‌های گزینه برای ایجاد مجموعه‌های بازکاربردپذیر از گزینه‌های مرتبط طراحی شده‌اند. این کار تلاش لازم برای نگهداری چندین برنامه را که گزینه‌های مشابهی را می‌پذیرند (مثلاً برنامه‌های آزمایشی) ساده می‌کند.

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

فهرست‌های OptionSets به‌عنوان آرایه‌ای از اشاره‌گرها با پایان 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 سازمان‌دهی شده‌اند، که هر عنصر شامل موارد زیر است: نام گزینه، شناسه عدد صحیحی که برای شناسایی گزینه استفاده می‌شود، و اینکه آیا گزینه انتظار آرگومان دارد یا اجازه آن را می‌دهد. پایان آرایه گزینه با فیلد «نام» 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 }
};

شناسه‌های گزینه

شناسه‌های گزینه، گزینه‌ها را برای کدی که آن‌ها را مدیریت می‌کند (تابع OptionHandler) شناسایی می‌کنند. شناسه‌های گزینه نسبت به OptionSet که در آن ظاهر می‌شوند، هستند و بنابراین ممکن است در OptionSetهای مختلف دوباره استفاده شوند (اما به «گزینه‌های کوتاه» در زیر مراجعه کنید). قرارداد معمول این است که شماره‌گذاری شناسه‌های گزینه از ۱۰۰۰ شروع شود، اما هر عددی بزرگ‌تر از ۱۲۸ می‌تواند استفاده شود. گزینه‌های نام مستعار را می‌توان بااستفاده از شناسه گزینه یکسان با نام‌های گزینه متفاوت ایجاد کرد.

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

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

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

راهنمای گزینه

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

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

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

گروه‌های راهنمایی اختیاری

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

نحو رشته‌های ورودی مشابه نحو فرمان پوسته 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
اشاره‌گری به رشته C با پایان NULL که مقدار را برای تجزیه نشان می‌دهد.
[out] output
ارجاعی به فضای ذخیره‌سازی برای یک مقدار بولی که مقدار تجزیه‌شده درصورت موفقیت در آن ذخیره خواهد شد.
کالاهای مرجوعی
درصورت موفقیت، true و درصورت شکست، false.

ParseFabricId

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

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

تابع ParseFabricId()‎ شناسه فابریک ۶۴ بیتی ارائه‌شده در قالب هگزادسیمال را با یا بدون «0x» در ابتدا می‌پذیرد.

جزئیات
پارامترها
[in] str
اشاره‌گری به رشته C با پایان NULL که حاوی شناسه fabric برای تجزیه است.
[out] output
ارجاعی به یک lvalue از نوع uint64_t که درصورت موفقیت، مقدار تجزیه‌شده در آن ذخیره خواهد شد.
[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 خیلی کوچک باشد نادرست است.

ParseIPAddress

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

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

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

ParseInt

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

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

جزئیات
پارامترها
[in] str
اشاره‌گری به رشته C با پایان NULL که نشان‌دهنده عدد صحیح برای تجزیه است.
[out] output
ارجاع به فضای ذخیره‌سازی برای عدد صحیح بدون علامت ۶۴ بیتی که مقدار تجزیه‌شده درصورت موفقیت در آن ذخیره خواهد شد.
[in] base
مبنایی که رشته باید براساس آن تفسیر و تجزیه شود. اگر ۰ یا ۱۶ باشد، رشته ممکن است شانزده‌شانزدهی باشد و پیشوند «0x» داشته باشد. درغیراین‌صورت، ۰ به‌معنای ۱۰ است، مگراینکه ۰ پیشرو وجود داشته باشد که دراین‌صورت به‌معنای ۸ است.
کالاهای مرجوعی
درصورت موفقیت، true و درصورت شکست، false.

ParseInt

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

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

جزئیات
پارامترها
[in] str
اشاره‌گری به رشته C با پایان NULL که نشان‌دهنده عدد صحیح برای تجزیه است.
[out] output
مرجعی به فضای ذخیره‌سازی برای عدد صحیح بدون علامت ۳۲ بیتی که مقدار تجزیه‌شده درصورت موفقیت در آن ذخیره خواهد شد.
[in] base
مبنایی که رشته باید براساس آن تفسیر و تجزیه شود. اگر ۰ یا ۱۶ باشد، رشته ممکن است شانزده‌شانزدهی باشد و پیشوند «0x» داشته باشد. درغیراین‌صورت، ۰ به‌معنای ۱۰ است، مگراینکه ۰ پیشرو وجود داشته باشد که دراین‌صورت به‌معنای ۸ است.
کالاهای مرجوعی
درصورت موفقیت، true و درصورت شکست، false.

ParseInt

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

رشته‌ای را تجزیه می‌کند و تلاش می‌کند آن را به عدد صحیح علامت‌دار ۳۲ بیتی تبدیل کند و تفسیر مناسب را براساس پارامتر پایه اعمال می‌کند.

جزئیات
پارامترها
[in] str
اشاره‌گری به رشته C با پایان NULL که نشان‌دهنده عدد صحیح برای تجزیه است.
[out] output
مرجعی به فضای ذخیره‌سازی برای عدد صحیح علامت‌دار ۳۲ بیتی که مقدار تجزیه‌شده درصورت موفقیت در آن ذخیره خواهد شد.
[in] base
مبنایی که رشته باید براساس آن تفسیر و تجزیه شود. اگر ۰ یا ۱۶ باشد، رشته ممکن است شانزده‌شانزدهی باشد و پیشوند «0x» داشته باشد. درغیراین‌صورت، ۰ به‌معنای ۱۰ است، مگراینکه ۰ پیشرو وجود داشته باشد که دراین‌صورت به‌معنای ۸ است.
کالاهای مرجوعی
درصورت موفقیت، true و درصورت شکست، false.

ParseInt

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

رشته‌ای را که به‌عنوان مقدار اعشاری تفسیر شده است تجزیه می‌کند و تلاش می‌کند آن را به عدد صحیح بدون علامت ۶۴ بیتی تبدیل کند و تفسیر مناسب را براساس پارامتر پایه اعمال می‌کند.

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

ParseInt

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

رشته‌ای را که به‌عنوان مقدار اعشاری تفسیر شده است تجزیه می‌کند و تلاش می‌کند آن را به عدد صحیح بدون علامت ۳۲ بیتی تبدیل کند و تفسیر مناسب را براساس پارامتر پایه اعمال می‌کند.

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

ParseInt

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

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

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

ParseInt

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

رشته‌ای را که به‌عنوان مقدار ده‌دهی تفسیر شده است تجزیه می‌کند و تلاش می‌کند آن را به عدد صحیح بدون علامت ۱۶ بیتی تبدیل کند و تفسیر مناسب را براساس پارامتر پایه اعمال می‌کند.

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

ParseInt

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

رشته‌ای را که به‌عنوان مقدار ده‌دهی تفسیر شده است تجزیه می‌کند و تلاش می‌کند آن را به عدد صحیح علامت‌دار ۱۶ بیتی تبدیل کند و تفسیر مناسب را براساس پارامتر پایه اعمال می‌کند.

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

ParseInt

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

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

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

ParseNodeId

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

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

تابع ParseNodeId()‎ یا شناسه گره ۶۴ بیتی ارائه‌شده در قالب هگز (با یا بدون «0x» در ابتدا) را می‌پذیرد یا کلمات «any» یا «all» را که به‌معنای شناسه گره Any‏ (0xFFFFFFFFFFFFFFFF) تفسیر می‌شوند.

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

ParseSubnetId

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

تجزیه و تلاش برای تبدیل رشته به شناسه زیرشبکه ۱۶ بیتی بدون علامت، با تفسیر رشته به‌عنوان شانزده‌شانزدهی.

جزئیات
پارامترها
[in] str
نشانگری به رشته C با پایان NULL که نشان‌دهنده شناسه زیرشبکه است، با قالب شانزده‌شانزدهی، برای تجزیه.
[in,out] subnetId
مرجعی به فضای ذخیره‌سازی برای عدد صحیح بدون علامت ۱۶ بیتی که مقدار شناسه زیرشبکه تجزیه‌شده درصورت موفقیت در آن ذخیره خواهد شد.
کالاهای مرجوعی
درصورت موفقیت، 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
)