Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

nl::ArgParser (Quảng cáo của Google)

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 tùy 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 bắt buộc còn lại.
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 tùy chọn dòng lệnh.

Biến

PrintArgError = DefaultPrintArgError)(const char *msg,...)
void(*
Con trỏ tới hàm dùng để in lỗi xảy ra trong quá trình phân tích cú pháp đối số.
gActiveOptionSets = NULL
Danh sách các OptionSet đã 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 kết với 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 đối số kiểu dòng lệnh, gọi các hàm xử lý để xử lý từng tùy chọn và đối số không tùy 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 đố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 đối số từ một chuỗi nhất định.
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 một 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 đã cho ở dạng thập lục phân.
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 không dấu 64 bit, áp dụng cách diễn giải thích 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 không dấu 32 bit, áp dụng cách diễn giải thích 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 có dấu 32 bit, áp dụng cách diễn giải thích hợp dựa trên thông 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 diễn giải dưới dạng giá trị thập phân thành số nguyên 64 bit không dấu, áp dụng cách diễn giải thích hợp dựa trên thông 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 diễn giải dưới dạng giá trị thập phân thành số nguyên không dấu 32 bit, áp dụng cách diễn giải thích 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 diễn giải dưới dạng giá trị thập phân thành số nguyên có dấu 32 bit, áp dụng cách diễn giải thích hợp dựa trên thông 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 diễn giải dưới dạng giá trị thập phân thành số nguyên không dấu 16 bit, áp dụng cách diễn giải thích hợp dựa trên thông 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 diễn giải dưới dạng giá trị thập phân thành số nguyên có dấu 16 bit, áp dụng cách diễn giải thích 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 diễn giải dưới dạng giá trị thập phân thành số nguyên không dấu 8 bit, áp dụng cách diễn giải thích 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ột mã 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ột mã mạng con chưa ký 16 bit, 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 tùy chọn được chỉ định cho 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::Trợ giúp

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

nl::ArgParser::OptionSetBase

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

Cấu trúc

nl::ArgParser::OptionDef

Xác định tùy chọn dòng lệnh.

nl::ArgParser::OptionSet

Xác định nhóm các tùy chọn dòng lệnh có liên quan và có thể sử dụng lại.

Bảng liệt kê

Loại tùy chọn

 OptionArgumentType

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

Typedef

Không bắt buộc xử lý

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 bắt buộc còn lại.

Trình xử lý tùy chọn

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 tùy chọn dòng lệnh.

Biến

Lỗi PrintArg

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

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

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

Giá trị mặc định là con trỏ tới hàm DefaultPrintArgError().

gActiveOptionSets

OptionSet ** gActiveOptionSets = NULL

Danh sách các OptionSet đã 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().

Hàm

Đếm tất cả tùy chọn

size_t CountAllOptions(
  OptionSet *optSets[]
)

Đếm tất cả tùy chọn

size_t CountAllOptions(
  OptionSet **optSets
)

Bộ đếm tùy chọn

size_t CountOptionSets(
  OptionSet *optSets[]
)

Bộ đếm tùy chọn

size_t CountOptionSets(
  OptionSet **optSets
)

Lỗi Mặc định

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

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

Thông tin chi tiết
Các thông số
[in] msg
Thư cần in.

Các ứng dụng nên gọi con trỏ chức năng PrintArgERRORS chứ không 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
)

Thực hiện các tùy chọn

struct option * MakeLongOptions(
  OptionSet **optSets
)

Tạo video ngắn

char * MakeShortOptions(
  OptionSet **optSets
)

MakeUniqueHelpGroupNamesList (Danh sách tạo nhóm duy nhất trợ giúp)

const char ** MakeUniqueHelpGroupNamesList(
  OptionSet *optSets[]
)

Phô mai 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 đối số kiểu dòng lệnh, gọi các hàm xử lý để xử lý từng tùy chọn và đối số không tùy 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 tùy chọn được cung cấp. Hàm hỗ trợ cả tùy chọn dài (tối ưu hóa) và ngắn (-o) và triển khai cú pháp tùy chọn giống như hàm GNU getopt_long(3).

Thông tin chi tiết
Các thông số
[in] progName
Tên chương trình hoặc bối cảnh mà các đối số đang được phân tích cú pháp. Chuỗi này sẽ được dùng để tạo tiền tố cho thông báo lỗi và cảnh báo.
[in] argc
Số lượng đối số cần đượ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. 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ỏ tới các cấu trúc OptionSet xác định các tùy chọn pháp lý. Danh sách được cung cấp phải được kết thúc bằng NULL.
[in] nonOptArgHandler
Con trỏ đến một hàm sẽ được gọi sau khi phân tích cú pháp tùy chọn hoàn tất với mọi đối số không tùy chọn còn lại . Hàm này được gọi bất kể đối số có còn lại hay không. Nếu giá trị NULL được chuyển, ParseArgs() sẽ báo cáo lỗi nếu có bất kỳ đối số không tùy chọn nào.
[in] ignoreUnknown
Nếu đúng, hãy im lặng nếu bạn bỏ qua bất kỳ tùy chọn nào không được nhận dạng.
Trả về
true nếu tất cả các tùy chọn và đối số không tùy 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 tùy chọn hoặc nếu một trong các hàm của trình xử lý không thành công (tức là trả về false).

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

BỘ GÓI LỰA CHỌN

OptionSet chứa một tập hợp các định nghĩa tùy 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 tùy chọn liên quan. Các tập hợp 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 GÓI TÙY CHỈNH bên dưới). Tập hợp tùy chọn được thiết kế để cho phép tạo các bộ sưu tập có thể sử dụng lại của các tùy chọn có liên quan. Điều này giúp đơn giản hóa nỗ lực cần thiết để duy trì nhiều ứng dụng chấp nhận các tùy chọn tương tự nhau (ví dụ: các ứng dụng thử nghiệm).

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

Danh sách các OptionSet được chuyển đến hàm ParseArgs() dưới dạng một mảng con trỏ kết thúc bằng NULL. Ví dụ:

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))
    {
        ...
    }
}

CÁC KHIẾM KHUYẾT TÙY CHỌN

Các tùy chọn được xác định bằng cấu trúc OptionDef. Các định nghĩa về tùy 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 tùy chọn, mã nhận dạng số nguyên được dùng để xác định tùy chọn và liệu tùy chọn có chấp nhận/cho phép đối số hay không. Phần cuối của mảng tùy chọn sẽ được báo hiệu bằng trường Tên NULL. Ví dụ:

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

Mã TÙY CHỌN

Id tùy chọn xác định các tùy chọn đối với mã xử lý các mã đó (hàm OptionHandler). Mã tùy 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 Nhóm tùy chọn khác nhau (tuy nhiên, bạn có thể xem các TÙY CHỌN NGẮN HẠN ở bên dưới). Quy ước chung là bắt đầu mã tuỳ chọn đánh số ở số 1000. Tuy nhiên, bạn có thể dùng số 128 và số 128. Bạn có thể tạo tùy chọn bí danh bằng cách sử dụng cùng một mã tùy chọn có các tên tùy chọn khác nhau.

CÁC LỰA CHỌN NGỪNG

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ự tùy chọn ngắn. Thay vào đó, bất kỳ tùy chọn nào có giá trị id nằm trong dải ký tự ASCII đồ họa sẽ cho phép sử dụng ký tự đó làm tùy chọn ngắn.

ParseArgs() yêu cầu các ký tự tùy chọn ngắn phải là duy nhất trên all OptionSets. Do đó, bạn không nên sử dụng các tùy chọn ngắn cho bất kỳ Cài đặt tùy chọn nào được chia sẻ trên các chương trình do có nhiều khả năng xảy ra va chạm. Bạn có thể sử dụng lại các ký tự tùy chọn ngắn trong một OptionSet duy nhất để cho phép tạo tên tùy chọn dài của bí danh.

GIÚP 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 tùy chọn được liên kết. Những chuỗi này được hàm PrintOptionHelp() sử dụng để tạo thông tin sử dụng tùy chọn.

Theo quy ước, chuỗi trợ giúp tùy chọn bao gồm một ví dụ về cú pháp sau phần mô tả bằng văn bản về tùy chọn. Nếu tùy chọn có phiên bản ngắn hoặc tên bí danh, thì tùy chọn này 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 lề 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 sẽ tuân theo từng nội dung mô tả tùy chọn, bao gồm cả dòng cuối cùng.

Ví dụ:

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 HỖ TRỢ TÙY CHỌN

OptionSets chứa một chuỗi HelpGroupName dùng để nhóm các tùy chọn với nhau trong dữ liệu đầu ra trợ giúp. Hàm PrintOptionHelp() sử dụng HelpGroupName làm tiêu đề mục trong dữ liệu sử dụng đã tạo. Nếu nhiều OptionSets có cùng một GroupGroupName, PrintOptionHelp() sẽ in trợ giúp tùy chọn cho các OptionSets khác nhau cùng nhau trong một tiêu đề phần chung.

Phô mai ParseArgs

bool ParseArgs(
  const char *progName,
  int argc,
  char *argv[],
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler
)

Phô mai ParseArgs

bool ParseArgs(
  const char *progName,
  int argc,
  char *argv[],
  OptionSet *optSets[]
)

Phô mai 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 đối số từ một biến môi trường đã đặt tên.

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

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

Phô mai ParseArgsFromEnvVar

bool ParseArgsFromEnvVar(
  const char *progName,
  const char *varName,
  OptionSet *optSets[]
)

Phô mai ParseArgsFromEnvVar

bool ParseArgsFromEnvVar(
  const char *progName,
  const char *varName,
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler
)

Phô mai 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 đối số từ một chuỗi nhất định.

ParseArgsFromString() tách 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 cách sử dụng hàm ParseArgs().

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

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

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

Ví dụ:

--listen --count 10 --sw-version '1.0 (DEVELOPMENT)' "--hostname=nest.com"

Phô mai ParseArgsFromString

bool ParseArgsFromString(
  const char *progName,
  const char *argStr,
  OptionSet *optSets[],
  NonOptionArgHandlerFunct nonOptArgHandler
)

Phô mai ParseArgsFromString

bool ParseArgsFromString(
  const char *progName,
  const char *argStr,
  OptionSet *optSets[]
)

Phân tích cú pháp Boolean

bool ParseBoolean(
  const char *str,
  bool & output
)

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

Hàm này chấp nhận các giá trị nhập vào sau đây (không phân biệt chữ hoa chữ thường): "true", "yes", "t", "y", "1", "false";"n&hl=vi; &

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

Mã 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 vải 64 bit được cung cấp ở định dạng thập lục phân, có hoặc không có mọi # 39; 0x\39 hàng đầu.

Thông tin chi tiết
Các thông số
[in] str
Con trỏ tới một chuỗi C kết thúc bằng NULL chứa mã vải để phân tích cú pháp.
[out] output
Tham chiếu đến giá trị uint64_t, trong đó giá trị được phân tích cú pháp sẽ được lưu trữ thành công.
[in] allowReserved
Nếu đúng, hãy cho phép phân tích cú pháp mã 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 được phân tích cú pháp.

Phô mai 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 ở dạng thập lục phân.

ParseHexString() dự kiến đầu vào sẽ ở dạng các cặp số thập lục phân (chữ hoa hoặc chữ thường). Các cặp hệ thập lục phân có thể tùy ý được phân tách 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 cứ đâu trong chuỗi đầu vào đều bị bỏ qua.

Thông tin chi tiết
Các thông số
[in] hexStr
Con trỏ đến chuỗi để phân tích cú pháp.
[in] strLen
Số ký tự trong hexStr để phân tích cú pháp.
[in] outBuf
Con trỏ đến một vùng đệm để lưu các byte phân tích cú pháp.
[in] outBufSize
Kích thước của bộ đệm mà outBuf trỏ đến.
[out] outDataLen
Tham chiếu đến 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 để lưu giữ số byte đã cho, outDataLen sẽ được đặt 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ỏ.

ParseIPĐịa chỉ

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 thông số
[in] str
Con trỏ tới một chuỗi C kết thúc bằng NULL chứa địa chỉ để 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 được phân tích cú pháp.

Phân tích cú pháp

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 không dấu 64 bit, áp dụng cách diễn giải thích hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các thông số
[in] str
Con trỏ tới 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ớ cho số nguyên không dấu 64 bit mà giá trị được phân tích cú pháp sẽ được lưu trữ 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 từ 0 hoặc 16, thì chuỗi có thể viết theo hệ thập lục phân, cùng với tiền tố bằng "0x" Nếu không, số 0 được ngụ ý là 10 trừ khi gặp số 0 ở đầu, trong đó có 8 được ngụ ý.
Trả về
đúng về thành công; nếu không thì sai về thất bại.

Phân tích cú pháp

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 không dấu 32 bit, áp dụng cách diễn giải thích hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các thông số
[in] str
Con trỏ tới 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ớ cho số nguyên không dấu 32 bit mà giá trị được phân tích cú pháp sẽ được lưu trữ 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 từ 0 hoặc 16, thì chuỗi có thể viết theo hệ thập lục phân, cùng với tiền tố bằng "0x" Nếu không, số 0 được ngụ ý là 10 trừ khi gặp số 0 ở đầu, trong đó có 8 được ngụ ý.
Trả về
đúng về thành công; nếu không thì sai về thất bại.

Phân tích cú pháp

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 có dấu 32 bit, áp dụng cách diễn giải thích hợp dựa trên thông số cơ sở.

Thông tin chi tiết
Các thông số
[in] str
Con trỏ tới 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ớ cho số nguyên có dấu 32 bit mà giá trị được phân tích cú pháp sẽ được lưu trữ 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 từ 0 hoặc 16, thì chuỗi có thể viết theo hệ thập lục phân, cùng với tiền tố bằng "0x" Nếu không, số 0 được ngụ ý là 10 trừ khi gặp số 0 ở đầu, trong đó có 8 được ngụ ý.
Trả về
đúng về thành công; nếu không thì sai về thất bại.

Phân tích cú pháp

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 diễn giải dưới dạng giá trị thập phân thành số nguyên 64 bit không dấu, áp dụng cách diễn giải thích hợp dựa trên thông số cơ sở.

Thông tin chi tiết
Các thông số
[in] str
Con trỏ tới 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ớ cho số nguyên không dấu 64 bit mà giá trị được phân tích cú pháp sẽ được lưu trữ thành công.
Trả về
đúng về thành công; nếu không thì sai về thất bại.

Phân tích cú pháp

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 diễn giải dưới dạng giá trị thập phân thành số nguyên không dấu 32 bit, áp dụng cách diễn giải thích hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các thông số
[in] str
Con trỏ tới 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ớ cho số nguyên không dấu 32 bit mà giá trị được phân tích cú pháp sẽ được lưu trữ thành công.
Trả về
đúng về thành công; nếu không thì sai về thất bại.

Phân tích cú pháp

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 diễn giải dưới dạng giá trị thập phân thành số nguyên có dấu 32 bit, áp dụng cách diễn giải thích hợp dựa trên thông số cơ sở.

Thông tin chi tiết
Các thông số
[in] str
Con trỏ tới 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ớ cho số nguyên có dấu 32 bit mà giá trị được phân tích cú pháp sẽ được lưu trữ thành công.
Trả về
đúng về thành công; nếu không thì sai về thất bại.

Phân tích cú pháp

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 diễn giải dưới dạng giá trị thập phân thành số nguyên không dấu 16 bit, áp dụng cách diễn giải thích hợp dựa trên thông số cơ sở.

Thông tin chi tiết
Các thông số
[in] str
Con trỏ tới 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ớ cho số nguyên không dấu 16 bit mà giá trị được phân tích cú pháp sẽ được lưu trữ thành công.
Trả về
đúng về thành công; nếu không thì sai về thất bại.

Phân tích cú pháp

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 diễn giải dưới dạng giá trị thập phân thành số nguyên có dấu 16 bit, áp dụng cách diễn giải thích hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các thông số
[in] str
Con trỏ tới 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ớ cho số nguyên có dấu 16 bit mà giá trị được phân tích cú pháp sẽ được lưu trữ thành công.
Trả về
đúng về thành công; nếu không thì sai về thất bại.

Phân tích cú pháp

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 diễn giải dưới dạng giá trị thập phân thành số nguyên không dấu 8 bit, áp dụng cách diễn giải thích hợp dựa trên tham số cơ sở.

Thông tin chi tiết
Các thông số
[in] str
Con trỏ tới 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ớ cho số nguyên không dấu 8 bit mà giá trị được phân tích cú pháp sẽ được lưu trữ thành công.
Trả về
đúng về thành công; nếu không thì sai về thất bại.

Mã phân tích cú pháp

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

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

Hàm ParseNodeId() chấp nhận mã nút 64 bit được cung cấp ở định dạng hex (có hoặc không có & # 39; 0 x # 39); hoặc các từ × 39; bất kỳ # 39; hoặc & # 39; tất cả & # 39; được diễn giải là ý nghĩa của bất kỳ mã nút nào (0xFFFFFFFFFFFF).

Thông tin chi tiết
Các thông số
[in] str
Con trỏ đến một chuỗi C kết thúc bằng NULL chứa mã nút để phân tích cú pháp.
[out] output
Tham chiếu đến giá trị uint64_t, trong đó giá trị được 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 được phân tích cú pháp.

Mã 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ột mã mạng con chưa ký 16 bit, diễn giải chuỗi đó dưới dạng số thập lục phân.

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

Trợ giúp về PrintOption

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

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

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

PutStringWithEmptyLine

void PutStringWithBlankLine(
  FILE *s,
  const char *str
)

PutStringWithNewLine

void PutStringWithNewLine(
  FILE *s,
  const char *str
)

Phân tách

int32_t SplitArgs(
  char *argStr,
  char **& argList,
  char *initialArg
)