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

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

nl::ArgParser::OptionSetBase

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

מבנים

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

הערך הזה יהיה 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 דרך הסמן של הפונקציה 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) ומנתחת אותם בהתאם לקבוצה של הגדרות האפשרויות שסופקו. הפונקציה תומכת גם באפשרויות ארוכות (אופציונליות) וגם באפשרויות קצרות (-o), ומממשת את אותו תחביר של אפשרויות כמו הפונקציה getopt_long(3) של GNU.

פרטים
פרמטרים
[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 סטטי, או מחלקה משנית, ומספק constructor. התהליך הזה משתמש בפונקציה 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 שונות (עם זאת, ראו בהמשך 'אפשרויות Shorts'). המוסכמה הנפוצה היא להתחיל מספור המזהים ב-1000, אך בכל מספר > 128. ניתן ליצור אפשרויות כינויים על ידי שימוש באותו מזהה אפשרות עם שמות אפשרויות שונים.

אפשרויות סרטון Shorts

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

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

עזרה בנושא אפשרויות

כל OptionSet מכיל מחרוזת OptionHelp שמתארת את המטרה והתחביר של האפשרויות המשויכות. המחרוזות האלה משמשות את הפונקציה PrintOptionHelp() כדי ליצור פרטי שימוש באפשרויות.

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

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

קבוצות האפשרויות מכילות מחרוזת HelpGroupName שמשמשת לקיבוץ אפשרויות יחד בפלט העזרה. הפונקציה PrintOptionHelp() משתמשת ב-HelpGroupName ככותרת של הקטע בפלט השימוש שנוצר. אם לכמה OptionSets יש אותה 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 – אם אפשרות מסוימת לא זוהתה, אם אחת מהפונקציות של ה-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).
  • לוכסן הפוך בתו מילוט (escape) של התו הבא, והמערכת תתייחס אליו כאל תו רגיל. הקו הנטוי עצמו יוסר.
  • מירכאות בודדות או כפולות מתחילות או מסתיימות במחרוזות משנה שמוקפות במירכאות. בתוך מחרוזת משנה, התווים המיוחדים היחידים הם לוכסן הפוך, אשר בתו בריחה (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
הפניה ל-uint64_t lvalue שבו הערך שנותח יאוחסן בהצלחה.
[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
הפניה למספר שלם שיקבל את המספר הכולל של הבייטים שנותחו. אם inBuf לא גדול מספיק ולא יכול להכיל את מספר הבייטים הנתון, הפונקציה 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
)

לנתח ומנסים להמיר מחרוזת למספר שלם לא חתום של 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' בהתחלה), או את המילים 'בכל'. או 'הכול' שמפורשים כמזהה של כל צומת (0xFFFFFFFFFFFFFF).

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