X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvppinfra%2Fformat.h;h=935b57f2c4b0e8f897c2f0882265f7fcc9462234;hb=5c476e7ac;hp=94344474067b93ed19db391ef1ea5ec0ae5a1d87;hpb=b7b929931a07fbb27b43d5cd105f366c3e29807e;p=vpp.git diff --git a/src/vppinfra/format.h b/src/vppinfra/format.h index 94344474067..935b57f2c4b 100644 --- a/src/vppinfra/format.h +++ b/src/vppinfra/format.h @@ -87,36 +87,30 @@ format_get_indent (u8 * s) return indent; } -#define _(f) u8 * f (u8 * s, va_list * va) +#define _(f) __clib_export u8 * f (u8 * s, va_list * va) /* Standard user-defined formats. */ _(format_vec32); _(format_vec_uword); _(format_ascii_bytes); _(format_hex_bytes); +_(format_hex_bytes_no_wrap); _(format_white_space); _(format_f64); _(format_time_interval); +_ (format_duration); #ifdef CLIB_UNIX /* Unix specific formats. */ _(format_address_family); -_(format_unix_arphrd); -_(format_unix_interface_flags); _(format_network_address); _(format_network_protocol); _(format_network_port); _(format_sockaddr); -_(format_ip4_tos_byte); -_(format_ip4_packet); -_(format_icmp4_type_and_code); -_(format_ethernet_packet); -_(format_hostname); _(format_timeval); _(format_time_float); _(format_signal); _(format_ucontext_pc); -_(format_page_map); #endif #undef _ @@ -206,6 +200,22 @@ unformat_put_input (unformat_input_t * input) input->index -= 1; } +always_inline uword +is_white_space (uword c) +{ + switch (c) + { + case ' ': + case '\t': + case '\n': + case '\r': + return 1; + + default: + return 0; + } +} + /* Peek current input character without advancing. */ always_inline uword unformat_peek_input (unformat_input_t * input) @@ -249,8 +259,8 @@ uword va_unformat (unformat_input_t * i, const char *fmt, va_list * args); void unformat_init_command_line (unformat_input_t * input, char *argv[]); /* Setup for unformat of given string. */ -void unformat_init_string (unformat_input_t * input, - char *string, int string_len); +void unformat_init_string (unformat_input_t *input, const char *string, + int string_len); always_inline void unformat_init_cstring (unformat_input_t * input, char *string) @@ -294,14 +304,29 @@ unformat_function_t unformat_eof; /* Parse memory size e.g. 100, 100k, 100m, 100g. */ unformat_function_t unformat_memory_size; +/* Format base 10 e.g. 100, 100K, 100M, 100G */ +u8 *format_base10 (u8 *s, va_list *va); + /* Unparse memory size e.g. 100, 100k, 100m, 100g. */ u8 *format_memory_size (u8 * s, va_list * va); +/* Parse memory page size e.g. 4K, 2M */ +unformat_function_t unformat_log2_page_size; + +/* Unparse memory page size e.g. 4K, 2M */ +u8 *format_log2_page_size (u8 * s, va_list * va); + /* Format c identifier: e.g. a_name -> "a name". */ u8 *format_c_identifier (u8 * s, va_list * va); /* Format hexdump with both hex and printable chars - compatible with text2pcap */ u8 *format_hexdump (u8 * s, va_list * va); +u8 *format_hexdump_u16 (u8 *s, va_list *va); +u8 *format_hexdump_u32 (u8 *s, va_list *va); +u8 *format_hexdump_u64 (u8 *s, va_list *va); + +/* Format bitmap of array of uword numbers */ +u8 *format_uword_bitmap (u8 *s, va_list *va); /* Unix specific formats. */ #ifdef CLIB_UNIX @@ -316,6 +341,8 @@ uword unformat_init_unix_env (unformat_input_t * input, char *var); unformat_function_t unformat_unix_gid; #endif /* CLIB_UNIX */ +uword unformat_data_size (unformat_input_t * input, va_list * args); + /* Test code. */ int test_format_main (unformat_input_t * input); int test_unformat_main (unformat_input_t * input);