nl::ArgParser

Tóm tắt

Liệt kê

OptionArgumentType enum
Xác định các yêu cầu đối với đố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 không tuỳ chọn còn lại.
OptionHandlerFunct)(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg) typedef
bool(*
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 các hàm xử lý để xử lý từng tuỳ chọn và đối số không có 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 được đặ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ố từ 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ã nhận dạng 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 cho sẵn ở 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à cố gắng 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à cố gắng 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à cố gắng chuyển đổi một chuỗi thành số nguyên 32 bit đã 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, uint64_t & output)
bool
Phân tích cú pháp và cố gắng chuyển đổi một chuỗi được hiểu là 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à cố gắng chuyển đổi một chuỗi được hiểu là 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à cố gắng chuyển đổi một chuỗi được hiểu là 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à cố gắng chuyển đổi một chuỗi được hiểu là 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à cố gắng chuyển đổi một chuỗi được hiểu là 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à cố gắng chuyển đổi một chuỗi được hiểu là 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ý, diễn giải chuỗi đó dưới dạng số 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 tới 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 cung cấp 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 một 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.

Liệt kê

OptionArgumentType

 OptionArgumentType

Xác định các yêu cầu đối với đố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 không tuỳ chọn còn lại.

OptionHandlerFunct

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

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ố.

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

Mặc định là một con trỏ trong 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 diễn ra.

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

Chi tiết
Tham số
[in] msg
Thư sẽ được in.

Các ứng dụng phải gọi thông 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 các hàm xử lý để xử lý từng tuỳ chọn và đối số không có 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 được cung cấp. Hàm này hỗ trợ cả cá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).

Chi tiết
Tham số
[in] progName
Tên của chương trình hoặc ngữ cảnh trong đó các đối số đang được phân tích cú pháp. Chuỗi này sẽ được dùng để thêm tiền tố cho thông báo lỗi và cảnh báo.
[in] argc
Số lượng đối số cần phân tích cú pháp, cộng với 1.
[in] argv
Một mảng 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 giá trị được chỉ định cho argc và argv[argc] phải được đặt thành NULL. Phân tích cú pháp đối số bắt đầu bằng phần tử mảng second (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 tuỳ 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ỏ 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 với các đối số không phải tuỳ chọn còn lại . 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, ParseArgs() sẽ báo cáo lỗi nếu có bất kỳ đối số nào không phải là lựa chọn.
[in] ignoreUnknown
Nếu là true, hãy tự động bỏ qua mọi tuỳ chọn không nhận dạng được.
Trả về
true nếu tất 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 một tuỳ chọn không được nhận dạng hoặc nếu một trong các chức năng của trình xử lý bị lỗi (tức là trả về false).

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 của trình xử lý. ParseArgs() xử lý các đối số tuỳ chọn theo thứ tự đã cho, gọi hàm xử lý tương ứng cho mỗi tuỳ chọn được công nhận. Sau khi tất cả các tuỳ chọn đã được phân tích cú pháp, một hàm riêng biệt không phải tuỳ chọn (nonOptArgHandler) sẽ được gọi một lần để xử lý mọi đối số còn lại.

BỘ LỰA CHỌN

OptionSet chứa một tập hợp các định nghĩa tuỳ chọn cùng với con trỏ tới một hàm của trình xử lý. Hàm này sẽ được gọi khi gặp một trong các tuỳ chọn liên quan. Các nhóm lựa chọn cũng chứa văn bản trợ giúp mô tả cú pháp và mục đích của mỗi lựa chọn (xem phần OPTION TRỢ GIÚP bên dưới). Tập hợp lựa chọn được thiết kế để cho phép tạo tập hợp các tuỳ chọn có liên quan có thể sử dụng lại. Việc này giúp đơn giản hoá quá trình cần thiết để duy trì nhiều ứng dụng chấp nhận những tuỳ chọn tương tự nhau (ví dụ: các ứng dụng kiểm thử).

Có hai mẫu để xác định OptionSetsone có thể khởi tạo một thực thể của chính cấu trúc OptionSet, ví dụ: dưới dạng một lớp toàn cục tĩnh hoặc lớp con OptionSetBase và cung cấp một hàm khởi tạo. Hàm 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 các OptionSets được truyề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 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 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 tuỳ chọn, một mã nhận dạng số nguyên dùng để xác định tuỳ chọn và liệu tuỳ chọn đó có mong đợi/cho phép đối số hay không. Điểm kết thúc 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 }
};

IDS

Mã tuỳ chọn 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, do đó có thể được sử dụng lại trên các OptionSet khác nhau (tuy nhiên, hãy xem TÙY CHỌN NGẮN bên dưới). Quy ước chung là bắt đầu đánh số mã lựa chọn ở mức 1000, tuy nhiên, bất kỳ số nào > 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.

TÙY CHỌN NGẮN

Không giống như getopt_long(3), ParseArgs() không lấy một chuỗi riêng 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ị id nằm trong khoảng ký tự ASCII đồ hoạ sẽ cho phép sử dụng ký tự đó dưới dạng tuỳ chọn ngắn gọn.

ParseArgs() yêu cầu các ký tự lựa chọn ngắn là duy nhất trên tất cả OptionSets. Do đó, bạn không nên sử dụng tuỳ chọn ngắn cho bất kỳ OptionSet nào được chia sẻ giữa các chương trình do khả năng xảy ra xung đột đáng kể. Bạn có thể sử dụng lại các ký tự tùy chọn ngắn trong một OptionSet để cho phép tạo tên tùy chọn bí danh 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 quan. Hàm PrintOptionHelp() sử dụng các chuỗi này để 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 sẽ bao gồm một 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 đó sẽ được đặt trước tên dài chính. Để đảm bảo tính nhất quán, các dòng cú pháp được thụt đầu dòng 2 dấu cách, còn các dòng mô tả được thụt lề 7 dấu cách. Một dòng trống duy nhất sau mỗi nội dung mô tả về lựa chọn, bao gồm cả dòng 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";

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

OptionSet 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() sử dụng HelpGroupName làm tiêu đề mục trong dữ liệu đầu ra về mức sử dụng đã tạo. Nếu nhiều OptionSets có cùng HelpGroupName, PrintOptionHelp() sẽ in trợ giúp tuỳ chọn cho các OptionSets 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 được đặt tên.

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

Chi tiết
Tham số
[in] progName
Tên của chương trình hoặc ngữ cảnh trong đó các đối số đang được phân tích cú pháp. Chuỗi này sẽ được dùng để thêm tiền tố cho thông báo lỗi và cảnh báo.
[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 tuỳ 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ỏ 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 với các đối số không phải tuỳ chọn còn lại . 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, ParseArgs() sẽ báo cáo lỗi nếu có bất kỳ đối số nào không phải là lựa chọn.
[in] ignoreUnknown
Nếu là true, hãy tự động bỏ qua mọi tuỳ chọn không nhận dạng được.
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 được chỉ định chưa được đặt; false nếu một tuỳ chọn không được nhận dạng, nếu một trong các chức năng của trình xử lý bị lỗi (ví dụ: trả về giá trị false) 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ố từ một chuỗi đã cho.

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

Chi tiết
Tham số
[in] progName
Tên của chương trình hoặc ngữ cảnh trong đó các đối số đang được phân tích cú pháp. Chuỗi này sẽ được dùng để thêm tiền tố cho thông báo lỗi và cảnh báo.
[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 tuỳ 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ỏ 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 với các đối số không phải tuỳ chọn còn lại . 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, ParseArgs() sẽ báo cáo lỗi nếu có bất kỳ đối số nào không phải là lựa chọn.
[in] ignoreUnknown
Nếu là true, hãy tự động bỏ qua mọi tuỳ chọn không nhận dạng được.
Trả về
true nếu tất 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 một tuỳ chọn không được nhận dạng, nếu một trong các chức năng của trình xử lý bị lỗi (ví dụ: trả về giá trị false) hoặc nếu xảy ra lỗi nội bộ.

Cú pháp của chuỗi đầu vào tương tự như cú pháp lệnh shell trong Unix, nhưng có lược đồ trích dẫn được đơn giản hoá. Cụ thể:

  • Đối số được phân tách bằng khoảng trắng, trừ phi khoảng trắng được đặt trong cặp dấu ngoặc kép hoặc ký tự thoát.
  • Dấu gạch chéo ngược thoát khỏi ký tự sau, khiến ký tự này được coi là một ký tự thông thường. Bản thân dấu gạch chéo ngược bị xoá.
  • Dấu ngoặc đơn hoặc dấu ngoặc kép bắt đầu/kết thúc chuỗi con trong dấu ngoặc kép. Trong chuỗi con, các ký tự đặc biệt duy nhất là dấu gạch chéo ngược (thoát khỏi ký tự tiếp theo) và dấu ngoặc kép cuối tương ứng. Các ký tự 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".

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL biểu thị giá trị cần phân tích cú pháp.
[out] output
Thông tin tham chiếu đến dung lượng lưu trữ của boolean mà giá trị đã phân tích cú pháp sẽ được lưu trữ khi thành công.
Trả về
đúng về thành công; nếu không, giá trị sẽ là "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ã nhận dạng vải Weave ở dạng văn bản.

Hàm ParseFabricId() chấp nhận mã nhận dạng vải 64 bit được cung cấp ở định dạng hex, có hoặc không có tiền tố '0x'.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL (Rỗng) chứa mã nhận dạng vải để phân tích cú pháp.
[out] output
Tham chiếu đến giá trị lvalue 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 true, hãy cho phép phân tích cú pháp các 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.

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 cho sẵn ở 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ỳ đâu trong chuỗi dữ liệu nhập cũng bị bỏ qua.

Chi tiết
Tham số
[in] hexStr
Con trỏ trỏ đến chuỗi để phân tích cú pháp.
[in] strLen
Số ký tự trong hexStr cần phân tích cú pháp.
[in] outBuf
Con trỏ trỏ đến vùng đệm mà các byte phân tích cú pháp sẽ được lưu trữ.
[in] outBufSize
Kích thước của vùng đệm do outBuf trỏ đến.
[out] outDataLen
Tham chiếu đến một số nguyên sẽ nhận tổng số byte đã 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.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL (Rỗng) 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.

ParseInt

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

Phân tích cú pháp và cố gắng 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ở.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL biểu thị số nguyên cần phân tích cú pháp.
[out] output
Thông tin 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à theo đó chuỗi sẽ được diễn giải và phân tích cú pháp. Nếu là 0 hoặc 16, chuỗi có thể là hệ thập lục phân và có tiền tố là "0x". Nếu không, số 0 được ngụ ý là 10 trừ khi gặp số 0 đứng đầu trong đó số 8 được ngụ ý.
Trả về
đúng về thành công; nếu không, giá trị sẽ là "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à cố gắng 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ở.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL biểu thị số nguyên cần phân tích cú pháp.
[out] output
Thông tin tham chiếu đến bộ nhớ của 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à theo đó chuỗi sẽ được diễn giải và phân tích cú pháp. Nếu là 0 hoặc 16, chuỗi có thể là hệ thập lục phân và có tiền tố là "0x". Nếu không, số 0 được ngụ ý là 10 trừ khi gặp số 0 đứng đầu trong đó số 8 được ngụ ý.
Trả về
đúng về thành công; nếu không, giá trị sẽ là "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à cố gắng chuyển đổi một chuỗi thành số nguyên 32 bit đã ký, áp dụng cách diễn giải phù hợp dựa trên tham số cơ sở.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL biểu thị số nguyên cần phân tích cú pháp.
[out] output
Thông tin 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à theo đó chuỗi sẽ được diễn giải và phân tích cú pháp. Nếu là 0 hoặc 16, chuỗi có thể là hệ thập lục phân và có tiền tố là "0x". Nếu không, số 0 được ngụ ý là 10 trừ khi gặp số 0 đứng đầu trong đó số 8 được ngụ ý.
Trả về
đúng về thành công; nếu không, giá trị sẽ là "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à cố gắng chuyển đổi một chuỗi được hiểu là 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ở.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL biểu thị số nguyên cần phân tích cú pháp.
[out] output
Thông tin 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ề
đúng về thành công; nếu không, giá trị sẽ là "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à cố gắng chuyển đổi một chuỗi được hiểu là 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ở.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL biểu thị số nguyên cần phân tích cú pháp.
[out] output
Thông tin tham chiếu đến bộ nhớ của 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ề
đúng về thành công; nếu không, giá trị sẽ là "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à cố gắng chuyển đổi một chuỗi được hiểu là 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ở.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL biểu thị số nguyên cần phân tích cú pháp.
[out] output
Thông tin 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ề
đúng về thành công; nếu không, giá trị sẽ là "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à cố gắng chuyển đổi một chuỗi được hiểu là 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ở.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL biểu thị số nguyên cần phân tích cú pháp.
[out] output
Thông tin 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ề
đúng về thành công; nếu không, giá trị sẽ là "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à cố gắng chuyển đổi một chuỗi được hiểu là 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ở.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL biểu thị số nguyên cần phân tích cú pháp.
[out] output
Thông tin 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ề
đúng về thành công; nếu không, giá trị sẽ là "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à cố gắng chuyển đổi một chuỗi được hiểu là 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ở.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL biểu thị số nguyên cần phân tích cú pháp.
[out] output
Thông tin 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ề
đúng về thành công; nếu không, giá trị sẽ là "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ã nhận dạng nút 64 bit được cung cấp ở định dạng hex (có hoặc không có chữ "0x" ở đầu) hoặc từ "bất kỳ" hoặc 'tất cả' được hiểu là mã nút Bất kỳ (0xFFFFFFFFFFFFFFFF).

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL (Rỗng) chứa mã nút cần phân tích cú pháp.
[out] output
Tham chiếu đến giá trị lvalue 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.

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ý, diễn giải chuỗi đó dưới dạng số thập lục phân.

Chi tiết
Tham số
[in] str
Con trỏ trỏ đến chuỗi C kết thúc bằng NULL (Rỗng) biểu thị mã 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
Thông tin 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ề
đúng về thành công; nếu không, giá trị sẽ là "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 tới một luồng.

Chi tiết
Tham số
[in] optSets
Danh sách con trỏ đến cấu trúc OptionSet chứa văn bản trợ giúp để 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
)