X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=ucw%2Fstrtonum.h;h=ae25ff5d9a46c4aeb9ea5f9b01cee51076ddeeaf;hb=ec6703bb4d58e504fde8ea8429f9b26ab6632696;hp=b16bd29ddc740413288c3015d8644abc070d7e34;hpb=ba1c173f544383aa6553a75dee6e6858d8f243a4;p=libucw.git diff --git a/ucw/strtonum.h b/ucw/strtonum.h index b16bd29d..ae25ff5d 100644 --- a/ucw/strtonum.h +++ b/ucw/strtonum.h @@ -10,12 +10,21 @@ #ifndef _STRTONUM_H #define _STRTONUM_H +#ifdef CONFIG_UCW_CLEAN_ABI +#define str_to_u32 ucw_str_to_u32 +#define str_to_u64 ucw_str_to_u64 +#define str_to_uint ucw_str_to_uint +#define str_to_uintmax ucw_str_to_uintmax +#define str_to_uns ucw_str_to_uns +#endif + +// Set (flags & 0x1f) in the range 1 to 31 to denote the default base of the number enum str_to_num_flags { STN_SIGNED = 0x20, // The resulting range is signed STN_MINUS = 0x40, // Allow optional '-' sign STN_PLUS = 0x80, // Allow optional '+' sign STN_TRUNC = 0x100, // Allow range overflow -> truncate to the allowed range - STN_DEC = 0x200, // Support decimal numbers + STN_DEC = 0x200, // Support decimal numbers (currently no prefix) STN_HEX = 0x400, // Support hexadecimal numbers (0x...) STN_BIN = 0x800, // Support binary numbers (0b...) STN_OCT = 0x1000, // Support octal numbers (0o...) @@ -34,18 +43,27 @@ enum str_to_num_flags { #define STN_USFLAGS (STN_SFLAGS | STN_UNDERSCORE) #define STN_DECLARE_CONVERTOR(type, suffix) \ -const char *str_to_##suffix(type *num, const char *str, const char **next, const uns flags) +const char *str_to_##suffix(type *num, const char *str, const char **next, const uint flags) #define STN_SIGNED_CONVERTOR(type, suffix, usuffix) \ -static inline const char *str_to_##suffix(type *num, const char *str, const char **next, const uns flags) \ +static inline const char *str_to_##suffix(type *num, const char *str, const char **next, const uint flags) \ { \ return str_to_##usuffix((void *) num, str, next, flags | STN_SIGNED | STN_PLUS | STN_MINUS); \ } -STN_DECLARE_CONVERTOR(uns, uns); -STN_SIGNED_CONVERTOR(int, int, uns) +STN_DECLARE_CONVERTOR(uint, uint); +STN_SIGNED_CONVERTOR(int, int, uint) + +STN_DECLARE_CONVERTOR(u32, u32); +STN_SIGNED_CONVERTOR(s32, s32, u32) + +STN_DECLARE_CONVERTOR(u64, u64); +STN_SIGNED_CONVERTOR(s64, s64, u64) STN_DECLARE_CONVERTOR(uintmax_t, uintmax); STN_SIGNED_CONVERTOR(intmax_t, intmax, uintmax) +// FIXME: For backward compatibility, will be removed soon +STN_DECLARE_CONVERTOR(uns, uns); + #endif