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
फ़िलहाल, ऐक्टिव ParseArgs() कॉल में पास किए गए OptionSet की सूची.

फ़ंक्शन

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
टेक्स्ट फ़ॉर्म में आईपी पते को पार्स करें.
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

आर्ग्युमेंट पार्स करने के दौरान होने वाली गड़बड़ियों को प्रिंट करने के लिए, पॉइंटर टू फ़ंक्शन का इस्तेमाल किया जाता है.

ऐप्लिकेशन को सीधे stdout/stderr पर प्रिंट करने के बजाय, अपने विकल्प और गैर-विकल्प तर्क को हैंडल करने वाले फ़ंक्शन में गड़बड़ियों की रिपोर्ट करने के लिए PrintArgError() को कॉल करना चाहिए.

डिफ़ॉल्ट तौर पर, DefaultPrintArgError() फ़ंक्शन का पॉइंटर सेट करता है.

gActiveOptionSets

OptionSet ** gActiveOptionSets = NULL

फ़िलहाल, ऐक्टिव ParseArgs() कॉल में पास किए गए OptionSet की सूची.

जब 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) की एक सूची लेता है. साथ ही, दिए गए विकल्पों की परिभाषाओं के सेट के मुताबिक उन्हें पार्स करता है. यह फ़ंक्शन, लंबा (ऑप्ट) और छोटा (-o) दोनों विकल्प काम करता है. साथ ही, यह एक ही विकल्प सिंटैक्स को GNU getopt_long(3) फ़ंक्शन के रूप में लागू करता है.

जानकारी
पैरामीटर
[in] progName
उस प्रोग्राम या कॉन्टेक्स्ट का नाम जिसमें आर्ग्युमेंट पार्स किए जा रहे हैं. गड़बड़ी के मैसेज और चेतावनियों से पहले, इस स्ट्रिंग का इस्तेमाल किया जाएगा.
[in] argc
पार्स किए जाने वाले तर्कों की संख्या, साथ ही 1.
[in] argv
पार्स की जाने वाली आर्ग्युमेंट स्ट्रिंग का कलेक्शन. अरे की लंबाई, arc के लिए तय की गई वैल्यू से 1 ज़्यादा होनी चाहिए और arv[ संबंधc] को NULL पर सेट करना चाहिए. आर्ग्युमेंट पार्स करने की शुरुआत, second ऐरे एलिमेंट (arv[1]) से होती है. एलिमेंट 0 को अनदेखा किया जाता है.
[in] optSets
OptionSet स्ट्रक्चर के पॉइंटर की सूची, जो कानूनी विकल्पों के बारे में बताती है. दी गई सूची को NULL के साथ खत्म करना ज़रूरी है.
[in] nonOptArgHandler
किसी फ़ंक्शन का पॉइंटर, जिसे किसी भी बचे हुए गैर-विकल्प आर्ग्युमेंट के साथ विकल्प पार्स करने के बाद कॉल किया जाएगा . कोई भी तर्क मौजूद हो या नहीं, इस पर ध्यान दिए बिना फ़ंक्शन को कॉल किया जाता है. अगर NULL पास हो जाता है, तो ParseArgs() गड़बड़ी की रिपोर्ट करेगा. ऐसा तब होगा, जब विकल्प न होने वाले कोई तर्क मौजूद हो.
[in] ignoreUnknown
अगर सही हो, तो किसी भी अनजान विकल्प को चुपचाप अनदेखा कर दें.
लौटाए गए सामान
true, अगर सभी विकल्प और विकल्प के अलावा, अन्य आर्ग्युमेंट को पार्स कर दिया गया हो; false अगर किसी विकल्प की पहचान नहीं की जा सकी या कोई हैंडलर फ़ंक्शन काम नहीं कर सका (जैसे कि 'गलत' दिखाया गया).

विकल्प की परिभाषाएं ParseArgs() को, OptionSet स्ट्रक्चर (optSets) की ऐरे के तौर पर भेजी जाती हैं. हर OptionSet में विकल्प की परिभाषाओं का कलेक्शन और एक हैंडलर फ़ंक्शन होता है. ParseArgs(), दिए गए क्रम में विकल्प के तर्कों को प्रोसेस करता है. साथ ही, पहचाने गए हर विकल्प के लिए, उससे जुड़े हैंडलर फ़ंक्शन को कॉल करता है. सभी विकल्पों को पार्स करने के बाद, बचे हुए आर्ग्युमेंट को प्रोसेस करने के लिए, एक अलग नॉन-विकल्प हैंडलर फ़ंक्शन (nonOptArgHandler) को एक बार कॉल किया जाता है.

विकल्प सेट

OptionSet में विकल्प की परिभाषाओं का एक सेट होता है. साथ ही, हैंडलर फ़ंक्शन के लिए पॉइंटर के साथ-साथ, विकल्प की परिभाषाओं का एक सेट होता है, जिसे तब कॉल किया जाता है, जब कोई दूसरा विकल्प मिलता है. विकल्प सेट में, हर विकल्प के सिंटैक्स और मकसद के बारे में बताने वाला सहायता टेक्स्ट भी होता है (नीचे, 'विकल्प के लिए सहायता' विकल्प देखें). विकल्प के सेट को इस तरह से डिज़ाइन किया गया है कि उनसे मिलते-जुलते विकल्पों के ऐसे कलेक्शन बनाए जा सकें जिन्हें फिर से इस्तेमाल किया जा सके. यह, एक जैसे विकल्प स्वीकार करने वाले कई ऐप्लिकेशन (जैसे, टेस्ट ऐप्लिकेशन) को बनाए रखने की कोशिशों को आसान बनाता है.

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 नाम वाले फ़ील्ड से मिलता है. 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 पर फिर से इस्तेमाल किया जा सकता है (हालांकि, नीचे Shorts के विकल्प देखें). आम तौर पर, विकल्प आईडी को 1,000 पर नंबर देना शुरू किया जाता है. हालांकि, 128 से ज़्यादा संख्या का इस्तेमाल किया जा सकता है. उपनाम के विकल्प, एक ही विकल्प आईडी का इस्तेमाल करके अलग-अलग विकल्प नामों के साथ बनाए जा सकते हैं.

छोटे विकल्प

getopt_long(3) के उलट, ParseArgs(), छोटे विकल्प वाले वर्णों की सूची के बारे में बताने वाली अलग स्ट्रिंग नहीं लेता है. इसके बजाय, कोई भी विकल्प जिसका आईडी मान ग्राफ़िकल ASCII वर्णों की श्रेणी में आता है, उस वर्ण को एक छोटे विकल्प के रूप में इस्तेमाल करने की अनुमति देगा.

ParseArgs() के लिए ज़रूरी है कि छोटे विकल्प वाले वर्ण, सभी OptionSets के लिए यूनीक हों. इस वजह से, सभी प्रोग्राम में शेयर किए गए ऐसे OptionSets के लिए छोटे विकल्पों का इस्तेमाल नहीं करना चाहिए जिनमें टकराव होने की संभावना ज़्यादा होती है. उपनाम वाले लंबे विकल्पों के नाम बनाने की अनुमति देने के लिए, एक OptionSet के अंदर छोटे विकल्प वाले वर्णों का फिर से इस्तेमाल किया जा सकता है.

विकल्प सहायता

हर OptionSet में एक OptionHelp स्ट्रिंग होती है, जो उससे जुड़े विकल्पों के मकसद और सिंटैक्स की जानकारी देती है. विकल्प के इस्तेमाल की जानकारी जनरेट करने के लिए, PrintOptionHelp() फ़ंक्शन इन स्ट्रिंग का इस्तेमाल करता है.

कन्वेंशन के मुताबिक, विकल्प सहायता स्ट्रिंग में सिंटैक्स का एक उदाहरण होता है. इसके बाद, विकल्प के बारे में टेक्स्ट के रूप में जानकारी दी जाती है. अगर विकल्प का छोटा वर्शन या कोई उपनाम नाम है, तो इसे मुख्य लंबे नाम से पहले दिया जाता है. एक जैसा स्टाइल बनाए रखने के लिए, सिंटैक्स की लाइनों को दो स्पेस से और ब्यौरे में सात स्पेस का इंडेंट किया जाता है. एक खाली लाइन, हर विकल्प की जानकारी के बाद दिखती है. इसमें आखिरी विकल्प भी शामिल होता है.

E.g.:

static const char *const gToolOptionHelp =
    "  --listen\n"
    "       Listen and respond to requests sent from another node.\n"
    "\n"
    "  --length \n"
    "       Send requests with the specified number of bytes in the payload.\n"
    "\n"
    "  --num, --count \n"
    "       Send the specified number of requests and exit.\n"
    "\n"
    "  -d, --debug []\n"
    "       Set debug logging to the given level. (Default: 1)\n"
    "\n"
    "  -h, --help\n"
    "       Print help information.\n"
    "\n";

विकल्प सहायता ग्रुप

OptionSet में एक 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, अगर सभी विकल्प और विकल्प न होने वाले आर्ग्युमेंट पार्स कर दिए गए हों या दिया गया एनवायरमेंट वैरिएबल सेट न किया गया हो; false, अगर कोई विकल्प पहचाना नहीं गया था, अगर कोई हैंडलर फ़ंक्शन काम नहीं कर सका (यानी कि गलत जवाब मिला) या कोई अंदरूनी गड़बड़ी हुई.

ParseArgsFromEnvVar

bool ParseArgsFromEnvVar(
  const char *progName,
  const char *varName,
  OptionSet *optSets[]
)

ParseArgsFromEnvVar

bool ParseArgsFromEnvVar(
  const char *progName,
  const char *varName,
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler
)

ParseArgsFromString

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

किसी दी गई स्ट्रिंग से, तर्कों का एक सेट पार्स करें.

ParseArgsFromString(), किसी स्ट्रिंग (argStr) को आर्ग्युमेंट के सेट में बांटता है और ParseArgs() फ़ंक्शन का इस्तेमाल करके, आर्ग्युमेंट को पार्स करता है.

जानकारी
पैरामीटर
[in] progName
उस प्रोग्राम या कॉन्टेक्स्ट का नाम जिसमें आर्ग्युमेंट पार्स किए जा रहे हैं. गड़बड़ी के मैसेज और चेतावनियों से पहले, इस स्ट्रिंग का इस्तेमाल किया जाएगा.
[in] argStr
इस स्ट्रिंग में पार्स किए जाने वाले विकल्प और तर्क होते हैं.
[in] optSets
OptionSet स्ट्रक्चर के पॉइंटर की सूची, जो कानूनी विकल्पों के बारे में बताती है. दी गई सूची को NULL के साथ खत्म करना ज़रूरी है.
[in] nonOptArgHandler
किसी फ़ंक्शन का पॉइंटर, जिसे किसी भी बचे हुए गैर-विकल्प आर्ग्युमेंट के साथ विकल्प पार्स करने के बाद कॉल किया जाएगा . कोई भी तर्क मौजूद हो या नहीं, इस पर ध्यान दिए बिना फ़ंक्शन को कॉल किया जाता है. अगर NULL पास हो जाता है, तो ParseArgs() गड़बड़ी की रिपोर्ट करेगा. ऐसा तब होगा, जब विकल्प न होने वाले कोई तर्क मौजूद हो.
[in] ignoreUnknown
अगर सही हो, तो किसी भी अनजान विकल्प को चुपचाप अनदेखा कर दें.
लौटाए गए सामान
true, अगर सभी विकल्प और विकल्प न होने वाले तर्क पार्स कर दिए गए हों; false अगर कोई विकल्प पहचाना नहीं जा सका, अगर कोई हैंडलर फ़ंक्शन काम नहीं कर सका (यानी कि गलत जवाब मिला) या कोई अंदरूनी गड़बड़ी हुई.

इनपुट स्ट्रिंग का सिंटैक्स, unix शेल कमांड सिंटैक्स जैसा ही है. हालांकि, इसे कोट करने की स्कीम आसान है. खास तौर पर:

  • तर्क को खाली सफ़ेद जगह से अलग किया जाता है, बशर्ते खाली सफ़ेद जगह को कोट न किया गया हो या न दिया गया हो.
  • बैकस्लैश में इस वर्ण को एस्केप कर दिया जाता है, इसलिए इसे सामान्य वर्ण माना जाता है. बैकस्लैश को अलग कर दिया जाता है.
  • सिंगल या डबल कोट की शुरुआत/आखिर में कोट की गई सबस्ट्रिंग. किसी सबस्ट्रिंग में, सिर्फ़ खास वर्ण बैकस्लैश होते हैं, जो अगले वर्ण और उससे जुड़े एंड कोट को एस्केप करते हैं. स्टार्ट/एंड कोट के वर्ण हटा दिए जाते हैं.

E.g.:

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

ParseArgsFromString

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

ParseArgsFromString

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

ParseBoolean

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

स्ट्रिंग को बूलियन वैल्यू के तौर पर पार्स करें.

यह फ़ंक्शन इन इनपुट वैल्यू को स्वीकार करता है (केस-इनसेंसिटिव): "true", "yes", "t", "y", "1", "false", "no", "f", "n", "0".

जानकारी
पैरामीटर
[in] str
NULL-खत्म की गई सी स्ट्रिंग का पॉइंटर, जो पार्स करने के लिए वैल्यू दिखाता है.
[out] output
बूल के लिए स्टोरेज का रेफ़रंस जिस पर पार्स की गई वैल्यू को सेव किया जाएगा.
लौटाए गए सामान
सफलता पर सही; नहीं तो, विफल होने पर गलत.

ParseFabricId

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

Weave फ़ैब्रिक आईडी को टेक्स्ट फ़ॉर्म में पार्स करें.

ParseFabricId() फ़ंक्शन, '0x' की शुरुआत में या उसके बिना, हेक्स फ़ॉर्मैट में दिए गए 64-बिट फ़ैब्रिक आईडी को स्वीकार करता है.

जानकारी
पैरामीटर
[in] str
खत्म की गई उस सी स्ट्रिंग का पॉइंटर जिसमें पार्स करने के लिए फ़ैब्रिक आईडी मौजूद है.
[out] output
uint64_t lvalue का रेफ़रंस, जिसमें पार्स की गई वैल्यू को सही तरीके से सेव करने के लिए सेट किया जाएगा.
[in] allowReserved
अगर सही है, तो रिज़र्व की गई रेंज में फ़ैब्रिक के आईडी को पार्स करने की अनुमति दें.
लौटाए गए सामान
अगर वैल्यू पार्स हो गई है, तो वैल्यू 'सही' होगी. अगर ऐसा नहीं है, तो वैल्यू गलत है.

ParseHexString

bool ParseHexString(
  const char *hexStr,
  uint32_t strLen,
  uint8_t *outBuf,
  uint32_t outBufSize,
  uint32_t & outDataLen
)

हेक्स फ़ॉर्मैट में दी गई बाइट की स्ट्रिंग को पार्स करें.

ParseHexString() के हिसाब से, इनपुट, हेक्स अंकों (ऊपर या नीचे के अक्षरों) के जोड़े के रूप में होना चाहिए. हेक्स पेयर को इनमें से किसी भी वर्ण का इस्तेमाल करके अलग किया जा सकता है: कोलन, सेमीकोलन, कॉमा, पीरियड या डैश. इसके अलावा, इनपुट स्ट्रिंग में कहीं भी मौजूद खाली सफ़ेद जगह वाले वर्णों को अनदेखा कर दिया जाता है.

जानकारी
पैरामीटर
[in] hexStr
पार्स की जाने वाली स्ट्रिंग के लिए पॉइंटर.
[in] strLen
पार्स करने के लिए hexStr में मौजूद वर्णों की संख्या.
[in] outBuf
बफ़र का पॉइंटर, जिसमें पार्स बाइट स्टोर की जाएंगी.
[in] outBufSize
बफ़र का साइज़, outBuf के हिसाब से दिखाया गया है.
[out] outDataLen
ऐसे पूर्णांक का रेफ़रंस जिसे पार्स किए गए कुल बाइट की संख्या मिलेगी. अगर outBuf इतना बड़ा नहीं है कि वह दी गई बाइट संख्या को होल्ड कर सके, तो outDataLen को UINT32_MAX पर सेट कर दिया जाएगा.
लौटाए गए सामान
अगर वैल्यू को पार्स कर दिया गया है, तो वैल्यू 'सही' होगी. अगर इनपुट डेटा गलत है या outBuf बहुत छोटा है, तो गलत है.

ParseIPAddress

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

टेक्स्ट फ़ॉर्म में आईपी पते को पार्स करें.

जानकारी
पैरामीटर
[in] str
खत्म की गई ऐसी सी स्ट्रिंग का पॉइंटर जिसमें पार्स करना है.
[out] output
IPAddress ऑब्जेक्ट का रेफ़रंस, जिसमें पार्स की गई वैल्यू को सही तरीके से सेव किया जाएगा.
लौटाए गए सामान
अगर वैल्यू पार्स हो गई है, तो वैल्यू 'सही' होगी. अगर ऐसा नहीं है, तो वैल्यू गलत है.

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' की शुरुआत में या उसके बिना) या 'कोई भी' या 'सभी' शब्दों को स्वीकार करता है, जिनका मतलब कोई भी नोड आईडी (0xFFFFFFFFFFFFFFFF) है.

जानकारी
पैरामीटर
[in] str
पार्स करने के लिए नोड आईडी वाली NULL-खत्म की गई सी स्ट्रिंग का पॉइंटर.
[out] output
uint64_t lvalue का रेफ़रंस, जिसमें पार्स की गई वैल्यू को सही तरीके से सेव करने के लिए सेट किया जाएगा.
लौटाए गए सामान
अगर वैल्यू पार्स हो गई है, तो वैल्यू 'सही' होगी. अगर ऐसा नहीं है, तो वैल्यू गलत है.

ParseSubnetId

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

स्ट्रिंग को हेक्साडेसिमल के तौर पर समझते हुए, स्ट्रिंग को पार्स करें और 16-बिट बिना साइन वाले सबनेट आईडी में बदलने की कोशिश करें.

जानकारी
पैरामीटर
[in] str
पार्स करने के लिए, हेक्साडेसिमल आईडी के तौर पर फ़ॉर्मैट किए गए सबनेट आईडी को दिखाने वाली 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
)