DPDK
25.11.0
Toggle main menu visibility
Loading...
Searching...
No Matches
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
29
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_value_required
{
45
RTE_ARGPARSE_VALUE_NONE
,
47
RTE_ARGPARSE_VALUE_REQUIRED
,
49
RTE_ARGPARSE_VALUE_OPTIONAL
,
50
};
51
53
enum
rte_argparse_value_type
{
57
RTE_ARGPARSE_VALUE_TYPE_NONE
= 0,
59
RTE_ARGPARSE_VALUE_TYPE_INT
,
61
RTE_ARGPARSE_VALUE_TYPE_U8
,
63
RTE_ARGPARSE_VALUE_TYPE_U16
,
65
RTE_ARGPARSE_VALUE_TYPE_U32
,
67
RTE_ARGPARSE_VALUE_TYPE_U64
,
69
RTE_ARGPARSE_VALUE_TYPE_STR
,
71
RTE_ARGPARSE_VALUE_TYPE_BOOL
,
73
RTE_ARGPARSE_VALUE_TYPE_CORELIST
,
74
};
75
77
enum
rte_argparse_arg_flags
{
79
RTE_ARGPARSE_FLAG_SUPPORT_MULTI
=
RTE_BIT32
(0),
80
};
81
85
struct
rte_argparse_arg
{
92
const
char
*
name_long
;
99
const
char
*
name_short
;
100
102
const
char
*
help
;
103
109
void
*
val_saver
;
120
void
*
val_set
;
121
123
enum
rte_argparse_value_required
value_required
;
125
enum
rte_argparse_value_type
value_type
;
126
128
uint32_t
flags
;
129
};
130
145
typedef
int (*
rte_arg_parser_t
)(uint32_t index,
const
char
*value,
void
*opaque);
146
150
struct
rte_argparse
{
152
const
char
*
prog_name
;
154
const
char
*
usage
;
156
const
char
*
descriptor
;
158
const
char
*
epilog
;
160
bool
exit_on_error
;
164
bool
ignore_non_flag_args
;
165
/* reserved for future flags/other use */
166
bool
reserved_flags[6];
168
rte_arg_parser_t
callback
;
170
void
*
opaque
;
175
void (*
print_help
)(
const
struct
rte_argparse
*obj);
177
void
*
reserved
[15];
179
struct
rte_argparse_arg
args
[];
180
};
181
182
#define ARGPARSE_ARG_END() { NULL }
183
202
__rte_experimental
203
int
rte_argparse_parse
(
const
struct
rte_argparse
*obj,
int
argc,
char
**argv);
204
216
__rte_experimental
217
void
rte_argparse_print_help
(FILE *stream,
const
struct
rte_argparse
*obj);
218
235
__rte_experimental
236
int
rte_argparse_parse_type
(
const
char
*str,
enum
rte_argparse_value_type
val_type,
void
*val);
237
238
#ifdef __cplusplus
239
}
240
#endif
241
242
#endif
/* RTE_ARGPARSE_H */
rte_argparse_print_help
__rte_experimental void rte_argparse_print_help(FILE *stream, const struct rte_argparse *obj)
rte_argparse_value_required
rte_argparse_value_required
Definition
rte_argparse.h:43
RTE_ARGPARSE_VALUE_OPTIONAL
@ RTE_ARGPARSE_VALUE_OPTIONAL
Definition
rte_argparse.h:49
RTE_ARGPARSE_VALUE_NONE
@ RTE_ARGPARSE_VALUE_NONE
Definition
rte_argparse.h:45
RTE_ARGPARSE_VALUE_REQUIRED
@ RTE_ARGPARSE_VALUE_REQUIRED
Definition
rte_argparse.h:47
rte_argparse_parse
__rte_experimental int rte_argparse_parse(const struct rte_argparse *obj, int argc, char **argv)
rte_argparse_arg_flags
rte_argparse_arg_flags
Definition
rte_argparse.h:77
RTE_ARGPARSE_FLAG_SUPPORT_MULTI
@ RTE_ARGPARSE_FLAG_SUPPORT_MULTI
Definition
rte_argparse.h:79
rte_argparse_parse_type
__rte_experimental int rte_argparse_parse_type(const char *str, enum rte_argparse_value_type val_type, void *val)
rte_arg_parser_t
int(* rte_arg_parser_t)(uint32_t index, const char *value, void *opaque)
Definition
rte_argparse.h:145
rte_argparse_value_type
rte_argparse_value_type
Definition
rte_argparse.h:53
RTE_ARGPARSE_VALUE_TYPE_U16
@ RTE_ARGPARSE_VALUE_TYPE_U16
Definition
rte_argparse.h:63
RTE_ARGPARSE_VALUE_TYPE_CORELIST
@ RTE_ARGPARSE_VALUE_TYPE_CORELIST
Definition
rte_argparse.h:73
RTE_ARGPARSE_VALUE_TYPE_STR
@ RTE_ARGPARSE_VALUE_TYPE_STR
Definition
rte_argparse.h:69
RTE_ARGPARSE_VALUE_TYPE_U64
@ RTE_ARGPARSE_VALUE_TYPE_U64
Definition
rte_argparse.h:67
RTE_ARGPARSE_VALUE_TYPE_INT
@ RTE_ARGPARSE_VALUE_TYPE_INT
Definition
rte_argparse.h:59
RTE_ARGPARSE_VALUE_TYPE_U32
@ RTE_ARGPARSE_VALUE_TYPE_U32
Definition
rte_argparse.h:65
RTE_ARGPARSE_VALUE_TYPE_U8
@ RTE_ARGPARSE_VALUE_TYPE_U8
Definition
rte_argparse.h:61
RTE_ARGPARSE_VALUE_TYPE_BOOL
@ RTE_ARGPARSE_VALUE_TYPE_BOOL
Definition
rte_argparse.h:71
RTE_ARGPARSE_VALUE_TYPE_NONE
@ RTE_ARGPARSE_VALUE_TYPE_NONE
Definition
rte_argparse.h:57
rte_bitops.h
RTE_BIT32
#define RTE_BIT32(nr)
Definition
rte_bitops.h:44
rte_argparse_arg
Definition
rte_argparse.h:85
rte_argparse_arg::value_type
enum rte_argparse_value_type value_type
Definition
rte_argparse.h:125
rte_argparse_arg::value_required
enum rte_argparse_value_required value_required
Definition
rte_argparse.h:123
rte_argparse_arg::flags
uint32_t flags
Definition
rte_argparse.h:128
rte_argparse_arg::val_set
void * val_set
Definition
rte_argparse.h:120
rte_argparse_arg::name_long
const char * name_long
Definition
rte_argparse.h:92
rte_argparse_arg::val_saver
void * val_saver
Definition
rte_argparse.h:109
rte_argparse_arg::help
const char * help
Definition
rte_argparse.h:102
rte_argparse_arg::name_short
const char * name_short
Definition
rte_argparse.h:99
rte_argparse
Definition
rte_argparse.h:150
rte_argparse::epilog
const char * epilog
Definition
rte_argparse.h:158
rte_argparse::callback
rte_arg_parser_t callback
Definition
rte_argparse.h:168
rte_argparse::prog_name
const char * prog_name
Definition
rte_argparse.h:152
rte_argparse::print_help
void(* print_help)(const struct rte_argparse *obj)
Definition
rte_argparse.h:175
rte_argparse::descriptor
const char * descriptor
Definition
rte_argparse.h:156
rte_argparse::args
struct rte_argparse_arg args[]
Definition
rte_argparse.h:179
rte_argparse::reserved
void * reserved[15]
Definition
rte_argparse.h:177
rte_argparse::opaque
void * opaque
Definition
rte_argparse.h:170
rte_argparse::ignore_non_flag_args
bool ignore_non_flag_args
Definition
rte_argparse.h:164
rte_argparse::usage
const char * usage
Definition
rte_argparse.h:154
rte_argparse::exit_on_error
bool exit_on_error
Definition
rte_argparse.h:160
lib
argparse
rte_argparse.h
Generated by
1.17.0