nl:: ArgParser
সারাংশ
গণনা |
|
|---|---|
OptionArgumentType
|
enum কমান্ড লাইন বিকল্পের জন্য আর্গুমেন্ট সংক্রান্ত প্রয়োজনীয়তা নির্ধারণ করে। |
Typedefs |
|
|---|---|
NonOptionArgHandlerFunct)(const char *progName, int argc, char *argv[])
|
typedefbool(*
একটি ফাংশন যা বাকি থাকা, বিকল্প নয় এমন কমান্ড লাইন আর্গুমেন্ট ম্যানেজ করার জন্য কল করা যেতে পারে। |
OptionHandlerFunct)(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg)
|
typedefbool(*
একটি ফাংশন যা কমান্ড লাইন বিকল্পের একটি সেট পরিচালনা করার জন্য কল করা যেতে পারে। |
ভেরিয়েবল |
|
|---|---|
PrintArgError = DefaultPrintArgError)(const char *msg,...)
|
void(*
আর্গুমেন্ট পার্স করার সময় হওয়া সমস্যা প্রিন্ট করার জন্য ব্যবহৃত ফাংশনের পয়েন্টার।
|
gActiveOptionSets = NULL
|
OptionSet **
বর্তমানে অ্যাক্টিভ ParseArgs() কলে পাস করা OptionSets-এর তালিকা।
|
ফাংশন |
|
|---|---|
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
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, স্ট্রিং পার্স করে ৬৪-বিট আনসাইনড ইন্টিজারে পরিবর্তন করার চেষ্টা করুন।
|
ParseInt(const char *str, uint32_t & output, int base)
|
bool
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, স্ট্রিং পার্স করে ৩২-বিট আনসাইনড ইন্টিজারে পরিবর্তন করার চেষ্টা করে।
|
ParseInt(const char *str, int32_t & output, int base)
|
bool
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, স্ট্রিং পার্স করে ৩২-বিট সাইনড ইন্টিজারে কনভার্ট করার চেষ্টা করে।
|
ParseInt(const char *str, uint64_t & output)
|
bool
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, দশমিক মান হিসেবে ব্যাখ্যা করা স্ট্রিংকে পার্স করে ৬৪-বিট আনসাইনড ইন্টিজারে কনভার্ট করার চেষ্টা করুন।
|
ParseInt(const char *str, uint32_t & output)
|
bool
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, দশমিক মান হিসেবে ব্যাখ্যা করা স্ট্রিংকে পার্স করে ৩২-বিট আনসাইনড ইন্টিজারে কনভার্ট করার চেষ্টা করুন।
|
ParseInt(const char *str, int32_t & output)
|
bool
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, দশমিক ভ্যালু হিসেবে ব্যাখ্যা করা স্ট্রিংকে পার্স করে ৩২-বিট সাইনড ইন্টিজারে পরিবর্তন করার চেষ্টা করুন।
|
ParseInt(const char *str, uint16_t & output)
|
bool
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ইন্টারপ্রিটেশন প্রয়োগ করে, দশমিক ভ্যালু হিসেবে ইন্টারপ্রিট করা স্ট্রিংকে পার্স করে ১৬-বিট আনসাইনড ইন্টিজারে কনভার্ট করার চেষ্টা করুন।
|
ParseInt(const char *str, int16_t & output)
|
bool
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, দশমিক মান হিসেবে ব্যাখ্যা করা স্ট্রিংকে ১৬-বিট সাইনড ইন্টিজারে পার্স ও কনভার্ট করার চেষ্টা করুন।
|
ParseInt(const char *str, uint8_t & output)
|
bool
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, দশমিক ভ্যালু হিসেবে ব্যাখ্যা করা স্ট্রিংকে ৮-বিট আনসাইনড ইন্টিজারে পার্স ও কনভার্ট করার চেষ্টা করুন।
|
ParseNodeId(const char *str, uint64_t & nodeId)
|
bool
টেক্সট ফর্মে Weave নোড আইডি পার্স করুন।
|
ParseSubnetId(const char *str, uint16_t & subnetId)
|
bool
স্ট্রিংকে হেক্সাডেসিমাল হিসেবে ব্যাখ্যা করে, পার্স করুন এবং ১৬-বিট আনসাইনড সাবনেট আইডিতে কনভার্ট করার চেষ্টা করুন।
|
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:: |
তথ্যমূলক বিকল্প (সহায়তা, ভার্সন) ম্যানেজ করার জন্য সাধারণ OptionSet। |
|
nl:: |
একটি OptionSet যেখানে হ্যান্ডলার হল একটি ভার্চুয়াল ফাংশন। |
স্ট্রাক্ট |
|
|---|---|
|
nl:: |
কমান্ড লাইন বিকল্প নির্ধারণ করে। |
|
nl:: |
যৌক্তিকভাবে সম্পর্কিত এবং পুনরায় ব্যবহারযোগ্য কমান্ড লাইন বিকল্পের একটি গ্রুপ সংজ্ঞায়িত করে। |
গণনা
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
আর্গুমেন্ট পার্স করার সময় হওয়া সমস্যা প্রিন্ট করার জন্য ব্যবহৃত ফাংশনের পয়েন্টার।
stdout/stderr-এ সরাসরি প্রিন্ট করার পরিবর্তে, অ্যাপ্লিকেশনগুলির বিকল্প এবং বিকল্প নয় এমন আর্গুমেন্ট হ্যান্ডলিং ফাংশনে ত্রুটি রিপোর্ট করার জন্য PrintArgError() কল করা উচিত।
ডিফল্ট হিসেবে DefaultPrintArgError() ফাংশনের পয়েন্টার হিসেবে সেট করা থাকে।
gActiveOptionSets
OptionSet ** gActiveOptionSets = NULL
বর্তমানে অ্যাক্টিভ ParseArgs() কলে পাস করা OptionSets-এর তালিকা।
ParseArgs() কল করার প্রসেস না চললে এই ভ্যালু NULL হবে।
ফাংশন
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, ... )
আর্গুমেন্ট পার্সিংয়ের সাথে যুক্ত কোনও সমস্যার মেসেজ প্রিন্ট করুন।
আর্গুমেন্ট পার্স করার সময় যে ত্রুটি মেসেজ দেখা যায় তা প্রিন্ট করার জন্য ডিফল্ট ফাংশন ব্যবহার করা হয়।
| বিবরণ | |||
|---|---|---|---|
| প্যারামিটারগুলি |
|
||
অ্যাপ্লিকেশন সরাসরি এই ফাংশন কল করার পরিবর্তে PrintArgError ফাংশন পয়েন্টারের মাধ্যমে কল করা উচিত।
FindOptionById
void FindOptionById( OptionSet **optSets, int optId, OptionSet *& optSet, OptionDef *& optDef )
FindOptionByIndex
void FindOptionByIndex( OptionSet **optSets, int optIndex, OptionSet *& optSet, OptionDef *& optDef )
GetNextArg
bool GetNextArg( char *& parsePoint )
IsShortOptionChar
bool IsShortOptionChar( int ch )
MakeLongOptions
struct option * MakeLongOptions( OptionSet **optSets )
MakeShortOptions
char * MakeShortOptions( OptionSet **optSets )
MakeUniqueHelpGroupNamesList
const char ** MakeUniqueHelpGroupNamesList( OptionSet *optSets[] )
ParseArgs
bool ParseArgs( const char *progName, int argc, char *argv[], OptionSet *optSets[], NonOptionArgHandlerFunct nonOptArgHandler, bool ignoreUnknown )
কমান্ড লাইন-স্টাইল আর্গুমেন্টের সেট পার্স করুন, প্রতিটি বিকল্প এবং বিকল্প নয় এমন আর্গুমেন্ট প্রসেস করার জন্য হ্যান্ডলিং ফাংশন কল করুন।
ParseArgs() আর্গুমেন্টের (argv) একটি তালিকা নেয় এবং প্রদত্ত বিকল্পের সংজ্ঞার সেট অনুযায়ী সেগুলি পার্স করে। ফাংশনটি দীর্ঘ (opt) এবং সংক্ষিপ্ত (-o) উভয় বিকল্পকেই সমর্থন করে এবং GNU getopt_long(3) ফাংশনের মতো একই বিকল্প সিনট্যাক্স প্রয়োগ করে।
| বিবরণ | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||||||||||
| ফেরত |
true যদি সব বিকল্প এবং বিকল্প নয় এমন আর্গুমেন্ট সফলভাবে পার্স করা হয়; false যদি কোনও বিকল্প শনাক্ত করা না যায় অথবা কোনও হ্যান্ডলার ফাংশন কাজ না করে (অর্থাৎ, false রিটার্ন করে)। |
||||||||||||
বিকল্পের সংজ্ঞা ParseArgs()-এ OptionSet স্ট্রাকচারের (optSets) অ্যারে হিসেবে পাস করা হয়। প্রতিটি OptionSet-এ বিকল্পের সংজ্ঞা ও হ্যান্ডলার ফাংশনের অ্যারে থাকে। ParseArgs() প্রদত্ত ক্রমে বিকল্প আর্গুমেন্ট প্রসেস করে, প্রতিটি স্বীকৃত বিকল্পের জন্য সংশ্লিষ্ট হ্যান্ডলার ফাংশনকে কল করে। সব বিকল্প পার্স করা হয়ে গেলে, বাকি থাকা আর্গুমেন্ট প্রসেস করার জন্য একটি আলাদা নন-অপশন হ্যান্ডলার ফাংশন (nonOptArgHandler) একবার কল করা হয়।
বিকল্পের সেট
OptionSet-এ বিকল্পের সংজ্ঞার সেট থাকে এবং এর সাথে হ্যান্ডলার ফাংশনের পয়েন্টার থাকে যা সংশ্লিষ্ট বিকল্পের মধ্যে কোনও একটির সম্মুখীন হলে কল করা হবে। এছাড়াও, বিকল্প সেটে প্রতিটি বিকল্পের সিনট্যাক্স ও উদ্দেশ্য বর্ণনা করে এমন সহায়তা টেক্সট থাকে (নিচে বিকল্প সংক্রান্ত সহায়তা দেখুন)। সম্পর্কিত বিকল্পের আবার ব্যবহারযোগ্য সংগ্রহ তৈরি করার জন্য বিকল্প সেট ডিজাইন করা হয়েছে। এটি একই ধরনের বিকল্প (যেমন, টেস্ট অ্যাপ্লিকেশন) গ্রহণ করে এমন একাধিক অ্যাপ্লিকেশন বজায় রাখার জন্য প্রয়োজনীয় পরিশ্রমকে সহজ করে তোলে।
OptionSet সংজ্ঞায়িত করার জন্য দুটি প্যাটার্ন আছে, কেউ 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-এ দেখা যায় তার সাথে সম্পর্কিত এবং তাই বিভিন্ন OptionSet জুড়ে আবার ব্যবহার করা যেতে পারে (তবে নিচে সংক্ষিপ্ত বিকল্পগুলি দেখুন)। সাধারণত বিকল্পের আইডি ১০০০ থেকে শুরু হয়, তবে ১২৮-এর বেশি যেকোনও সংখ্যা ব্যবহার করা যেতে পারে। একই বিকল্প আইডি সহ বিভিন্ন বিকল্পের নাম ব্যবহার করে উপনাম বিকল্প তৈরি করা যেতে পারে।
SHORT বিকল্প
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";
সহায়তা গোষ্ঠীর বিকল্প
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()-এ ভ্যালু পাস করে। এনভায়রনমেন্ট ভেরিয়েবল সেট করা না থাকলে, ফাংশনটি কোনও কাজ করে না।
| বিবরণ | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||||||||
| ফেরত |
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() ফাংশন ব্যবহার করে আর্গুমেন্ট পার্স করে।
| বিবরণ | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||||||||
| ফেরত |
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"।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||
ParseFabricId
bool ParseFabricId( const char *str, uint64_t & fabricId, bool allowReserved )
টেক্সট ফর্মে Weave ফ্যাব্রিক আইডি পার্স করুন।
ParseFabricId() ফাংশন হেক্স ফর্ম্যাটে দেওয়া ৬৪-বিট ফ্যাব্রিক আইডি গ্রহণ করে, যার শুরুতে '0x' থাকতেও পারে, নাও থাকতে পারে।
| বিবরণ | |||||||
|---|---|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||||
| ফেরত |
ভ্যালু সফলভাবে পার্স করা হলে true; না হলে false।
|
||||||
ParseHexString
bool ParseHexString( const char *hexStr, uint32_t strLen, uint8_t *outBuf, uint32_t outBufSize, uint32_t & outDataLen )
হেক্স ফর্মে দেওয়া বাইটের স্ট্রিং পার্স করুন।
ParseHexString() আশা করে যে ইনপুট হেক্স ডিজিটের (বড় বা ছোট হাতের অক্ষর) জোড়ার আকারে হবে। হেক্স পেয়ার ঐচ্ছিকভাবে নিম্নলিখিত যেকোনও অক্ষর দ্বারা আলাদা করা যেতে পারে: কোলন, সেমিকোলন, কমা, পিরিয়ড বা ড্যাশ। এছাড়াও, ইনপুট স্ট্রিংয়ের যেকোনও জায়গায় হোয়াইটস্পেস অক্ষর থাকলে তা উপেক্ষা করা হয়।
| বিবরণ | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||||||||
| ফেরত |
ভ্যালু সঠিকভাবে পার্স করা হলে true; ইনপুট ডেটা ভুলভাবে ফর্ম্যাট করা হলে অথবা
outBuf খুব ছোট হলে false। |
||||||||||
ParseIPAddress
bool ParseIPAddress( const char *str, IPAddress & output )
টেক্সট ফর্মে IP অ্যাড্রেস পার্স করুন।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
| ফেরত |
ভ্যালু সফলভাবে পার্স করা হলে true; না হলে false।
|
||||
ParseInt
bool ParseInt( const char *str, uint64_t & output, int base )
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, স্ট্রিং পার্স করে ৬৪-বিট আনসাইনড ইন্টিজারে পরিবর্তন করার চেষ্টা করুন।
| বিবরণ | |||||||
|---|---|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||||
ParseInt
bool ParseInt( const char *str, uint32_t & output, int base )
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, স্ট্রিং পার্স করে ৩২-বিট আনসাইনড ইন্টিজারে পরিবর্তন করার চেষ্টা করে।
| বিবরণ | |||||||
|---|---|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||||
ParseInt
bool ParseInt( const char *str, int32_t & output, int base )
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, স্ট্রিং পার্স করে ৩২-বিট সাইনড ইন্টিজারে কনভার্ট করার চেষ্টা করে।
| বিবরণ | |||||||
|---|---|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||||
ParseInt
bool ParseInt( const char *str, uint64_t & output )
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, দশমিক মান হিসেবে ব্যাখ্যা করা স্ট্রিংকে ৬৪-বিট আনসাইনড ইন্টিজারে পার্স ও কনভার্ট করার চেষ্টা করুন।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||
ParseInt
bool ParseInt( const char *str, uint32_t & output )
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, দশমিক মান হিসেবে ব্যাখ্যা করা স্ট্রিংকে ৩২-বিট আনসাইনড ইন্টিজারে পার্স ও কনভার্ট করার চেষ্টা করুন।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||
ParseInt
bool ParseInt( const char *str, int32_t & output )
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, দশমিক ভ্যালু হিসেবে ব্যাখ্যা করা স্ট্রিংকে পার্স করে ৩২-বিট সাইনড ইন্টিজারে কনভার্ট করার চেষ্টা করুন।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||
ParseInt
bool ParseInt( const char *str, uint16_t & output )
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ইন্টারপ্রিটেশন প্রয়োগ করে, দশমিক ভ্যালু হিসেবে ইন্টারপ্রিট করা স্ট্রিংকে পার্স করে ১৬-বিট আনসাইনড ইন্টিজারে কনভার্ট করার চেষ্টা করুন।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||
ParseInt
bool ParseInt( const char *str, int16_t & output )
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, দশমিক মান হিসেবে ব্যাখ্যা করা স্ট্রিংকে ১৬-বিট সাইনড ইন্টিজারে পার্স ও কনভার্ট করার চেষ্টা করুন।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||
ParseInt
bool ParseInt( const char *str, uint8_t & output )
বেস প্যারামিটারের উপর ভিত্তি করে উপযুক্ত ব্যাখ্যা প্রয়োগ করে, দশমিক মান হিসেবে ব্যাখ্যা করা স্ট্রিংকে ৮-বিট আনসাইনড ইন্টিজারে পার্স ও কনভার্ট করার চেষ্টা করুন।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||
ParseNodeId
bool ParseNodeId( const char *str, uint64_t & nodeId )
টেক্সট ফর্মে Weave নোড আইডি পার্স করুন।
ParseNodeId() ফাংশন হেক্স ফর্ম্যাটে (প্রথমে '0x' সহ বা ছাড়া) দেওয়া ৬৪-বিট নোড আইডি অথবা 'any' বা 'all' শব্দ গ্রহণ করে, যার অর্থ হল যেকোনও নোড আইডি (0xFFFFFFFFFFFFFFFF)।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
| ফেরত |
ভ্যালু সফলভাবে পার্স করা হলে true; না হলে false।
|
||||
ParseSubnetId
bool ParseSubnetId( const char *str, uint16_t & subnetId )
স্ট্রিংকে হেক্সাডেসিমাল হিসেবে ব্যাখ্যা করে, পার্স করুন এবং ১৬-বিট আনসাইনড সাবনেট আইডিতে কনভার্ট করার চেষ্টা করুন।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
| ফেরত |
সফল হলে true; অন্যথায়, ব্যর্থ হলে false।
|
||||
PrintOptionHelp
void PrintOptionHelp( OptionSet *optSets[], FILE *s )
একটি স্ট্রিমে বিকল্পের নির্দিষ্ট তালিকার জন্য সহায়তা টেক্সট প্রিন্ট করুন।
| বিবরণ | |||||
|---|---|---|---|---|---|
| প্যারামিটারগুলি |
|
||||
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 )