nl::ArgParser

Tóm tắt

Bảng liệt kê

OptionArgumentType enum
Xác định các yêu cầu đối số cho một tuỳ chọn dòng lệnh.

Typedef

NonOptionArgHandlerFunct)(const char *progName, int argc, char *argv[]) typedef
bool(*
Một hàm có thể được gọi để xử lý mọi đối số dòng lệnh còn lại, không có tuỳ chọn.
OptionHandlerFunct)(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg) typedef
bool(*
Một hàm có thể được gọi để xử lý một tập hợp các tuỳ chọn dòng lệnh.

Biến

PrintArgError = DefaultPrintArgError)(const char *msg,...)
void(*
Con trỏ đến hàm dùng để in các lỗi xảy ra trong quá trình phân tích cú pháp đối số.
gActiveOptionSets = NULL
Danh sách OptionSets được chuyển đến lệnh gọi ParseArgs() hiện đang hoạt động.

Hàm

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
In thông báo lỗi liên quan đến việc phân tích cú pháp đối số.
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
Phân tích cú pháp một tập hợp các đối số kiểu dòng lệnh, gọi hàm xử lý để xử lý từng tuỳ chọn và đối số không phải tuỳ chọn.
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
Phân tích cú pháp một tập hợp các đối số từ một biến môi trường đã đặt tên.
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
Phân tích cú pháp một tập hợp các đối số của một chuỗi đã cho.
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
Phân tích cú pháp chuỗi dưới dạng giá trị boolean.
ParseFabricId(const char *str, uint64_t & fabricId, bool allowReserved)
bool
Phân tích cú pháp mã vải Weave ở dạng văn bản.
ParseHexString(const char *hexStr, uint32_t strLen, uint8_t *outBuf, uint32_t outBufSize, uint32_t & outDataLen)
bool
Phân tích cú pháp một chuỗi byte ở dạng hex.
ParseIPAddress(const char *str, IPAddress & output)
bool
Phân tích cú pháp địa chỉ IP ở dạng văn bản.
ParseInt(const char *str, uint64_t & output, int base)
bool
Phân tích cú pháp và chuyển đổi một chuỗi thành số nguyên 64 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.
ParseInt(const char *str, uint32_t & output, int base)
bool
Phân tích cú pháp và chuyển đổi một chuỗi thành số nguyên 32 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.
ParseInt(const char *str, int32_t & output, int base)
bool
Phân tích cú pháp và chuyển đổi một chuỗi thành số nguyên có dấu 32 bit, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.
ParseInt(const char *str, uint64_t & output)
bool
Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 64 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.
ParseInt(const char *str, uint32_t & output)
bool
Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 32 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.
ParseInt(const char *str, int32_t & output)
bool
Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 32 bit có dấu, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.
ParseInt(const char *str, uint16_t & output)
bool
Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 16 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.
ParseInt(const char *str, int16_t & output)
bool
Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 16 bit có dấu, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.
ParseInt(const char *str, uint8_t & output)
bool
Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 8 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.
ParseNodeId(const char *str, uint64_t & nodeId)
bool
Phân tích cú pháp mã nhận dạng nút Weave ở dạng văn bản.
ParseSubnetId(const char *str, uint16_t & subnetId)
bool
Phân tích cú pháp và cố gắng chuyển đổi một chuỗi thành mã nhận dạng mạng con 16 bit chưa ký, hiểu chuỗi là hệ thập lục phân.
PrintOptionHelp(OptionSet *optSets[], FILE *s)
void
In văn bản trợ giúp cho danh sách các tuỳ chọn được chỉ định đến một luồng.
PutStringWithBlankLine(FILE *s, const char *str)
void
PutStringWithNewLine(FILE *s, const char *str)
void
SplitArgs(char *argStr, char **& argList, char *initialArg)
int32_t

Lớp

nl::ArgParser::HelpOptions

OptionSet phổ biến để xử lý các tuỳ chọn thông tin (trợ giúp, phiên bản).

nl::ArgParser::OptionSetBase

Một OptionSet trong đó trình xử lý là một hàm ảo.

Cấu trúc

nl::ArgParser::OptionDef

Xác định tuỳ chọn dòng lệnh.

nl::ArgParser::OptionSet

Xác định một nhóm các tuỳ chọn dòng lệnh có liên quan về mặt logic và có thể sử dụng lại.

Bảng liệt kê

OptionArgumentType

 OptionArgumentType

Xác định các yêu cầu đối số cho một tuỳ chọn dòng lệnh.

Typedef

NonOptionArgHandlerFunct

bool(* NonOptionArgHandlerFunct)(const char *progName, int argc, char *argv[])

Một hàm có thể được gọi để xử lý mọi đối số dòng lệnh còn lại, không có tuỳ chọn.

OptionHandlerFunct

bool(* OptionHandlerFunct)(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg)

Một hàm có thể được gọi để xử lý một tập hợp các tuỳ chọn dòng lệnh.

Biến

PrintArgError

void(* PrintArgError)(const char *msg,...) = DefaultPrintArgError

Con trỏ đến hàm dùng để in các lỗi xảy ra trong quá trình phân tích cú pháp đối số.

Ứng dụng phải gọi PrintArgError() để báo cáo lỗi trong các hàm xử lý tuỳ chọn và đối số không tuỳ chọn, thay vì in trực tiếp ra stdout/stderr.

Giá trị mặc định là một con trỏ đến hàm DefaultPrintArgError().

gActiveOptionSets

OptionSet ** gActiveOptionSets = NULL

Danh sách OptionSets được chuyển đến lệnh gọi ParseArgs() hiện đang hoạt động.

Giá trị này sẽ là NULL khi không có lệnh gọi nào đến ParseArgs() đang thực hiện.

Hàm

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 thông báo lỗi liên quan đến việc phân tích cú pháp đối số.

Hàm mặc định dùng để in thông báo lỗi phát sinh do quá trình phân tích cú pháp các đối số.

Thông tin chi tiết
Các tham số
[in] msg
Thông báo sẽ được in.

Các ứng dụng phải gọi qua con trỏ hàm PrintArgError, thay vì gọi trực tiếp hàm này.

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
)

Phân tích cú pháp một tập hợp các đối số kiểu dòng lệnh, gọi hàm xử lý để xử lý từng tuỳ chọn và đối số không phải tuỳ chọn.

ParseArgs() lấy danh sách các đối số (argv) và phân tích cú pháp các đối số đó theo một tập hợp các định nghĩa tuỳ chọn đã cung cấp. Hàm này hỗ trợ cả tuỳ chọn dài (opt) và ngắn (-o), đồng thời triển khai cú pháp tuỳ chọn tương tự như hàm GNU getopt_long(3).

Thông tin chi tiết
Các tham số
[in] progName
Tên của chương trình hoặc ngữ cảnh trong đó các đối số được phân tích cú pháp. Chuỗi này sẽ được dùng để thêm tiền tố cảnh báo và thông báo lỗi.
[in] argc
Số lượng đối số được phân tích cú pháp, cộng với 1.
[in] argv
Một mảng các chuỗi đối số cần được phân tích cú pháp. Độ dài mảng phải lớn hơn 1 so với giá trị được chỉ định cho argc và argv[argc] phải được đặt thành NULL. Quá trình phân tích cú pháp đối số bắt đầu bằng phần tử mảng thứ hai (argv[1]); phần tử 0 bị bỏ qua.
[in] optSets
Danh sách con trỏ đến cấu trúc OptionSet xác định các lựa chọn pháp lý. Danh sách đã cung cấp phải được kết thúc bằng giá trị NULL.
[in] nonOptArgHandler
Con trỏ đến một hàm sẽ được gọi sau khi quá trình phân tích cú pháp tuỳ chọn hoàn tất cùng với mọi đối số còn lại không phải tuỳ chọn . Hàm được gọi bất kể có đối số nào còn lại hay không. Nếu giá trị NULL được truyền thì ParseArgs() sẽ báo cáo lỗi nếu có bất kỳ đối số không phải tuỳ chọn nào.
[in] ignoreUnknown
Nếu đúng, hãy im lặng bỏ qua mọi tuỳ chọn không xác định.
Trả về
true nếu tất cả các tuỳ chọn và đối số không phải tuỳ chọn được phân tích cú pháp thành công; false nếu không nhận dạng được một tuỳ chọn hoặc nếu một trong các hàm của trình xử lý bị lỗi (nghĩa là trả về sai).

Các định nghĩa tuỳ chọn được chuyển đến ParseArgs() dưới dạng một mảng các cấu trúc OptionSet (optSets). Mỗi OptionSet chứa một mảng các định nghĩa tuỳ chọn và một hàm xử lý. ParseArgs() xử lý các đối số tuỳ chọn theo thứ tự nhất định, gọi hàm xử lý tương ứng cho mỗi tuỳ chọn được nhận dạng. Sau khi tất cả các tuỳ chọn đã được phân tích cú pháp, một hàm trình xử lý không phải tuỳ chọn (nonOptArgHandler) riêng biệt sẽ được gọi một lần để xử lý mọi đối số còn lại.

BỘ LỰA CHỌN

Một OptionSet chứa một tập hợp các định nghĩa tuỳ chọn cùng với một con trỏ đến hàm xử lý sẽ được gọi khi gặp một trong các tuỳ chọn liên quan. Bộ tuỳ chọn cũng chứa văn bản trợ giúp mô tả cú pháp và mục đích của từng tuỳ chọn (xem NỘI DUNG TRỢ GIÚP LỰA CHỌN bên dưới). Các nhóm tuỳ chọn được thiết kế để cho phép tạo các tập hợp tuỳ chọn có thể sử dụng lại cho các tuỳ chọn có liên quan. Điều này giúp đơn giản hoá công sức duy trì nhiều ứng dụng chấp nhận các tuỳ chọn tương tự (ví dụ: ứng dụng kiểm thử).

Có hai mẫu để xác định OptionSetsone có thể khởi chạy một thực thể của chính cấu trúc OptionSet, ví dụ: dưới dạng toàn cục tĩnh hoặc lớp con OptionSetBase và cung cấp một hàm khởi tạo. Phần sau sử dụng hàm HandleOption() ảo thuần tuý để uỷ quyền xử lý tuỳ chọn cho lớp con.

Danh sách OptionSets được chuyển đến hàm ParseArgs() dưới dạng một mảng con trỏ kết thúc 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))
    {
        ...
    }
}

ĐỊNH NGHĨA VỀ LỰA CHỌN

Các tuỳ chọn được xác định bằng cấu trúc OptionDef. Các định nghĩa của tuỳ chọn được sắp xếp dưới dạng một mảng các phần tử OptionDef, trong đó mỗi phần tử chứa: tên của tuỳ chọn, một mã nhận dạng bằng số nguyên dùng để xác định tuỳ chọn và liệu tuỳ chọn có yêu cầu/cho phép đối số hay không. Điểm cuối của mảng tuỳ chọn được báo hiệu bằng trường Tên 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 }
};

ID LỰA CHỌN

Mã tuỳ chọn giúp xác định các tuỳ chọn cho mã xử lý các tuỳ chọn đó (hàm OptionHandler). Mã lựa chọn có liên quan đến OptionSet mà chúng xuất hiện, và do đó có thể được sử dụng lại trên các OptionSet khác nhau (tuy nhiên, bạn có thể xem các Lựa chọn NGẮN bên dưới). Quy ước phổ biến là bắt đầu đánh số mã tuỳ chọn ở mức 1000, tuy nhiên, bạn có thể sử dụng bất kỳ số nào lớn hơn 128. Bạn có thể tạo các tuỳ chọn bí danh bằng cách sử dụng cùng một mã tuỳ chọn với các tên tuỳ chọn khác nhau.

CÁC LỰA CHỌN VIDEO NGẮN

Không giống như getopt_long(3), ParseArgs() không lấy một chuỗi riêng biệt chỉ định danh sách các ký tự tuỳ chọn ngắn. Đúng hơn, bất kỳ tuỳ chọn nào có giá trị mã nằm trong phạm vi ký tự ASCII đồ hoạ đều sẽ cho phép sử dụng ký tự đó dưới dạng tuỳ chọn ngắn.

ParseArgs() yêu cầu các ký tự tuỳ chọn ngắn phải là duy nhất trên tất cả OptionSet. Do đó, bạn không nên sử dụng các tuỳ chọn ngắn cho mọi OptionSet được dùng chung trên các chương trình do có nhiều khả năng xảy ra xung đột. Bạn có thể sử dụng lại các ký tự tuỳ chọn ngắn trong một OptionSet duy nhất để cho phép tạo tên đại diện cho tuỳ chọn dài.

TRỢ GIÚP VỀ LỰA CHỌN

Mỗi OptionSet chứa một chuỗi OptionHelp mô tả mục đích và cú pháp của các tuỳ chọn liên kết. Các chuỗi này được hàm PrintOptionHelp() dùng để tạo thông tin về việc sử dụng tuỳ chọn.

Theo quy ước, chuỗi trợ giúp tuỳ chọn bao gồm ví dụ về cú pháp, theo sau là nội dung mô tả bằng văn bản về tuỳ chọn đó. Nếu lựa chọn này có phiên bản ngắn hoặc tên đại diện, thì tên này sẽ được đặt trước tên đầy đủ chính. Để đảm bảo tính nhất quán, các dòng cú pháp được thụt đầu dòng với 2 dấu cách, trong khi các dòng mô tả được thụt đầu dòng với 7 dấu cách. Một dòng trống duy nhất theo sau mỗi nội dung mô tả tùy chọn, bao gồm cả nội dung mô tả cuối cùng.

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";

NHÓM TRỢ GIÚP LỰA CHỌN

OptionSets chứa một chuỗi HelpGroupName dùng để nhóm các tuỳ chọn lại với nhau trong kết quả trợ giúp. Hàm PrintOptionHelp() dùng HelpGroupName làm tiêu đề phần trong kết quả sử dụng được tạo. Nếu nhiều OptionSet có cùng HelpGroupName, thì PrintOptionHelp() sẽ in thông tin trợ giúp tuỳ chọn cho các OptionSet khác nhau cùng nhau dưới một tiêu đề phần chung.

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
)

Phân tích cú pháp một tập hợp các đối số từ một biến môi trường đã đặt tên.

ParseArgsFromEnvVar() đọc một biến môi trường đã đặt tên và chuyển giá trị đến ParseArgsFromString() để phân tích cú pháp. Nếu biến môi trường không được đặt, thì hàm sẽ không làm gì cả.

Thông tin chi tiết
Các tham số
[in] progName
Tên của chương trình hoặc ngữ cảnh trong đó các đối số được phân tích cú pháp. Chuỗi này sẽ được dùng để thêm tiền tố cảnh báo và thông báo lỗi.
[in] varName
Tên của biến môi trường.
[in] optSets
Danh sách con trỏ đến cấu trúc OptionSet xác định các lựa chọn pháp lý. Danh sách đã cung cấp phải được kết thúc bằng giá trị NULL.
[in] nonOptArgHandler
Con trỏ đến một hàm sẽ được gọi sau khi quá trình phân tích cú pháp tuỳ chọn hoàn tất cùng với mọi đối số còn lại không phải tuỳ chọn . Hàm được gọi bất kể có đối số nào còn lại hay không. Nếu giá trị NULL được truyền thì ParseArgs() sẽ báo cáo lỗi nếu có bất kỳ đối số không phải tuỳ chọn nào.
[in] ignoreUnknown
Nếu đúng, hãy im lặng bỏ qua mọi tuỳ chọn không xác định.
Trả về
true nếu tất cả các tuỳ chọn và đối số không phải tuỳ chọn được phân tích cú pháp thành công, hoặc nếu biến môi trường đã chỉ định chưa được thiết lập; false nếu không nhận dạng được tuỳ chọn, nếu một trong các hàm của trình xử lý bị lỗi (nghĩa là trả về sai) hoặc nếu xảy ra lỗi nội bộ.

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
)

Phân tích cú pháp một tập hợp các đối số của một chuỗi đã cho.

ParseArgsFromString() phân tách một chuỗi nhất định (argStr) thành một nhóm các đối số và phân tích cú pháp các đối số đó bằng hàm ParseArgs().

Thông tin chi tiết
Các tham số
[in] progName
Tên của chương trình hoặc ngữ cảnh trong đó các đối số được phân tích cú pháp. Chuỗi này sẽ được dùng để thêm tiền tố cảnh báo và thông báo lỗi.
[in] argStr
Một chuỗi chứa các tuỳ chọn và đối số cần được phân tích cú pháp.
[in] optSets
Danh sách con trỏ đến cấu trúc OptionSet xác định các lựa chọn pháp lý. Danh sách đã cung cấp phải được kết thúc bằng giá trị NULL.
[in] nonOptArgHandler
Con trỏ đến một hàm sẽ được gọi sau khi quá trình phân tích cú pháp tuỳ chọn hoàn tất cùng với mọi đối số còn lại không phải tuỳ chọn . Hàm được gọi bất kể có đối số nào còn lại hay không. Nếu giá trị NULL được truyền thì ParseArgs() sẽ báo cáo lỗi nếu có bất kỳ đối số không phải tuỳ chọn nào.
[in] ignoreUnknown
Nếu đúng, hãy im lặng bỏ qua mọi tuỳ chọn không xác định.
Trả về
true nếu tất cả các tuỳ chọn và đối số không phải tuỳ chọn được phân tích cú pháp thành công; false nếu không nhận dạng được một tuỳ chọn, nếu một trong các hàm của trình xử lý bị lỗi (nghĩa là trả về sai) hoặc nếu xảy ra lỗi nội bộ.

Cú pháp của chuỗi nhập tương tự như cú pháp lệnh shell unix nhưng có lược đồ trích dẫn được đơn giản hoá. Cụ thể:

  • Các đối số được phân tách bằng khoảng trắng, trừ khi khoảng trắng được đặt trong dấu ngoặc kép hoặc thoát.
  • Dấu gạch chéo ngược sẽ thoát ký tự sau, khiến ký tự này được coi là ký tự bình thường. Chính dấu gạch chéo ngược bị xoá.
  • Chuỗi con bắt đầu/kết thúc trong dấu ngoặc đơn. Trong chuỗi con, ký tự đặc biệt duy nhất là dấu gạch chéo ngược (dấu gạch chéo ngược) thoát ký tự tiếp theo và dấu ngoặc kép kết thúc tương ứng. Các ký tự trong dấu ngoặc kép bắt đầu/kết thúc bị xoá.

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
)

Phân tích cú pháp chuỗi dưới dạng giá trị boolean.

Hàm này chấp nhận các giá trị đầu vào sau (không phân biệt chữ hoa chữ thường): "true", "yes", "t", "y", "1", "false", "no", "f", "n", "0".

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc có giá trị NULL đại diện cho giá trị cần phân tích cú pháp.
[out] output
Tham chiếu đến bộ nhớ cho giá trị bool mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
Trả về
true khi thành công; nếu không, false khi không thành công.

ParseFabricId

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

Phân tích cú pháp mã vải Weave ở dạng văn bản.

Hàm ParseFabricId() chấp nhận id kết nối 64 bit được cung cấp ở định dạng hex, có hoặc không có "0x" ở đầu.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng giá trị NULL có chứa mã nhận dạng kết nối để phân tích cú pháp.
[out] output
Tham chiếu đến một giá trị uint64_t, trong đó giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
[in] allowReserved
Nếu đúng, hãy cho phép phân tích cú pháp mã nhận dạng vải trong phạm vi dành riêng.
Trả về
true nếu giá trị được phân tích cú pháp thành công; false nếu không phân tích cú pháp.

ParseHexString

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

Phân tích cú pháp một chuỗi byte ở dạng hex.

ParseHexString() yêu cầu dữ liệu đầu vào ở dạng các cặp chữ số hex (chữ hoa hoặc chữ thường). Bạn có thể tuỳ ý phân tách các cặp hệ thập lục phân bằng bất kỳ ký tự nào sau đây: dấu hai chấm, dấu chấm phẩy, dấu phẩy, dấu chấm hoặc dấu gạch ngang. Ngoài ra, các ký tự khoảng trắng ở bất kỳ vị trí nào trong chuỗi nhập sẽ bị bỏ qua.

Thông tin chi tiết
Các tham số
[in] hexStr
Con trỏ trỏ đến chuỗi để phân tích cú pháp.
[in] strLen
Số ký tự trong hệ thập lục phân để phân tích cú pháp.
[in] outBuf
Con trỏ trỏ đến một vùng đệm nơi lưu trữ các byte phân tích cú pháp.
[in] outBufSize
Kích thước của vùng đệm được trỏ đến bởi outBuf.
[out] outDataLen
Tham chiếu đến một số nguyên sẽ nhận tổng số byte được phân tích cú pháp. Trong trường hợp outBuf không đủ lớn để chứa số byte đã cho, outDataLen sẽ được thiết lập thành UINT32_MAX.
Trả về
true nếu giá trị được phân tích cú pháp thành công; false nếu dữ liệu đầu vào không đúng định dạng hoặc nếu outBuf quá nhỏ.

ParseIPAddress

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

Phân tích cú pháp địa chỉ IP ở dạng văn bản.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng giá trị NULL có chứa địa chỉ cần phân tích cú pháp.
[out] output
Tham chiếu đến đối tượng IPAddress, trong đó giá trị đã phân tích cú pháp sẽ được lưu trữ thành công.
Trả về
true nếu giá trị được phân tích cú pháp thành công; false nếu không phân tích cú pháp.

ParseInt

bool ParseInt(
  const char *str,
  uint64_t & output,
  int base
)

Phân tích cú pháp và chuyển đổi một chuỗi thành số nguyên 64 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho số nguyên cần phân tích cú pháp.
[out] output
Tham chiếu đến bộ nhớ dành cho số nguyên 64 bit chưa ký mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
[in] base
Cơ sở mà chuỗi sẽ được diễn giải và phân tích cú pháp. Nếu bằng 0 hoặc 16, chuỗi có thể là hệ thập lục phân và có tiền tố là "0x". Ngược lại, 0 được ngụ ý là 10 trừ khi bắt gặp số 0 đứng đầu trong đó 8 được ngụ ý.
Trả về
true khi thành công; nếu không, false khi không thành công.

ParseInt

bool ParseInt(
  const char *str,
  uint32_t & output,
  int base
)

Phân tích cú pháp và chuyển đổi một chuỗi thành số nguyên 32 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho số nguyên cần phân tích cú pháp.
[out] output
Tham chiếu đến bộ nhớ lưu trữ cho số nguyên 32 bit chưa ký mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
[in] base
Cơ sở mà chuỗi sẽ được diễn giải và phân tích cú pháp. Nếu bằng 0 hoặc 16, chuỗi có thể là hệ thập lục phân và có tiền tố là "0x". Ngược lại, 0 được ngụ ý là 10 trừ khi bắt gặp số 0 đứng đầu trong đó 8 được ngụ ý.
Trả về
true khi thành công; nếu không, false khi không thành công.

ParseInt

bool ParseInt(
  const char *str,
  int32_t & output,
  int base
)

Phân tích cú pháp và chuyển đổi một chuỗi thành số nguyên có dấu 32 bit, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho số nguyên cần phân tích cú pháp.
[out] output
Tham chiếu đến bộ nhớ dành cho số nguyên 32 bit đã ký mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
[in] base
Cơ sở mà chuỗi sẽ được diễn giải và phân tích cú pháp. Nếu bằng 0 hoặc 16, chuỗi có thể là hệ thập lục phân và có tiền tố là "0x". Ngược lại, 0 được ngụ ý là 10 trừ khi bắt gặp số 0 đứng đầu trong đó 8 được ngụ ý.
Trả về
true khi thành công; nếu không, false khi không thành công.

ParseInt

bool ParseInt(
  const char *str,
  uint64_t & output
)

Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 64 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho số nguyên cần phân tích cú pháp.
[out] output
Tham chiếu đến bộ nhớ dành cho số nguyên 64 bit chưa ký mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
Trả về
true khi thành công; nếu không, false khi không thành công.

ParseInt

bool ParseInt(
  const char *str,
  uint32_t & output
)

Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 32 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho số nguyên cần phân tích cú pháp.
[out] output
Tham chiếu đến bộ nhớ lưu trữ cho số nguyên 32 bit chưa ký mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
Trả về
true khi thành công; nếu không, false khi không thành công.

ParseInt

bool ParseInt(
  const char *str,
  int32_t & output
)

Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 32 bit có dấu, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho số nguyên cần phân tích cú pháp.
[out] output
Tham chiếu đến bộ nhớ dành cho số nguyên 32 bit đã ký mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
Trả về
true khi thành công; nếu không, false khi không thành công.

ParseInt

bool ParseInt(
  const char *str,
  uint16_t & output
)

Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 16 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho số nguyên cần phân tích cú pháp.
[out] output
Tham chiếu đến bộ nhớ dành cho số nguyên 16 bit chưa ký mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
Trả về
true khi thành công; nếu không, false khi không thành công.

ParseInt

bool ParseInt(
  const char *str,
  int16_t & output
)

Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 16 bit có dấu, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho số nguyên cần phân tích cú pháp.
[out] output
Tham chiếu đến bộ nhớ dành cho số nguyên 16 bit đã ký mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
Trả về
true khi thành công; nếu không, false khi không thành công.

ParseInt

bool ParseInt(
  const char *str,
  uint8_t & output
)

Phân tích cú pháp và chuyển đổi một chuỗi được diễn giải dưới dạng giá trị thập phân thành số nguyên 8 bit chưa ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho số nguyên cần phân tích cú pháp.
[out] output
Tham chiếu đến bộ nhớ dành cho số nguyên 8 bit chưa ký mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
Trả về
true khi thành công; nếu không, false khi không thành công.

ParseNodeId

bool ParseNodeId(
  const char *str,
  uint64_t & nodeId
)

Phân tích cú pháp mã nhận dạng nút Weave ở dạng văn bản.

Hàm ParseNodeId() chấp nhận một id nút 64 bit được cung cấp ở định dạng hex (có hoặc không có số '0x' ở đầu) hoặc các từ 'any' hoặc 'all' được hiểu là có nghĩa là ID nút bất kỳ (0xFFFFFFFFFFFFFF).

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng giá trị NULL có chứa mã nhận dạng nút để phân tích cú pháp.
[out] output
Tham chiếu đến một giá trị uint64_t, trong đó giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
Trả về
true nếu giá trị được phân tích cú pháp thành công; false nếu không phân tích cú pháp.

ParseSubnetId

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

Phân tích cú pháp và cố gắng chuyển đổi một chuỗi thành mã nhận dạng mạng con 16 bit chưa ký, hiểu chuỗi là hệ thập lục phân.

Thông tin chi tiết
Các tham số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho mã nhận dạng mạng con, có định dạng là hệ thập lục phân, để phân tích cú pháp.
[in,out] subnetId
Tham chiếu đến bộ nhớ dành cho số nguyên 16 bit chưa ký mà giá trị mã nhận dạng mạng con đã phân tích cú pháp sẽ được lưu trữ khi thành công.
Trả về
true khi thành công; nếu không, false khi không thành công.

PrintOptionHelp

void PrintOptionHelp(
  OptionSet *optSets[],
  FILE *s
)

In văn bản trợ giúp cho danh sách các tuỳ chọn được chỉ định đến một luồng.

Thông tin chi tiết
Các tham số
[in] optSets
Danh sách con trỏ đến cấu trúc OptionSet chứa văn bản trợ giúp cần in.
[in] s
Luồng TỆP mà bạn sẽ in văn bản trợ giúp.

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
)