nl:: ArgParser
สรุป
การแจงนับ |
|
---|---|
OptionArgumentType
|
enum กำหนดข้อกำหนดอาร์กิวเมนต์สำหรับตัวเลือกบรรทัดคำสั่ง |
Typedef |
|
---|---|
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 **
รายการ 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
แยกวิเคราะห์รหัสผ้าทอในรูปแบบข้อความ
|
ParseHexString(const char *hexStr, uint32_t strLen, uint8_t *outBuf, uint32_t outBufSize, uint32_t & outDataLen)
|
bool
แยกวิเคราะห์สตริงของไบต์ที่ให้ไว้ในรูปแบบเลขฐาน 16
|
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:: |
OptionSet ทั่วไปสำหรับการจัดการตัวเลือกการให้ข้อมูล (ความช่วยเหลือ เวอร์ชัน) |
nl:: |
OptionSet ที่เครื่องจัดการเป็นฟังก์ชันเสมือน |
โครงสร้าง |
|
---|---|
nl:: |
กำหนดตัวเลือกบรรทัดคำสั่ง |
nl:: |
กำหนดกลุ่มของตัวเลือกบรรทัดคำสั่งที่สัมพันธ์กันและใช้ซ้ำได้ |
การแจงนับ
OptionArgumentType
OptionArgumentType
กำหนดข้อกำหนดอาร์กิวเมนต์สำหรับตัวเลือกบรรทัดคำสั่ง
Typedef
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, ... )
พิมพ์ข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับการแยกวิเคราะห์อาร์กิวเมนต์
ใช้ฟังก์ชันเริ่มต้นเพื่อพิมพ์ข้อความแสดงข้อผิดพลาดที่เกิดจากการแยกวิเคราะห์อาร์กิวเมนต์
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
แอปพลิเคชันควรเรียกใช้ผ่านตัวชี้ฟังก์ชัน 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 หากไม่รู้จักตัวเลือกใดหรือหากฟังก์ชันของตัวแฮนเดิลทำงานล้มเหลว (กล่าวคือ แสดงค่าเท็จ) |
ระบบจะส่งคำนิยามตัวเลือกไปยัง ParseArgs() เป็นอาร์เรย์ของโครงสร้าง OptionSet (optSets
) OptionSet แต่ละรายการจะมีอาร์เรย์ของคำจำกัดความตัวเลือกและฟังก์ชันของเครื่องจัดการ ParseArgs() จะประมวลผลอาร์กิวเมนต์ตัวเลือกตามลำดับที่ระบุ โดยเรียกใช้ฟังก์ชันของตัวแฮนเดิลที่เกี่ยวข้องสำหรับแต่ละตัวเลือกที่รู้จัก เมื่อแยกวิเคราะห์ตัวเลือกทั้งหมดแล้ว จะมีการเรียกใช้ฟังก์ชันตัวแฮนเดิลที่ไม่ใช่ตัวเลือก (nonOptArgHandler
) แยกต่างหาก 1 ครั้งเพื่อประมวลผลอาร์กิวเมนต์ที่เหลือ
ชุดตัวเลือก
OptionSet ประกอบด้วยชุดคำจำกัดความของตัวเลือก พร้อมด้วยตัวชี้ไปยังฟังก์ชันของเครื่องจัดการที่จะถูกเรียกเมื่อพบหนึ่งในตัวเลือกที่เชื่อมโยงกัน นอกจากนี้ ชุดตัวเลือกยังมีข้อความช่วยเหลือที่อธิบายไวยากรณ์และวัตถุประสงค์ของแต่ละตัวเลือก (ดู OPTION HELP ด้านล่าง) ชุดตัวเลือกได้รับการออกแบบมาเพื่ออนุญาตการสร้างคอลเล็กชันตัวเลือกที่เกี่ยวข้องซึ่งสามารถนำมาใช้ซ้ำได้ ซึ่งช่วยลดความยุ่งยากในการจัดการแอปพลิเคชันหลายรายการที่ยอมรับตัวเลือกที่คล้ายกัน (เช่น แอปพลิเคชันทดสอบ)
การกำหนด OptionSetsone มีอยู่ 2 รูปแบบด้วยกันที่สามารถทำให้อินสแตนซ์ของโครงสร้าง 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 ที่ปรากฏ ดังนั้นจึงสามารถนำไปใช้ซ้ำในชุด Optionต่างๆ ได้ (แต่โปรดดูตัวเลือก Shorts ด้านล่าง) โดยทั่วไปคือการเริ่มหมายเลขรหัสตัวเลือกที่มีเลข 1000 แต่ตัวเลขใดก็ได้ > 128 ได้ คุณสร้างตัวเลือกชื่อแทนได้โดยใช้รหัสตัวเลือกเดียวกันแต่มีชื่อตัวเลือกต่างกัน
ตัวเลือก Shorts
ParseArgs() ไม่ได้ใช้สตริงแยกต่างหากในการระบุรายการอักขระตัวเลือกแบบสั้น ซึ่งแตกต่างจาก getopt_long(3) แต่ตัวเลือกใดๆ ที่มีค่ารหัสอยู่ในช่วงอักขระ ASCII แบบกราฟิก จะทำให้สามารถใช้อักขระนั้นเป็นตัวเลือกแบบสั้นได้
ParseArgs() กำหนดให้อักขระตัวเลือกสั้นๆ ไม่ซ้ำกันใน OptionSets ทั้งหมด ด้วยเหตุนี้ จึงไม่แนะนำให้ใช้ตัวเลือกสั้นๆ สำหรับชุดตัวเลือกที่มีการใช้งานร่วมกันในโปรแกรมต่างๆ เนื่องจากมีโอกาสสูงที่จะเกิดการชนกัน อักขระตัวเลือกแบบสั้นสามารถใช้ซ้ำภายใน OptionSet เดียวเพื่อสร้างชื่อตัวเลือกแบบยาวของชื่อแทนได้
ความช่วยเหลือเกี่ยวกับตัวเลือก
OptionSet แต่ละรายการจะมีสตริง OptionHelp
ที่อธิบายวัตถุประสงค์และไวยากรณ์ของตัวเลือกที่เกี่ยวข้อง ฟังก์ชัน PrintOptionHelp()
จะใช้สตริงเหล่านี้เพื่อสร้างข้อมูลการใช้งานตัวเลือก
ตามกฎแล้ว สตริงความช่วยเหลือเกี่ยวกับตัวเลือกจะประกอบด้วยตัวอย่างไวยากรณ์ซึ่งตามมาด้วยคำอธิบายที่เป็นข้อความของตัวเลือก หากตัวเลือกมีชื่อย่อหรือชื่อชื่อแทน ตัวเลือกดังกล่าวจะมีให้ก่อนชื่อแบบยาวหลัก เพื่อความสอดคล้อง บรรทัดไวยากรณ์จะมีการเยื้องโดยเว้นวรรค 2 ช่อง ส่วนบรรทัดรายละเอียดจะเยื้อง 7 ช่อง บรรทัดว่าง 1 บรรทัดจะตามหลังคำอธิบายตัวเลือกแต่ละรายการ ซึ่งรวมถึงบรรทัดสุดท้ายด้วย
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 หากไม่ทราบตัวเลือก หากฟังก์ชันของตัวแฮนเดิลล้มเหลว (แสดงค่าเท็จ) หรือหากเกิดข้อผิดพลาดภายใน |
ไวยากรณ์ของสตริงอินพุตคล้ายกับไวยากรณ์คำสั่ง Shell แบบ Unix แต่มีรูปแบบการอ้างอิงที่เรียบง่าย กล่าวอย่างเจาะจงคือ
- อาร์กิวเมนต์จะคั่นด้วยช่องว่าง ยกเว้นในกรณีที่มีการยกข้อความมาหรือแบบ Escape
- แบ็กสแลชจะหลบหนีอักขระต่อไปนี้ ทำให้ระบบถือเป็นอักขระปกติ แบ็กสแลชจะถูกตัดออก
- สตริงย่อยที่มีเครื่องหมายอัญประกาศเดี่ยวหรือคู่ ภายในสตริงย่อย จะมีเฉพาะสัญลักษณ์พิเศษเป็นแบ็กสแลช ซึ่งจะหลีกอักขระถัดไป และเครื่องหมายคำพูดปิดที่เกี่ยวข้อง อักขระข้อความที่ยกมาเริ่มต้น/สิ้นสุดถูกตัดออก
E.g.:
--listen --count 10 --sw-version '1.0 (DEVELOPMENT)' "--hostname=nest.com"
ParseArgsFromString
bool ParseArgsFromString( const char *progName, const char *argStr, OptionSet *optSets[], NonOptionArgHandlerFunct nonOptArgHandler )
ParseArgsFromString
bool ParseArgsFromString( const char *progName, const char *argStr, OptionSet *optSets[] )
ParseBoolean
bool ParseBoolean( const char *str, bool & output )
แยกวิเคราะห์สตริงเป็นค่าบูลีน
ฟังก์ชันนี้ยอมรับค่าอินพุตต่อไปนี้ (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ได้แก่ "true", "yes", "t", "y", "1", "false", "no", "f", "n", "0"
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
ParseFabricId
bool ParseFabricId( const char *str, uint64_t & fabricId, bool allowReserved )
แยกวิเคราะห์รหัสผ้าทอในรูปแบบข้อความ
ฟังก์ชัน ParseFabricId() ยอมรับรหัส Fabric 64 บิตที่ระบุในรูปแบบเลขฐาน 16 โดยมีหรือไม่มี "0x" นำหน้า
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
การคืนสินค้า |
true หากมีการแยกวิเคราะห์ค่าสำเร็จ "เท็จ" หากไม่
|
ParseHexString
bool ParseHexString( const char *hexStr, uint32_t strLen, uint8_t *outBuf, uint32_t outBufSize, uint32_t & outDataLen )
แยกวิเคราะห์สตริงของไบต์ที่ให้ไว้ในรูปแบบเลขฐาน 16
ParseHexString() คาดหวังว่าอินพุตจะอยู่ในรูปแบบของเลขฐานสิบหก (ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก) สามารถแยกคู่เลขฐานสิบหกโดยใช้อักขระใดก็ได้ต่อไปนี้: โคลอน เซมิโคลอน เครื่องหมายจุลภาค จุด หรือขีดกลาง นอกจากนี้ ระบบจะไม่สนใจอักขระช่องว่างที่ใดก็ได้ในสตริงอินพุต
รายละเอียด | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||
การคืนสินค้า |
true หากมีการแยกวิเคราะห์ค่าสำเร็จ false หากข้อมูลอินพุตผิดรูปแบบหรือ
outBuf มีขนาดเล็กเกินไป |
ParseIPAddress
bool ParseIPAddress( const char *str, IPAddress & output )
แยกวิเคราะห์ที่อยู่ IP ในรูปแบบข้อความ
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
true หากมีการแยกวิเคราะห์ค่าสำเร็จ "เท็จ" หากไม่
|
ParseInt
bool ParseInt( const char *str, uint64_t & output, int base )
แยกวิเคราะห์และพยายามแปลงสตริงเป็นจำนวนเต็ม 64 บิตที่ไม่มีเครื่องหมาย โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์พื้นฐาน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, uint32_t & output, int base )
แยกวิเคราะห์และพยายามแปลงสตริงเป็นจำนวนเต็ม 32 บิตที่ไม่มีเครื่องหมาย โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์พื้นฐาน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, int32_t & output, int base )
แยกวิเคราะห์และพยายามแปลงสตริงเป็นจำนวนเต็มแบบมีเครื่องหมาย 32 บิตและใช้การตีความที่เหมาะสมตามพารามิเตอร์พื้นฐาน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, uint64_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมให้เป็นจำนวนเต็มที่ไม่มีเครื่องหมาย 64 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์พื้นฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, uint32_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมให้เป็นจำนวนเต็มที่ไม่มีเครื่องหมาย 32 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์พื้นฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, int32_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมให้เป็นจำนวนเต็มแบบมีเครื่องหมาย 32 บิตและใช้การตีความที่เหมาะสมตามพารามิเตอร์พื้นฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, uint16_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมให้เป็นจำนวนเต็มที่ไม่มีเครื่องหมาย 16 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์พื้นฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, int16_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมให้เป็นจำนวนเต็มแบบมีเครื่องหมาย 16 บิตและใช้การตีความที่เหมาะสมตามพารามิเตอร์พื้นฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, uint8_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมให้เป็นจำนวนเต็มที่ไม่มีเครื่องหมาย 8 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์พื้นฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
ParseNodeId
bool ParseNodeId( const char *str, uint64_t & nodeId )
แยกวิเคราะห์รหัสโหนด Weave ในรูปแบบข้อความ
ฟังก์ชัน ParseNodeId() ยอมรับรหัสโหนด 64 บิตที่ระบุในรูปแบบเลขฐาน 16 (มีหรือไม่มี "0x" นำหน้า) หรือคำว่า "any" หรือ "ทั้งหมด" ซึ่งจะตีความว่าหมายถึงรหัสโหนดใดก็ได้ (0xFFFFFFFFFFFFFF)
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
true หากมีการแยกวิเคราะห์ค่าสำเร็จ "เท็จ" หากไม่
|
ParseSubnetId
bool ParseSubnetId( const char *str, uint16_t & subnetId )
แยกวิเคราะห์และพยายามแปลงสตริงเป็นรหัสซับเน็ตแบบไม่ลงชื่อเข้าใช้ 16 บิต โดยแปลสตริงเป็นเลขฐานสิบหก
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
เป็นจริงเมื่อประสบความสำเร็จ ไม่เช่นนั้นให้เป็นเท็จเมื่อล้มเหลว
|
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 )