xref: /dpdk/lib/cmdline/cmdline_parse_string.h (revision 99a2dd95)
1*99a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
2*99a2dd95SBruce Richardson  * Copyright(c) 2010-2014 Intel Corporation.
3*99a2dd95SBruce Richardson  * Copyright (c) 2009, Olivier MATZ <[email protected]>
4*99a2dd95SBruce Richardson  * All rights reserved.
5*99a2dd95SBruce Richardson  */
6*99a2dd95SBruce Richardson 
7*99a2dd95SBruce Richardson #ifndef _PARSE_STRING_H_
8*99a2dd95SBruce Richardson #define _PARSE_STRING_H_
9*99a2dd95SBruce Richardson 
10*99a2dd95SBruce Richardson #include <cmdline_parse.h>
11*99a2dd95SBruce Richardson 
12*99a2dd95SBruce Richardson #ifdef __cplusplus
13*99a2dd95SBruce Richardson extern "C" {
14*99a2dd95SBruce Richardson #endif
15*99a2dd95SBruce Richardson 
16*99a2dd95SBruce Richardson /* size of a parsed string */
17*99a2dd95SBruce Richardson #define STR_TOKEN_SIZE 128
18*99a2dd95SBruce Richardson 
19*99a2dd95SBruce Richardson /* size of a parsed multi string */
20*99a2dd95SBruce Richardson #define STR_MULTI_TOKEN_SIZE 4096
21*99a2dd95SBruce Richardson 
22*99a2dd95SBruce Richardson typedef char cmdline_fixed_string_t[STR_TOKEN_SIZE];
23*99a2dd95SBruce Richardson 
24*99a2dd95SBruce Richardson typedef char cmdline_multi_string_t[STR_MULTI_TOKEN_SIZE];
25*99a2dd95SBruce Richardson 
26*99a2dd95SBruce Richardson struct cmdline_token_string_data {
27*99a2dd95SBruce Richardson 	const char *str;
28*99a2dd95SBruce Richardson };
29*99a2dd95SBruce Richardson 
30*99a2dd95SBruce Richardson struct cmdline_token_string {
31*99a2dd95SBruce Richardson 	struct cmdline_token_hdr hdr;
32*99a2dd95SBruce Richardson 	struct cmdline_token_string_data string_data;
33*99a2dd95SBruce Richardson };
34*99a2dd95SBruce Richardson typedef struct cmdline_token_string cmdline_parse_token_string_t;
35*99a2dd95SBruce Richardson 
36*99a2dd95SBruce Richardson extern struct cmdline_token_ops cmdline_token_string_ops;
37*99a2dd95SBruce Richardson 
38*99a2dd95SBruce Richardson int cmdline_parse_string(cmdline_parse_token_hdr_t *tk, const char *srcbuf,
39*99a2dd95SBruce Richardson 	void *res, unsigned ressize);
40*99a2dd95SBruce Richardson int cmdline_complete_get_nb_string(cmdline_parse_token_hdr_t *tk);
41*99a2dd95SBruce Richardson int cmdline_complete_get_elt_string(cmdline_parse_token_hdr_t *tk, int idx,
42*99a2dd95SBruce Richardson 				    char *dstbuf, unsigned int size);
43*99a2dd95SBruce Richardson int cmdline_get_help_string(cmdline_parse_token_hdr_t *tk, char *dstbuf,
44*99a2dd95SBruce Richardson 			    unsigned int size);
45*99a2dd95SBruce Richardson 
46*99a2dd95SBruce Richardson /**
47*99a2dd95SBruce Richardson * Token marked as TOKEN_STRING_MULTI takes entire parsing string
48*99a2dd95SBruce Richardson * until “#” sign appear. Everything after “#” sign is treated as a comment.
49*99a2dd95SBruce Richardson *
50*99a2dd95SBruce Richardson * Note:
51*99a2dd95SBruce Richardson * In this case second parameter of TOKEN_STRING_INITIALIZER must be a type of
52*99a2dd95SBruce Richardson * cmdline_multi_string_t.
53*99a2dd95SBruce Richardson */
54*99a2dd95SBruce Richardson #define TOKEN_STRING_MULTI ""
55*99a2dd95SBruce Richardson 
56*99a2dd95SBruce Richardson #define TOKEN_STRING_INITIALIZER(structure, field, string)  \
57*99a2dd95SBruce Richardson {                                                           \
58*99a2dd95SBruce Richardson 	/* hdr */                                               \
59*99a2dd95SBruce Richardson 	{                                                       \
60*99a2dd95SBruce Richardson 		&cmdline_token_string_ops,      /* ops */           \
61*99a2dd95SBruce Richardson 		offsetof(structure, field),     /* offset */        \
62*99a2dd95SBruce Richardson 	},                                                      \
63*99a2dd95SBruce Richardson 	/* string_data */                                       \
64*99a2dd95SBruce Richardson 	{                                                       \
65*99a2dd95SBruce Richardson 		string,                         /* str */           \
66*99a2dd95SBruce Richardson 	},                                                      \
67*99a2dd95SBruce Richardson }
68*99a2dd95SBruce Richardson 
69*99a2dd95SBruce Richardson #ifdef __cplusplus
70*99a2dd95SBruce Richardson }
71*99a2dd95SBruce Richardson #endif
72*99a2dd95SBruce Richardson 
73*99a2dd95SBruce Richardson #endif /* _PARSE_STRING_H_ */
74