nl::ArgParser

סיכום

ספירות

OptionArgumentType טיפוסים בני מנייה (enum)
מגדיר את דרישות הארגומנטים של אפשרות בשורת הפקודה.

ערכי דף

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
מנתחים ומנסים להמיר מחרוזת למספר שלם ללא סימן (unsigned integer) של 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

OptionSet נפוץ לטיפול באפשרויות מידע (עזרה, גרסה).

nl::ArgParser::OptionSetBase

ערך OptionSet שבו ה-handler הוא פונקציה וירטואלית.

מבנים

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

הרשימה של OptionSets שהועברו לקריאה הפעילה הנוכחית של ParseArgs() .

הערך יהיה NULL כאשר לא מתבצעת קריאה ל-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
מערך של מחרוזות ארגומנט שצריך לנתח. אורך המערך חייב להיות 1 גדול מהערך שצוין עבור argc, ו-argv[argc] חייב להיות מוגדר ל-NULL. ניתוח הארגומנטים מתחיל ברכיב המערך השני (argv[1]). המערכת מתעלמת מהרכיב 0.
[in] optSets
רשימה של הפניות למבנים של OptionSet שמגדירים את האפשרויות המשפטיות. הרשימה המצורפת חייבת להסתיים ב-NULL.
[in] nonOptArgHandler
מצביע לפונקציה שתיקרא לאחר שניתוח האפשרויות יושלם עם כל שאר הארגומנטים שאינם אופציונליים . הפונקציה מופעלת גם אם לא נותרו ארגומנטים. אם הערך NULL מועבר, ParseArgs() ידווח על שגיאה אם קיימים ארגומנטים כלשהם שאינם אפשרות.
[in] ignoreUnknown
אם ההעדפה מקבלת את הערך True, מתעלמים באופן שקט מאפשרויות לא מזוהות.
החזרות
true אם כל האפשרויות והארגומנטים ללא אפשרויות נותחו בהצלחה; false אם אפשרות כלשהי לא הייתה מזוהה או אם אחת מהפונקציות של ה-handler נכשלה (כלומר הוחזרה הערך false).

הגדרות האפשרויות מועברות אל ParseArgs() כמערך של מבני OptionSet (optSets). כל OptionSet מכיל מערך של הגדרות אפשרויות ופונקציית handler. ParseArgs() מעבדת ארגומנטים של אפשרויות בסדר הנתון, וקוראת לפונקציית ה-handler המתאימה לכל אפשרות מזוהה. לאחר שכל האפשרויות מנותחות, פונקציית handler נפרדת שאינה של אפשרות (nonOptArgHandler) מופעלת פעם אחת כדי לעבד את שאר הארגומנטים.

קבוצות אפשרויות

OptionSet מכיל קבוצה של הגדרות של אפשרויות יחד עם מצביע אל פונקציית handler שתיקרא כשיתגלה אחת מהאפשרויות המשויכות. ערכות האפשרויות מכילות גם טקסט עזרה שמתאר את התחביר והמטרה של כל אפשרות (ניתן לעיין בעזרה לאפשרות 'עזרה' בהמשך). קבוצות של אפשרויות נועדו לאפשר יצירת אוספים של אפשרויות קשורות, לשימוש חוזר. השיטה הזו מפשטת את המאמץ הנדרש לניהול אפליקציות מרובות שמקבלות אפשרויות דומות (למשל, אפליקציות לבדיקה).

יש שתי תבניות להגדרה של OptionSetsone. הן יכולות לאתחל מופע של ה-OptionSet עצמו, למשל כמערך גלובלי סטטי או כמחלקה משנית OptionSetBase ולספק בנאי. הפונקציה השנייה משתמשת בפונקציה HandleOption() וירטואלית טהורה כדי להאציל את הטיפול באפשרות למחלקה המשנית.

רשימות של OptionSets מועברות אל הפונקציה ParseArgs() כמערך מצביעים עם סגירת NULL. E.g.:

static OptionSet gToolOptions =
{
    HandleOption,        // handler function
    gToolOptionDefs,  // array of option definitions
    "GENERAL OPTIONS",   // help group
    gToolOptionHelp   // option help text
};

static OptionSet *gOptionSets[] =
{
    &gToolOptions,
    &gNetworkOptions,
    &gTestingOptions,
    &gHelpOptions,
    NULL
};

int main(int argc, char *argv[])
{
    if (!ParseArgs("test-app", argc, argv, gOptionSets))
    {
        ...
    }
}

הגדרות האפשרויות

האפשרויות מוגדרות באמצעות המבנה OptionDef. הגדרות האפשרויות מאורגנות כמערך של רכיבי OptionDef, כאשר כל רכיב מכיל: את שם האפשרות, מזהה מספר שלם המשמש לזיהוי האפשרות, ואם האפשרות מצפה/מאפשרת ארגומנט. בסוף מערך האפשרויות מופיע שדה 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 }
};

מזהי אפשרויות

מזהי אפשרויות מזהים אפשרויות לקוד שמטפל בהן (הפונקציה OptionHandler). מזהי אפשרויות הם יחסיים ל-OptionSet שבו הם מופיעים, ולכן ניתן להשתמש בהם שוב במערכי Option שונים (אבל כדאי לעיין ב'אפשרויות קצרות' בהמשך). המוסכמה המקובלת היא להתחיל מספור של מזהי אפשרויות מ-1,000, אך ניתן להשתמש בכל מספר שגדול מ-128. ניתן ליצור אפשרויות כינוי על ידי שימוש באותו מזהה אפשרות עם שמות אפשרויות שונים.

אפשרויות קצרות

שלא כמו getopt_long(3), ב-ParseArgs() לא נלקח מחרוזת נפרדת שמציינת את רשימת התווים הקצרים של האפשרות. לעומת זאת, כל אפשרות שערך המזהה שלה נופל בטווח של תווי ASCII גרפיים תאפשר להשתמש בתו הזה כאפשרות קצרה.

כדי להשתמש ב-ParseArgs() , תווי האפשרות הקצרים צריכים להיות ייחודיים בכל OptionSets. לכן, לא מומלץ להשתמש באפשרויות קצרות ל-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";

קבוצות עזרה לאפשרות

ה-OptionSets מכיל מחרוזת HelpGroupName שמשמשת לקיבוץ אפשרויות בפלט העזרה. הפונקציה PrintOptionHelp() משתמשת ב-HelpGroupName ככותרת של הקטע בפלט השימוש שנוצר. אם למספר OptionSets יש את אותו 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, מתעלמים באופן שקט מאפשרויות לא מזוהות.
החזרות
true אם כל האפשרויות והארגומנטים ללא אפשרויות נותחו בהצלחה, או אם משתנה הסביבה שצוין לא מוגדר; false אם אחת האפשרויות לא הייתה מזוהה, אם אחת מהפונקציות של ה-handler נכשלה (כלומר הוחזרה כ-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 אם אפשרות כלשהי לא זוהה, אם אחת מהפונקציות של ה-handler נכשלה (כלומר הוחזרה הערך false) או אם אירעה שגיאה פנימית.

התחביר של מחרוזות הקלט דומה לתחביר של פקודות מעטפת של Unix, אבל עם סכמת ציטוט פשוטה. פרטים נוספים:

  • הארגומנטים מופרדים באמצעות רווח, אלא אם הם מוקפים במירכאות או בסימון בתו בריחה (escape).
  • תו אלכסוני משמש ליציאה מהתו הבא וכתוצאה מכך המערכת תתייחס אליו כאל תו רגיל. הלוכסן ההפוך עצמו מוסר.
  • מירכאות בודדות או כפולות בהתחלה/סיום של מחרוזות משנה במירכאות. בתוך מחרוזת משנה, התווים המיוחדים היחידים הם לוכסן הפוך, שמסמן את התו הבא בתור והציטוט הסופי שלו. המערכת מסירה את תווי המירכאות של ההתחלה/הסיום.

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
הפניה לאחסון של בוליאני שהערך שלו יאוחסן בהצלחה.
החזרות
נכון לגבי הצלחה; אחרת, הערך false לגבי כישלון.

ParseFabricId

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

ניתוח מזהה של בד Weave בצורת טקסט.

הפונקציה ParseFabricId() מקבלת מזהה בד של 64 ביט בפורמט הקסדצימלי, עם או בלי '0x' מוביל.

פרטים
פרמטרים
[in] str
מצביע למחרוזת C שמסתיימת ב-NULL, שמכילה את מזהה הבד לניתוח.
[out] output
הפניה ל-lvalue של uint64_t שבו הערך המנותח יאוחסן בהצלחה.
[in] allowReserved
אם True, אפשר לנתח מזהי בד בטווח השמור.
החזרות
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
מספר התווים ב-hexStr שיש לנתח.
[in] outBuf
מצביע למאגר נתונים זמני שבו יאוחסנו הבייטים לניתוח.
[in] outBufSize
גודל מאגר הנתונים הזמני שהוגדר על ידי outBuf.
[out] outDataLen
הפניה למספר שלם שיקבל את המספר הכולל של הבייטים שנותחו. במקרה ש-outBuf לא גדול מספיק כדי להכיל את מספר הבייטים הנתון, הערך של outDataLen יוגדר כ-UINT32_MAX.
החזרות
True אם הערך ניתוח בהצלחה; False אם נתוני הקלט שגויים או אם outBuf קטן מדי.

ParseIPAddress

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

מנתחים כתובת IP בצורת טקסט.

פרטים
פרמטרים
[in] str
הפניה למחרוזת C שמסתיימת ב-NULL, שמכילה את הכתובת לניתוח.
[out] output
הפניה לאובייקט IPAddress שבו הערך המנותח יאוחסן בהצלחה.
החזרות
TRUE אם הערך נותח בהצלחה; false אם לא.

ParseInt

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

מנתחים ומנסים להמיר מחרוזת למספר שלם ללא סימן (unsigned integer) של 64 סיביות, תוך שימוש בפרשנות המתאימה על סמך פרמטר הבסיס.

פרטים
פרמטרים
[in] str
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצגת את המספר השלם שצריך לנתח.
[out] output
הפניה לאחסון עבור מספר שלם לא חתום של 64 סיביות שבו הערך המנותח יאוחסן בהצלחה.
[in] base
הבסיס שלפיו יש לפרש ולנתח את המחרוזת. אם הערך הוא 0 או 16, המחרוזת יכולה להיות הקסדצימלית ולהוסיף לה את הקידומת "0x". אחרת, 0 מרמז על 10, אלא אם מופיע 0 מוביל שבו 8 משתמע.
החזרות
נכון לגבי הצלחה; אחרת, הערך false לגבי כישלון.

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 משתמע.
החזרות
נכון לגבי הצלחה; אחרת, הערך false לגבי כישלון.

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 משתמע.
החזרות
נכון לגבי הצלחה; אחרת, הערך false לגבי כישלון.

ParseInt

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

מנתחים ומנסים להמיר מחרוזת שמפוענחת כערך עשרוני למספר שלם לא חתום של 64 סיביות, תוך יישום הפרשנות המתאימה המבוססת על פרמטר הבסיס.

פרטים
פרמטרים
[in] str
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצגת את המספר השלם שצריך לנתח.
[out] output
הפניה לאחסון עבור מספר שלם לא חתום של 64 סיביות שבו הערך המנותח יאוחסן בהצלחה.
החזרות
נכון לגבי הצלחה; אחרת, הערך false לגבי כישלון.

ParseInt

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

נתחו ונסו להמיר מחרוזת שמפוענחת כערך עשרוני למספר שלם לא חתום של 32 סיביות, תוך יישום הפרשנות המתאימה המבוססת על פרמטר הבסיס.

פרטים
פרמטרים
[in] str
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצגת את המספר השלם שצריך לנתח.
[out] output
הפניה לאחסון עבור מספר שלם לא חתום של 32 סיביות שבו הערך המנותח יאוחסן בהצלחה.
החזרות
נכון לגבי הצלחה; אחרת, הערך false לגבי כישלון.

ParseInt

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

מנתחים ומנסים להמיר מחרוזת שמפוענחת כערך עשרוני למספר שלם חתום של 32 ביט, תוך יישום הפרשנות המתאימה על סמך פרמטר הבסיס.

פרטים
פרמטרים
[in] str
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצגת את המספר השלם שצריך לנתח.
[out] output
הפניה לאחסון של מספר שלם חתום של 32 סיביות, שאליו יאוחסן הערך המנותח לאחר הצלחה.
החזרות
נכון לגבי הצלחה; אחרת, הערך false לגבי כישלון.

ParseInt

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

מנתחים ומנסים להמיר מחרוזת שמפוענחת כערך עשרוני למספר שלם לא חתום של 16 סיביות, תוך יישום הפרשנות המתאימה המבוססת על פרמטר הבסיס.

פרטים
פרמטרים
[in] str
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצגת את המספר השלם שצריך לנתח.
[out] output
הפניה לאחסון עבור מספר שלם לא חתום של 16 סיביות שבו הערך המנותח יאוחסן בהצלחה.
החזרות
נכון לגבי הצלחה; אחרת, הערך false לגבי כישלון.

ParseInt

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

מנתחים ומנסים להמיר מחרוזת שמפוענחת כערך עשרוני למספר שלם חתום של 16 ביט, תוך יישום הפרשנות המתאימה על סמך פרמטר הבסיס.

פרטים
פרמטרים
[in] str
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצגת את המספר השלם שצריך לנתח.
[out] output
הפניה לאחסון של מספר שלם חתום של 16 ביט שבו הערך המנותח יאוחסן בהצלחה.
החזרות
נכון לגבי הצלחה; אחרת, הערך false לגבי כישלון.

ParseInt

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

מנתחים ומנסים להמיר מחרוזת שמפוענחת כערך עשרוני למספר שלם לא חתום בגודל 8 ביט, תוך יישום הפרשנות המתאימה המבוססת על פרמטר הבסיס.

פרטים
פרמטרים
[in] str
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצגת את המספר השלם שצריך לנתח.
[out] output
הפניה לאחסון עבור מספר שלם לא חתום בגודל 8 ביט שבו הערך המנותח יאוחסן בהצלחה.
החזרות
נכון לגבי הצלחה; אחרת, הערך false לגבי כישלון.

ParseNodeId

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

ניתוח מזהה צומת של Weave בצורת טקסט.

הפונקציה ParseNodeId() מקבלת מזהה צומת של 64 סיביות הנתון בפורמט הקסדצימלי (עם או בלי '0x' מוביל), או את המילים 'כל' או 'הכול' שמשמעותן היא כל מזהה צומת (0xFFFFFFFFFFFFFFFF).

פרטים
פרמטרים
[in] str
מצביע למחרוזת C שמסתיימת ב-NULL, שמכילה את מזהה הצומת לניתוח.
[out] output
הפניה ל-lvalue של uint64_t שבו הערך המנותח יאוחסן בהצלחה.
החזרות
TRUE אם הערך נותח בהצלחה; false אם לא.

ParseSubnetId

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

מנתחים מחרוזת ומנסים להמיר אותה למזהה רשת משנה לא חתום של 16 סיביות, תוך פרשנות למחרוזת כהקסדצימלית.

פרטים
פרמטרים
[in] str
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצג את מזהה רשת המשנה, בפורמט הקסדצימלי, שצריך לנתח.
[in,out] subnetId
הפניה לאחסון של מספר שלם לא חתום של 16 סיביות, שבו יישמר הערך של מזהה תת-הרשת המנותח לאחר הצלחה.
החזרות
נכון לגבי הצלחה; אחרת, הערך 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
)