nl::ArgParser

ملخّص

عمليات التعداد

OptionArgumentType تعداد
تحدد متطلبات الوسيطة لخيار سطر الأوامر.

تحديدات النوع

NonOptionArgHandlerFunct)(const char *progName, int argc, char *argv[]) typedef
bool(*
يشير ذلك المصطلح إلى دالة يمكن طلبها لمعالجة أي وسيطات سطر أوامر متبقية بدون خيار.
OptionHandlerFunct)(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg) typedef
bool(*
يشير ذلك المصطلح إلى دالة يمكن طلبها للتعامل مع مجموعة من خيارات سطر الأوامر.

المتغيرات

PrintArgError = DefaultPrintArgError)(const char *msg,...)
void(*
مؤشر للوظيفة المستخدمة لطباعة الأخطاء التي تحدث أثناء تحليل الوسيطة.
gActiveOptionSets = NULL
تم تمرير قائمة 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 حيث يكون المعالج دالة افتراضية.

الهياكل

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() النشط حاليًا.

ستكون هذه القيمة فارغة عندما لا يكون هناك استدعاء لـ 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) وتحلّلها وفقًا لمجموعة من تعريفات الخيارات المتوفّرة. تدعم الدالة كل من خياري long (opt) وقصير (-o) وتنفذ نفس بنية الخيار مثل دالة GNU getopt_long(3).

التفاصيل
المَعلمات
[in] progName
تمثّل هذه السمة اسم البرنامج أو السياق الذي يتم فيه تحليل الوسيطات. سيتم استخدام هذه السلسلة كبادئة لرسائل الخطأ والتحذيرات.
[in] argc
عدد الوسيطات المطلوب تحليلها، زائد 1.
[in] argv
مصفوفة من سلاسل الوسيطات المراد تحليلها. يجب أن يكون طول الصفيف أكبر من القيمة المحدّدة لـ argc، ويجب ضبط argv[argc] على القيمة NULL. يبدأ تحليل الوسيطات بعنصر الصفيف الثاني (argv[1])، ويتم تجاهل العنصر 0.
[in] optSets
قائمة بالمؤشرات التي تشير إلى بُنى OptionSet التي تُحدِّد الخيارات القانونية يجب إنهاء القائمة المقدمة بقيمة فارغة (NULL).
[in] nonOptArgHandler
يشير ذلك المصطلح إلى مؤشر يشير إلى دالة سيتم استدعاؤها بعد اكتمال تحليل الخيارات مع أي وسيطات متبقية غير خيارية . يتم استدعاء الدالة بغض النظر عما إذا كانت هناك أي وسيطات متبقية أم لا. في حال تمرير قيمة فارغة (NULL)، سيُبلغ ParseArgs() عن خطأ في حال توفّر أي وسيطات غير خيار.
[in] ignoreUnknown
إذا كانت القيمة "true"، يمكنك تجاهل أي خيارات غير معروفة بدون صوت.
المرتجعات
true إذا تم تحليل جميع الخيارات والوسيطات التي لا تحتوي على خيارات بنجاح، أو false إذا لم يتم التعرُّف على خيار أو إذا تعذَّر على إحدى وظائف المعالجات (أي عرض خطأ).

يتم تمرير تعريفات الخيارات إلى ParseArgs() كمصفوفة من بُنى OptionSet (optSets). تحتوي كل OptionSet على مصفوفة من تعريفات الخيارات ودالة معالج. يعالج ParseArgs() وسيطات الخيار بالترتيب المحدد، مع استدعاء دالة المعالج المعنية لكل خيار تم التعرف عليه. بعد تحليل جميع الخيارات، يتم استدعاء دالة معالج منفصلة لا تعتمد على الخيارات (nonOptArgHandler) مرة واحدة لمعالجة أي وسيطات متبقية.

مجموعات الخيارات

تحتوي OptionSet على مجموعة من تعريفات الخيارات مع مؤشر يشير إلى دالة معالج سيتم استدعائها عند العثور على أحد الخيارات المرتبطة. تحتوي مجموعات الخيارات أيضًا على نص المساعدة الذي يصف بناء الجملة والغرض من كل خيار (راجع OPTION HELP أدناه). صُممت مجموعات الخيارات للسماح بإنشاء مجموعات قابلة لإعادة الاستخدام من الخيارات ذات الصلة. وهذا من شأنه أن يبسط الجهود اللازمة للحفاظ على العديد من التطبيقات التي تقبل خيارات مماثلة (على سبيل المثال، تطبيقات الاختبار).

هناك نمطان لتحديد دالة OptionSetsone التي يمكنها إما إعداد مثيل لبنية OptionSet نفسها، على سبيل المثال، كقاعدة عامة ثابتة أو فئة فرعية OptionSetBase وتوفير دالة إنشاء. تستخدم الطريقة الثانية دالة HandleOption() الافتراضية الخالصة لتفويض معالجة الخيارات للفئة الفرعية.

يتم تمرير قوائم OptionSets إلى الدالة 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، حيث يحتوي كل عنصر على: اسم الخيار، ومعرّف عدد صحيح يُستخدم لتحديد الخيار، وما إذا كان الخيار يتوقع/يسمح بوسيطة. تتم الإشارة إلى نهاية صفيف الخيارات من خلال حقل اسم فارغ. 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 المختلفة (ولكن اطّلِع على SHORT OPTIONS أدناه). الاصطلاح الشائع هو بدء أرقام تعريف خيارات الترقيم على 1000، ومع ذلك يمكن استخدام أي رقم أكبر من 128. يمكن إنشاء خيارات الاسم المستعار باستخدام نفس معرّف الخيار مع أسماء خيارات مختلفة.

خيارات الفيديوهات القصيرة

على عكس 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";

مجموعات مساعدة الخيارات

تحتوي OptionSet على سلسلة 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 إذا لم يتم التعرف على خيار، أو إذا فشل أحد وظائف المعالج (أي تم عرض خطأ) أو حدث خطأ داخلي.

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 إذا لم يتم التعرُّف على خيار، أو في حال تعذَّر تنفيذ إحدى وظائف المعالجات (أي تم عرض خطأ) أو حدث خطأ داخلي.

تشبه بناء جملة سلاسل الإدخال بناء جملة أمر Unix Shell، ولكن مع نظام اقتباس مبسط. وهذه القيود تحديدًا هي كالآتي:

  • يتم تحديد الوسيطات بمسافة بيضاء، ما لم يتم إدراج المسافة البيضاء بين علامتي اقتباس أو تخطيها.
  • تؤدي الشرطة المائلة للخلف إلى إلغاء الحرف التالي، مما يؤدي إلى التعامل معه كحرف عادي. تتم إزالة الشرطة المائلة للخلف نفسها.
  • علامات الاقتباس المفردة أو المزدوجة في بداية/نهاية السلاسل الفرعية المقتبَسة. داخل السلسلة الفرعية، الأحرف الخاصة الوحيدة هي الشرطة المائلة للخلف، والتي تتخطى الحرف التالي وعلامة الاقتباس النهائية المقابلة. تتم إزالة حروف البداية/النهاية.

E.g.:

--listen --count 10 --sw-version '1.0 (DEVELOPMENT)' "--hostname=nest.com"

ParseArgsFromString

bool ParseArgsFromString(
  const char *progName,
  const char *argStr,
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler
)

ParseArgsFromString

bool ParseArgsFromString(
  const char *progName,
  const char *argStr,
  OptionSet *optSets[]
)

ParseBoolean

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

تحليل سلسلة كقيمة منطقية.

تقبل هذه الدالة قيم الإدخال التالية (غير حساسة لحالة الأحرف): "true" و"yes" و"t" و"y" و"1" و"false" و"no" و"f" و"n" و"0".

التفاصيل
المَعلمات
[in] str
مؤشر إلى سلسلة C تم إنهاؤها فارغة وتمثل القيمة المراد تحليلها.
[out] output
مرجع إلى مساحة تخزين القيمة المنطقية التي سيتم تخزين القيمة المُحلّلة عليها عند النجاح.
المرتجعات
صواب عند النجاح؛ وإلا، فخطأ عند الفشل.

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
يشير إلى عدد صحيح يتلقى إجمالي عدد وحدات البايت التي تم تحليلها. إذا لم يكن outBuf كبيرًا بما يكفي للاحتفاظ بعدد محدد من وحدات البايت، فسيتم تعيين outDataLen على UINT32_MAX.
المرتجعات
صحيح إذا تم تحليل القيمة بنجاح، أو خطأ إذا كانت بيانات الإدخال مكتوبة بشكلٍ غير صحيح، أو إذا كانت outBuf صغيرة جدًا.

ParseIPAddress

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

تحليل عنوان IP في شكل نصي.

التفاصيل
المَعلمات
[in] str
مؤشر لسلسلة C تم إنهاؤها فارغة وتحتوي على العنوان المراد تحليله.
[out] output
يشير هذا المصطلح إلى مرجع إلى عنصر IPAddress يتم فيه تخزين القيمة بعد تحليلها عند اكتمال المهمة.
المرتجعات
true إذا تم تحليل القيمة بنجاح، أو false إذا لم يتم تحليلها.

ParseInt

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

حلِّل سلسلة معيّنة وحاوِل تحويلها إلى عدد صحيح 64 بت غير موقَّع، مع تطبيق التفسير المناسب استنادًا إلى المَعلمة الأساسية.

التفاصيل
المَعلمات
[in] str
مؤشر إلى سلسلة C تم إنهاؤها فارغة وتمثل العدد الصحيح المراد تحليله.
[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 تم إنهاؤها فارغة وتمثل العدد الصحيح المراد تحليله.
[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 تم إنهاؤها فارغة وتمثل العدد الصحيح المراد تحليله.
[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 تم إنهاؤها فارغة وتمثل العدد الصحيح المراد تحليله.
[out] output
مرجع إلى مساحة التخزين لعدد صحيح 64 بت غير مُوقَّع، والذي سيتم تخزين القيمة المُحلَّلة عليه عند النجاح.
المرتجعات
صواب عند النجاح؛ وإلا، فخطأ عند الفشل.

ParseInt

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

حلِّل سلسلة مفسَّرة كقيمة عشرية وتحاول تحويلها إلى عدد صحيح 32 بت غير مُوقَّع، مع تطبيق التفسير المناسب استنادًا إلى المَعلمة الأساسية.

التفاصيل
المَعلمات
[in] str
مؤشر إلى سلسلة C تم إنهاؤها فارغة وتمثل العدد الصحيح المراد تحليله.
[out] output
مرجع إلى مساحة التخزين لعدد صحيح 32 بت غير مُوقَّع، والذي سيتم تخزين القيمة المُحلَّلة عليه عند النجاح.
المرتجعات
صواب عند النجاح؛ وإلا، فخطأ عند الفشل.

ParseInt

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

حلِّل سلسلة مفسَّرة كقيمة عشرية إلى عدد صحيح موقَّع 32 بت ومحاولة تحويلها، مع تطبيق التفسير المناسب استنادًا إلى المَعلمة الأساسية.

التفاصيل
المَعلمات
[in] str
مؤشر إلى سلسلة C تم إنهاؤها فارغة وتمثل العدد الصحيح المراد تحليله.
[out] output
مرجع إلى مساحة التخزين لعدد صحيح موقَّع 32 بت، سيتم تخزين القيمة المُحلَّلة عليه عند النجاح.
المرتجعات
صواب عند النجاح؛ وإلا، فخطأ عند الفشل.

ParseInt

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

حلِّل سلسلة مفسَّرة كقيمة عشرية وتحاول تحويلها إلى عدد صحيح مؤلف من 16 بت غير مُوقَّع، مع تطبيق التفسير المناسب استنادًا إلى المَعلمة الأساسية.

التفاصيل
المَعلمات
[in] str
مؤشر إلى سلسلة C تم إنهاؤها فارغة وتمثل العدد الصحيح المراد تحليله.
[out] output
مرجع إلى مساحة التخزين لعدد صحيح 16 بت غير مُوقَّع، والذي سيتم تخزين القيمة المُحلَّلة عليه عند النجاح.
المرتجعات
صواب عند النجاح؛ وإلا، فخطأ عند الفشل.

ParseInt

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

حلِّل سلسلة مفسَّرة كقيمة عشرية إلى عدد صحيح موقَّع 16 بت ومحاولة تحويلها، مع تطبيق التفسير المناسب استنادًا إلى المَعلمة الأساسية.

التفاصيل
المَعلمات
[in] str
مؤشر إلى سلسلة C تم إنهاؤها فارغة وتمثل العدد الصحيح المراد تحليله.
[out] output
مرجع إلى مساحة التخزين لعدد صحيح موقَّع 16 بت، سيتم تخزين القيمة المُحلَّلة عليه عند النجاح.
المرتجعات
صواب عند النجاح؛ وإلا، فخطأ عند الفشل.

ParseInt

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

حلِّل سلسلة مفسَّرة كقيمة عشرية كقيمة عشرية إلى عدد صحيح غير مُوقَّع مكوَّن من 8 بت، مع تطبيق التفسير المناسب استنادًا إلى المَعلمة الأساسية.

التفاصيل
المَعلمات
[in] str
مؤشر إلى سلسلة C تم إنهاؤها فارغة وتمثل العدد الصحيح المراد تحليله.
[out] output
مرجع إلى مساحة التخزين لعدد صحيح 8 بت غير مُوقَّع، سيتم تخزين القيمة المُحلَّلة عليها عند النجاح.
المرتجعات
صواب عند النجاح؛ وإلا، فخطأ عند الفشل.

ParseNodeId

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

تحليل معرّف عقدة Weave في نموذج نصي.

تقبل الدالة ParseNodeId() إما معرّف عقدة 64 بت تم تقديمه بتنسيق ست عشري (مع أو بدون البادئة '0x')، أو الكلمات 'any' أو 'all' التي يتم تفسيرها على أنها تعني أي معرّف عقدة (0xFFFFFFFFFFFFFF).

التفاصيل
المَعلمات
[in] str
يشير إلى سلسلة C تم إنهاؤها فارغة وتحتوي على معرّف العقدة المطلوب تحليله.
[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 بت غير مُوقَّع، والذي سيتم تخزين قيمة رقم تعريف الشبكة الفرعية تحليله عند نجاحه.
المرتجعات
صواب عند النجاح؛ وإلا، فخطأ عند الفشل.

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
)