nl::ArgParser

ملخّص

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

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

تعريف الأنواع

NonOptionArgHandlerFunct)(const char *progName, int argc, char *argv[]) تعريف الكتابة
bool(*
دالة يمكن استدعاؤها للتعامل مع أي وسيطات سطر أوامر متبقية غير خيارات.
OptionHandlerFunct)(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg) تعريف الكتابة
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() النشط حاليًا.

ستكون هذه القيمة "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) وتنفذ نفس بناء جملة الخيار مثل دالة getopt_long(3) GNU.

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

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

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

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

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

خيارات قصيرة

على عكس getopt_long(3)، لا يأخذ ParseArgs() سلسلة منفصلة تحدد قائمة أحرف الخيار القصيرة. بدلاً من ذلك، سيسمح أي خيار تقع قيمة المعرف له في نطاق أحرف ASCII الرسومية باستخدام ذلك الحرف كخيار قصير.

تتطلب ParseArgs() أن تكون أحرف الخيارات القصيرة فريدة في جميع OptionSets. ولهذا السبب، لا يُنصح باستخدام خيارات قصيرة لأي مجموعة OptionSets تتم مشاركتها عبر البرامج نظرًا لاحتمالية حدوث تصادمات. ويمكن إعادة استخدام أحرف الخيارات القصيرة داخل عنصر 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";

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

تحتوي 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 التي تحدد الخيارات القانونية. يجب إنهاء القائمة المقدّمة بقيمة فارغة.
[in] nonOptArgHandler
مؤشر إلى دالة سيتم استدعاؤها عند اكتمال تحليل الخيارات مع أي وسيطات متبقية غير مستندة إلى خيارات . يتم استدعاء الدالة بغض النظر عما إذا كانت هناك أي وسيطات باقية أم لا. في حال تجاوز قيمة فارغة، ستبلغ 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 التي تحدد الخيارات القانونية. يجب إنهاء القائمة المقدّمة بقيمة فارغة.
[in] nonOptArgHandler
مؤشر إلى دالة سيتم استدعاؤها عند اكتمال تحليل الخيارات مع أي وسيطات متبقية غير مستندة إلى خيارات . يتم استدعاء الدالة بغض النظر عما إذا كانت هناك أي وسيطات باقية أم لا. في حال تجاوز قيمة فارغة، ستبلغ ParseArgs() عن خطأ في حال توفّر أي وسيطات غير خيارات.
[in] ignoreUnknown
إذا كانت القيمة هي "صحيح"، يُرجى تجاهل أي خيارات غير معروفة بدون تنبيه.
المرتجعات
true إذا تم تحليل جميع الوسيطات التي لا تتضمّن خيارات بنجاح؛ false إذا لم يتم التعرّف على أحد الخيارات، أو في حال تعذّرت إحدى دوال المعالِج (أي تم إرجاعها عن طريق الخطأ) أو في حال حدوث خطأ داخلي.

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

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

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 منتهية الصلاحية فارغة تحتوي على معرّف القماش المطلوب تحليله.
[out] output
مرجع إلى قيمة uint64_t lvalue التي سيتم فيها تخزين القيمة المُحلّلة عند تحقيق النجاح.
[in] allowReserved
إذا كانت القيمة "صحيح"، يجب السماح بتحليل معرّفات الأنظمة الأساسية في النطاق المحجوز.
المرتجعات
صحيح إذا تم تحليل القيمة بنجاح؛ 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.
المرتجعات
صحيح إذا تم تحليل القيمة بنجاح؛ false إذا كانت بيانات الإدخال غير صحيحة، أو إذا كانت outBuf صغيرة جدًا.

ParseIPAddress

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

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

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

التفاصيل
المعلمات
[in] str
مؤشر إلى سلسلة C منتهية الصلاحية فارغة تحتوي على معرّف العقدة المراد تحليلها.
[out] output
مرجع إلى قيمة uint64_t lvalue التي سيتم فيها تخزين القيمة المُحلّلة عند تحقيق النجاح.
المرتجعات
صحيح إذا تم تحليل القيمة بنجاح؛ false إذا لم يكن كذلك.

ParseSubnetId

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

حلل السلسلة وحاول تحويلها إلى رقم تعريف شبكة فرعية غير موقعة 16 بت، مع تفسير السلسلة على أنها سداسية عشرية.

التفاصيل
المعلمات
[in] str
مؤشر إلى سلسلة C منتهية الصلاحية تمثّل معرّف الشبكة الفرعية، والمنسقة كـ سداسي عشري، للتحليل.
[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
)