]> mj.ucw.cz Git - libucw.git/blobdiff - ucw/strtonum.h
Fastbuf: Rewritten bprintf()
[libucw.git] / ucw / strtonum.h
index fd7e87b196a9e10c059963e2959953700ae34412..865dda7d3eebdeee91e3ab6dfca04a8c3c0ecbc3 100644 (file)
 #ifndef _STRTONUM_H
 #define _STRTONUM_H
 
+// 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...)
@@ -39,7 +40,7 @@ const char *str_to_##suffix(type *num, const char *str, const char **next, const
 #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) \
 {                                                                                                         \
-  return str_to_##usuffix((void *) num, str, next, flags | STN_SIGNED);                                   \
+  return str_to_##usuffix((void *) num, str, next, flags | STN_SIGNED | STN_PLUS | STN_MINUS);            \
 }
 
 STN_DECLARE_CONVERTOR(uns, uns);