1*d30ea906Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause
2*d30ea906Sjfb8856606 * Copyright(c) 2010-2016 Intel Corporation
32bfe3f2eSlogwang */
42bfe3f2eSlogwang
52bfe3f2eSlogwang #ifndef __INCLUDE_PARSER_H__
62bfe3f2eSlogwang #define __INCLUDE_PARSER_H__
72bfe3f2eSlogwang
82bfe3f2eSlogwang #include <stdint.h>
92bfe3f2eSlogwang
102bfe3f2eSlogwang #define PARSE_DELIMITER " \f\n\r\t\v"
112bfe3f2eSlogwang
122bfe3f2eSlogwang #define skip_white_spaces(pos) \
132bfe3f2eSlogwang ({ \
142bfe3f2eSlogwang __typeof__(pos) _p = (pos); \
152bfe3f2eSlogwang for ( ; isspace(*_p); _p++) \
162bfe3f2eSlogwang ; \
172bfe3f2eSlogwang _p; \
182bfe3f2eSlogwang })
192bfe3f2eSlogwang
202bfe3f2eSlogwang static inline size_t
skip_digits(const char * src)212bfe3f2eSlogwang skip_digits(const char *src)
222bfe3f2eSlogwang {
232bfe3f2eSlogwang size_t i;
242bfe3f2eSlogwang
252bfe3f2eSlogwang for (i = 0; isdigit(src[i]); i++)
262bfe3f2eSlogwang ;
272bfe3f2eSlogwang
282bfe3f2eSlogwang return i;
292bfe3f2eSlogwang }
302bfe3f2eSlogwang
312bfe3f2eSlogwang int parser_read_arg_bool(const char *p);
322bfe3f2eSlogwang
332bfe3f2eSlogwang int parser_read_uint64(uint64_t *value, const char *p);
342bfe3f2eSlogwang int parser_read_uint32(uint32_t *value, const char *p);
352bfe3f2eSlogwang int parser_read_uint16(uint16_t *value, const char *p);
362bfe3f2eSlogwang int parser_read_uint8(uint8_t *value, const char *p);
372bfe3f2eSlogwang
382bfe3f2eSlogwang int parser_read_uint64_hex(uint64_t *value, const char *p);
392bfe3f2eSlogwang int parser_read_uint32_hex(uint32_t *value, const char *p);
402bfe3f2eSlogwang int parser_read_uint16_hex(uint16_t *value, const char *p);
412bfe3f2eSlogwang int parser_read_uint8_hex(uint8_t *value, const char *p);
422bfe3f2eSlogwang
432bfe3f2eSlogwang int parser_read_int32(int32_t *value, const char *p);
442bfe3f2eSlogwang
452bfe3f2eSlogwang int parse_hex_string(char *src, uint8_t *dst, uint32_t *size);
462bfe3f2eSlogwang
472bfe3f2eSlogwang int parse_tokenize_string(char *string, char *tokens[], uint32_t *n_tokens);
482bfe3f2eSlogwang
492bfe3f2eSlogwang int parse_lcores_list(bool lcores[], const char *corelist);
502bfe3f2eSlogwang #endif
51