NetBurner 3.5.6
PDF Version
argparse.h
1#ifndef __ARGPARSE_H
2#define __ARGPARSE_H
3/*NB_REVISION*/
4
5/*NB_COPYRIGHT*/
6
7#include <stdint.h>
8#include <basictypes.h>
9#include <buffers.h>
10
11class ArgParser {
12public:
13 struct ParseVal {
14 bool isFlag: 1;
15 bool isOptional: 1;
16 bool isPositional: 1;
17 ParseVal(bool isFlag = false, bool isOptional = true, bool isPositional = false);
18 virtual int Parse(char *arg, int argLen) = 0;
19 };
20
21 struct Parse_int : public ParseVal {
22 int val;
23 Parse_int(int defVal, bool isOptional = true);
24 virtual int Parse(char *arg, int argLen);
25 };
26
27 struct Parse_uint : public ParseVal {
28 unsigned val;
29 int base;
30 Parse_uint(unsigned defVal, int base = 0, bool isOptional = true);
31 virtual int Parse(char *arg, int argLen);
32 };
33
34 struct Parse_string : public ParseVal {
35 char *buf;
36 unsigned bufLen;
37 bool parsed;
38 Parse_string(char *buf, unsigned bufLen, bool isOptional = true);
39 virtual int Parse(char *arg, int argLen);
40 };
41
42 struct Parse_bool : public ParseVal {
43 bool val;
44 Parse_bool(bool defVal, bool isOptional = true);
45 virtual int Parse(char *arg, int argLen);
46 };
47
48 struct Parse_flag : public ParseVal {
49 bool val;
50 char flagChar;
51 Parse_flag(char flagChar);
52 virtual int Parse(char *arg, int argLen);
53 };
54private:
55 uint8_t bNumUnordered;
56 uint8_t bNumPositional;
57 ParseVal **parseList;
58public:
59 ArgParser(uint8_t num_unordered, uint8_t num_positional, ParseVal **parseArgs);
60
61 static int GetArg(fifo_buffer_storage &args, char *argBuf, int bufLen);
62
63 int Parse(fifo_buffer_storage &args, char *argBuf, int bufLen);
64};
65
66#endif /* ----- #ifndef __ARGPARSE_H ----- */
NetBurner Buffers API.
FIFO buffer storage using linked pool buffers.
Definition buffers.h:443