DPDK
24.07.0
lib
argparse
rte_argparse.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2024 HiSilicon Limited
3
*/
4
5
#ifndef RTE_ARGPARSE_H
6
#define RTE_ARGPARSE_H
7
30
#include <stdbool.h>
31
#include <stdint.h>
32
33
#include <
rte_bitops.h
>
34
#include <rte_compat.h>
35
36
#ifdef __cplusplus
37
extern
"C"
{
38
#endif
39
43
enum
rte_argparse_flag
{
44
/*
45
* Bits 0-1: represent the argument whether has value.
46
*/
47
49
RTE_ARGPARSE_ARG_NO_VALUE
=
RTE_SHIFT_VAL64
(1, 0),
51
RTE_ARGPARSE_ARG_REQUIRED_VALUE
=
RTE_SHIFT_VAL64
(2, 0),
53
RTE_ARGPARSE_ARG_OPTIONAL_VALUE
=
RTE_SHIFT_VAL64
(3, 0),
54
55
56
/*
57
* Bits 2-9: represent the value type which used when autosave
58
*/
59
61
RTE_ARGPARSE_ARG_VALUE_INT
=
RTE_SHIFT_VAL64
(1, 2),
63
RTE_ARGPARSE_ARG_VALUE_U8
=
RTE_SHIFT_VAL64
(2, 2),
65
RTE_ARGPARSE_ARG_VALUE_U16
=
RTE_SHIFT_VAL64
(3, 2),
67
RTE_ARGPARSE_ARG_VALUE_U32
=
RTE_SHIFT_VAL64
(4, 2),
69
RTE_ARGPARSE_ARG_VALUE_U64
=
RTE_SHIFT_VAL64
(5, 2),
71
RTE_ARGPARSE_ARG_VALUE_MAX
=
RTE_SHIFT_VAL64
(6, 2),
72
73
79
RTE_ARGPARSE_ARG_SUPPORT_MULTI
=
RTE_BIT64
(10),
80
84
RTE_ARGPARSE_ARG_RESERVED_FIELD
=
RTE_GENMASK64
(63, 48),
85
};
86
90
struct
rte_argparse_arg
{
97
const
char
*
name_long
;
104
const
char
*
name_short
;
105
107
const
char
*
help
;
108
116
void
*
val_saver
;
127
void
*
val_set
;
128
130
uint64_t
flags
;
131
};
132
147
typedef
int (*
rte_arg_parser_t
)(uint32_t index,
const
char
*value,
void
*opaque);
148
152
struct
rte_argparse
{
154
const
char
*
prog_name
;
156
const
char
*
usage
;
158
const
char
*
descriptor
;
160
const
char
*
epilog
;
162
bool
exit_on_error
;
164
rte_arg_parser_t
callback
;
166
void
*
opaque
;
168
void
*reserved[16];
170
struct
rte_argparse_arg
args[];
171
};
172
173
#define ARGPARSE_ARG_END() { NULL }
174
191
__rte_experimental
192
int
rte_argparse_parse
(
struct
rte_argparse
*obj,
int
argc,
char
**argv);
193
210
__rte_experimental
211
int
rte_argparse_parse_type
(
const
char
*str, uint64_t val_type,
void
*val);
212
213
#ifdef __cplusplus
214
}
215
#endif
216
217
#endif
/* RTE_ARGPARSE_H */
rte_argparse_arg::flags
uint64_t flags
Definition:
rte_argparse.h:130
rte_argparse::usage
const char * usage
Definition:
rte_argparse.h:156
RTE_ARGPARSE_ARG_VALUE_U32
Definition:
rte_argparse.h:67
rte_argparse_flag
rte_argparse_flag
Definition:
rte_argparse.h:43
rte_argparse
Definition:
rte_argparse.h:152
RTE_ARGPARSE_ARG_REQUIRED_VALUE
Definition:
rte_argparse.h:51
rte_argparse_arg::name_long
const char * name_long
Definition:
rte_argparse.h:97
rte_argparse::descriptor
const char * descriptor
Definition:
rte_argparse.h:158
rte_argparse::exit_on_error
bool exit_on_error
Definition:
rte_argparse.h:162
RTE_ARGPARSE_ARG_SUPPORT_MULTI
Definition:
rte_argparse.h:79
RTE_ARGPARSE_ARG_VALUE_INT
Definition:
rte_argparse.h:61
RTE_ARGPARSE_ARG_RESERVED_FIELD
Definition:
rte_argparse.h:84
RTE_ARGPARSE_ARG_VALUE_MAX
Definition:
rte_argparse.h:71
rte_argparse_arg::name_short
const char * name_short
Definition:
rte_argparse.h:104
rte_argparse_arg::val_saver
void * val_saver
Definition:
rte_argparse.h:116
RTE_SHIFT_VAL64
#define RTE_SHIFT_VAL64(val, nr)
Definition:
rte_bitops.h:60
rte_argparse_parse_type
__rte_experimental int rte_argparse_parse_type(const char *str, uint64_t val_type, void *val)
rte_argparse::prog_name
const char * prog_name
Definition:
rte_argparse.h:154
RTE_ARGPARSE_ARG_OPTIONAL_VALUE
Definition:
rte_argparse.h:53
RTE_GENMASK64
#define RTE_GENMASK64(high, low)
Definition:
rte_bitops.h:83
RTE_ARGPARSE_ARG_VALUE_U16
Definition:
rte_argparse.h:65
rte_argparse::epilog
const char * epilog
Definition:
rte_argparse.h:160
rte_argparse_arg
Definition:
rte_argparse.h:90
RTE_ARGPARSE_ARG_VALUE_U64
Definition:
rte_argparse.h:69
rte_argparse_parse
__rte_experimental int rte_argparse_parse(struct rte_argparse *obj, int argc, char **argv)
rte_argparse_arg::val_set
void * val_set
Definition:
rte_argparse.h:127
rte_arg_parser_t
int(* rte_arg_parser_t)(uint32_t index, const char *value, void *opaque)
Definition:
rte_argparse.h:147
rte_bitops.h
RTE_ARGPARSE_ARG_VALUE_U8
Definition:
rte_argparse.h:63
RTE_BIT64
#define RTE_BIT64(nr)
Definition:
rte_bitops.h:32
RTE_ARGPARSE_ARG_NO_VALUE
Definition:
rte_argparse.h:49
rte_argparse_arg::help
const char * help
Definition:
rte_argparse.h:107
rte_argparse::opaque
void * opaque
Definition:
rte_argparse.h:166
rte_argparse::callback
rte_arg_parser_t callback
Definition:
rte_argparse.h:164
Generated by
1.8.13