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
แยกวิเคราะห์รหัสผ้า Weave ในรูปแบบข้อความ
|
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
) มาแยกวิเคราะห์ตามชุดคำนิยามตัวเลือกที่ให้มา ฟังก์ชันนี้รองรับทั้งตัวเลือกแบบยาว (ไม่บังคับ) และสั้น (-o) และใช้ไวยากรณ์ตัวเลือกเดียวกันกับฟังก์ชัน GNU getopt_long(3)
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
การส่งคืน |
true หากแยกวิเคราะห์ตัวเลือกและอาร์กิวเมนต์ที่ไม่ใช่ตัวเลือกทั้งหมดสำเร็จแล้ว false หากไม่รู้จักตัวเลือกหรือหากฟังก์ชันตัวแฮนเดิลตัวใดตัวหนึ่งล้มเหลว (เช่น แสดงผลเป็น false) |
ระบบจะส่งคำจำกัดความของตัวเลือกไปยัง ParseArgs() เป็นอาร์เรย์ของโครงสร้าง OptionSet (optSets
) โดย OptionSet แต่ละรายการจะมีอาร์เรย์ของการกำหนดตัวเลือก และฟังก์ชันตัวแฮนเดิล ParseArgs() ประมวลผลอาร์กิวเมนต์ตัวเลือกในลำดับที่ระบุ โดยเรียกใช้ฟังก์ชันตัวแฮนเดิลที่เกี่ยวข้องสำหรับตัวเลือกที่ยอมรับแต่ละตัวเลือก เมื่อแยกวิเคราะห์ตัวเลือกทั้งหมดแล้ว ระบบจะเรียกใช้ฟังก์ชันตัวแฮนเดิลที่ไม่ใช่ตัวเลือก (nonOptArgHandler
) แยกต่างหาก 1 ครั้งเพื่อประมวลผลอาร์กิวเมนต์ที่เหลืออยู่
ชุดตัวเลือก
OptionSet ประกอบด้วยชุดคำจำกัดความของตัวเลือก พร้อมด้วยตัวชี้ไปยังฟังก์ชันเครื่องจัดการที่จะเรียกใช้เมื่อพบหนึ่งในตัวเลือกที่เกี่ยวข้อง นอกจากนี้ ชุดตัวเลือกยังมีข้อความช่วยเหลือที่อธิบายไวยากรณ์และวัตถุประสงค์ของตัวเลือกแต่ละรายการ (ดูตัวเลือกความช่วยเหลือด้านล่าง) ชุดตัวเลือกได้รับการออกแบบมาเพื่อให้สามารถสร้างคอลเล็กชันตัวเลือกที่เกี่ยวข้องซึ่งนำมาใช้ใหม่ได้ ซึ่งช่วยลดความซับซ้อนของความพยายามที่จำเป็นในการดูแลรักษาแอปพลิเคชันจำนวนมากที่ยอมรับตัวเลือกที่คล้ายกัน (เช่น แอปพลิเคชันทดสอบ)
การกำหนด OptionSetsone สามารถกำหนดค่าเริ่มต้นอินสแตนซ์ของ OptionSet ด้วยตัวเองได้ 2 รูปแบบ เช่น เป็นคลาสสากลแบบคงที่ หรือ คลาสย่อย 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" ด้านล่าง) โดยทั่วไปจะใช้ตัวเลขรหัสตัวเลือกเป็น 1000 แต่คุณใช้ตัวเลขใดก็ได้ที่มากกว่า 128 คุณสร้างตัวเลือกชื่อแทนโดยใช้รหัสตัวเลือกเดียวกันที่มีชื่อตัวเลือกต่างกันได้
ตัวเลือก Shorts
ParseArgs() จะไม่ใช้สตริงแยกต่างหากที่ระบุรายการอักขระตัวเลือกแบบสั้น ซึ่งแตกต่างจาก getopt_long(3) แต่ตัวเลือกที่มีค่ารหัสอยู่ในช่วงอักขระ ASCII ที่เป็นกราฟิกจะอนุญาตให้ใช้อักขระนั้นเป็นตัวเลือกสั้นๆ
ParseArgs() กำหนดให้อักขระตัวเลือกแบบสั้นต้องไม่ซ้ำกันใน OptionSets ทั้งหมด ด้วยเหตุนี้ จึงไม่แนะนำให้ใช้ตัวเลือกสั้นๆ กับ OptionSet ที่แชร์ในโปรแกรม เนื่องจากมีโอกาสเกิดข้อขัดข้องอย่างมาก สามารถนำอักขระตัวเลือกสั้นมาใช้ซ้ำภายใน 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";
กลุ่มช่วยเหลือตัวเลือก
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()
เพื่อแยกวิเคราะห์ หากไม่ได้ตั้งค่าตัวแปรสภาพแวดล้อมไว้ ฟังก์ชันจะไม่ทํางาน
รายละเอียด | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||
การส่งคืน |
true หากมีการแยกวิเคราะห์ตัวเลือกและอาร์กิวเมนต์ที่ไม่ใช่ตัวเลือกทั้งหมดเรียบร้อยแล้ว หรือหากไม่ได้ตั้งค่าตัวแปรสภาพแวดล้อมที่ระบุ false หากไม่รู้จักตัวเลือก หากฟังก์ชันตัวแฮนเดิลรายการหนึ่งล้มเหลว (เช่น แสดงผลเป็น 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 หากไม่รู้จักตัวเลือกใด หากฟังก์ชันตัวแฮนเดิลตัวใดตัวหนึ่งล้มเหลว (เช่น แสดงผลเป็น false) หรือเกิดข้อผิดพลาดภายใน |
ไวยากรณ์ของสตริงอินพุตคล้ายกับไวยากรณ์คำสั่งเชลล์ Uniix แต่มีรูปแบบเครื่องหมายคำพูดที่เรียบง่าย กล่าวอย่างเจาะจงคือ
- อาร์กิวเมนต์ต้องคั่นด้วยช่องว่าง เว้นแต่จะมีเครื่องหมายอัญประกาศเดี่ยวหรือมีการกำหนดเป็นอักขระหลีก
- แบ็กสแลชจะหลีกอักขระต่อไปนี้ ทำให้ระบบมองว่าเป็นอักขระปกติ แบ็กสแลชนั้นถูกตัดออก
- สตริงย่อยที่อยู่ในเครื่องหมายคำพูดเดี่ยวหรือคู่ที่ขึ้นต้น/สิ้นสุด ภายในสตริงย่อย อักขระพิเศษมีเพียงรายการเดียวคือแบ็กสแลช ซึ่งจะหลีกอักขระถัดไปและอัญประกาศจบที่เกี่ยวข้อง อักขระอัญประกาศเริ่มต้น/สิ้นสุดถูกตัดออก
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() จะยอมรับรหัสผ้า 64 บิตที่ระบุในรูปแบบเลขฐาน 16 โดยมีหรือไม่มี "0x" นำหน้า
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
การส่งคืน |
true หากมีการแยกวิเคราะห์ค่าสำเร็จ จะ false หากไม่ จะเป็นเท็จ
|
ParseHexString
bool ParseHexString( const char *hexStr, uint32_t strLen, uint8_t *outBuf, uint32_t outBufSize, uint32_t & outDataLen )
แยกวิเคราะห์สตริงไบต์ที่ระบุในรูปแบบเลขฐาน 16
ParseHexString() คาดหวังว่าอินพุตจะอยู่ในรูปแบบของเลขฐานสิบหกคู่ (ตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่) คู่เลขฐานสิบหกสามารถคั่นด้วยอักขระใดก็ได้ต่อไปนี้: โคลอน เซมิโคลอน คอมมา เครื่องหมายจุด หรือขีดกลาง และจะละเว้นอักขระช่องว่างที่ใดก็ได้ในสตริงอินพุต
รายละเอียด | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||
การส่งคืน |
จริง หากค่าแยกวิเคราะห์สำเร็จ เป็นเท็จ หากข้อมูลอินพุตผิดรูปแบบ หรือหาก
outBuf เล็กเกินไป |
ParseIPAddress
bool ParseIPAddress( const char *str, IPAddress & output )
แยกวิเคราะห์ที่อยู่ IP ในรูปแบบข้อความ
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
true หากมีการแยกวิเคราะห์ค่าสำเร็จ จะ false หากไม่ จะเป็นเท็จ
|
ParseInt
bool ParseInt( const char *str, uint64_t & output, int base )
แยกวิเคราะห์และพยายามแปลงสตริงเป็นจำนวนเต็มที่ไม่มีเครื่องหมาย 64 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์ฐาน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
การส่งคืน |
true สำหรับความสำเร็จ มิฉะนั้นให้ false เมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, uint32_t & output, int base )
แยกวิเคราะห์และพยายามแปลงสตริงเป็นจำนวนเต็มที่ไม่มีเครื่องหมาย 32 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์ฐาน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
การส่งคืน |
true สำหรับความสำเร็จ มิฉะนั้นให้ false เมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, int32_t & output, int base )
แยกวิเคราะห์และพยายามแปลงสตริงเป็นจำนวนเต็มแบบมีเครื่องหมาย 32 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์ฐาน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
การส่งคืน |
true สำหรับความสำเร็จ มิฉะนั้นให้ false เมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, uint64_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมเป็นจํานวนเต็มที่ไม่มีเครื่องหมาย 64 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์ฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
true สำหรับความสำเร็จ มิฉะนั้นให้ false เมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, uint32_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมเป็นจํานวนเต็มที่ไม่มีเครื่องหมาย 32 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์ฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
true สำหรับความสำเร็จ มิฉะนั้นให้ false เมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, int32_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมเป็นจำนวนเต็มแบบมีเครื่องหมาย 32 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์ฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
true สำหรับความสำเร็จ มิฉะนั้นให้ false เมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, uint16_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมเป็นจํานวนเต็มที่ไม่มีเครื่องหมาย 16 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์ฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
true สำหรับความสำเร็จ มิฉะนั้นให้ false เมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, int16_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมเป็นจำนวนเต็มแบบมีเครื่องหมาย 16 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์ฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
true สำหรับความสำเร็จ มิฉะนั้นให้ false เมื่อล้มเหลว
|
ParseInt
bool ParseInt( const char *str, uint8_t & output )
แยกวิเคราะห์และพยายามแปลงสตริงที่ตีความเป็นค่าทศนิยมเป็นจำนวนเต็มที่ไม่มีเครื่องหมาย 8 บิต โดยใช้การตีความที่เหมาะสมตามพารามิเตอร์ฐาน
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
true สำหรับความสำเร็จ มิฉะนั้นให้ false เมื่อล้มเหลว
|
ParseNodeId
bool ParseNodeId( const char *str, uint64_t & nodeId )
แยกวิเคราะห์รหัสโหนด Weave ในรูปแบบข้อความ
ฟังก์ชัน ParseNodeId() จะยอมรับรหัสโหนด 64 บิตที่ระบุในรูปแบบเลขฐาน 16 (มีหรือไม่มี "0x" นำหน้า) หรือคำว่า "ใดๆ" หรือ "ทั้งหมด" ซึ่งระบบจะตีความว่าเป็นรหัสโหนด Any (0xFFFFFFFFFFFFFF)
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
true หากมีการแยกวิเคราะห์ค่าสำเร็จ จะ false หากไม่ จะเป็นเท็จ
|
ParseSubnetId
bool ParseSubnetId( const char *str, uint16_t & subnetId )
แยกวิเคราะห์และพยายามแปลงสตริงเป็นรหัสซับเน็ตที่ไม่มีเครื่องหมาย 16 บิต โดยตีความสตริงเป็นเลขฐานสิบหก
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
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 )