1d30ea906Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause
2d30ea906Sjfb8856606  * Copyright(c) 2010-2014 Intel Corporation.
3a9643ea8Slogwang  * Copyright (c) 2009, Olivier MATZ <[email protected]>
4a9643ea8Slogwang  * All rights reserved.
5a9643ea8Slogwang  */
6a9643ea8Slogwang 
7a9643ea8Slogwang #ifndef _PARSE_NUM_H_
8a9643ea8Slogwang #define _PARSE_NUM_H_
9a9643ea8Slogwang 
10a9643ea8Slogwang #include <cmdline_parse.h>
11a9643ea8Slogwang 
12a9643ea8Slogwang #ifdef __cplusplus
13a9643ea8Slogwang extern "C" {
14a9643ea8Slogwang #endif
15a9643ea8Slogwang 
16a9643ea8Slogwang enum cmdline_numtype {
17*2d9fd380Sjfb8856606 	RTE_UINT8 = 0,
18*2d9fd380Sjfb8856606 	RTE_UINT16,
19*2d9fd380Sjfb8856606 	RTE_UINT32,
20*2d9fd380Sjfb8856606 	RTE_UINT64,
21*2d9fd380Sjfb8856606 	RTE_INT8,
22*2d9fd380Sjfb8856606 	RTE_INT16,
23*2d9fd380Sjfb8856606 	RTE_INT32,
24*2d9fd380Sjfb8856606 	RTE_INT64
25a9643ea8Slogwang };
26a9643ea8Slogwang 
27a9643ea8Slogwang struct cmdline_token_num_data {
28a9643ea8Slogwang 	enum cmdline_numtype type;
29a9643ea8Slogwang };
30a9643ea8Slogwang 
31a9643ea8Slogwang struct cmdline_token_num {
32a9643ea8Slogwang 	struct cmdline_token_hdr hdr;
33a9643ea8Slogwang 	struct cmdline_token_num_data num_data;
34a9643ea8Slogwang };
35a9643ea8Slogwang typedef struct cmdline_token_num cmdline_parse_token_num_t;
36a9643ea8Slogwang 
37a9643ea8Slogwang extern struct cmdline_token_ops cmdline_token_num_ops;
38a9643ea8Slogwang 
39a9643ea8Slogwang int cmdline_parse_num(cmdline_parse_token_hdr_t *tk,
40a9643ea8Slogwang 	const char *srcbuf, void *res, unsigned ressize);
41a9643ea8Slogwang int cmdline_get_help_num(cmdline_parse_token_hdr_t *tk,
42a9643ea8Slogwang 	char *dstbuf, unsigned int size);
43a9643ea8Slogwang 
44a9643ea8Slogwang #define TOKEN_NUM_INITIALIZER(structure, field, numtype)    \
45a9643ea8Slogwang {                                                           \
46a9643ea8Slogwang 	/* hdr */                                               \
47a9643ea8Slogwang 	{                                                       \
48a9643ea8Slogwang 		&cmdline_token_num_ops,         /* ops */           \
49a9643ea8Slogwang 		offsetof(structure, field),     /* offset */        \
50a9643ea8Slogwang 	},                                                      \
51a9643ea8Slogwang 	/* num_data */                                          \
52a9643ea8Slogwang 	{                                                       \
53a9643ea8Slogwang 		numtype,                        /* type */          \
54a9643ea8Slogwang 	},                                                      \
55a9643ea8Slogwang }
56a9643ea8Slogwang 
57a9643ea8Slogwang #ifdef __cplusplus
58a9643ea8Slogwang }
59a9643ea8Slogwang #endif
60a9643ea8Slogwang 
61a9643ea8Slogwang #endif /* _PARSE_NUM_H_ */
62