Fixed default modes, all members must be initialized.
[libfirm] / ir / tv / strcalc.h
index e8589ce..7a52099 100644 (file)
 #ifndef _STRCALC_H_
 #define _STRCALC_H_
 
+#ifdef STRCALC_DEBUG_ALL             /* switch on all debug options */
+#  ifndef STRCALC_DEBUG
+#    define STRCALC_DEBUG            /* switch on debug output */
+#  endif
+#  ifndef STRCALC_DEBUG_PRINTCOMP    /* print arguments and result of each computation */
+#    define STRCALC_DEBUG_PRINTCOMP
+#  endif
+#  ifndef STRCALC_DEBUG_FULLPRINT
+#    define STRCALC_DEBUG_FULLPRINT  /* print full length of values (e.g. 128 bit instead of 64 bit using default init) */
+#  endif
+#  ifndef STRCALC_DEBUG_GROUPPRINT
+#    define STRCALC_DEBUG_GROUPPRINT /* print spaces after each 8 bits */
+#  endif
+#endif
+
+#ifdef STRCALC_DEBUG
+  /* shortcut output for debugging */
+#  define sc_print_hex(a) sc_print((a), 0, SC_HEX)
+#  define sc_print_dec(a) sc_print((a), 0, SC_DEC)
+#  define sc_print_oct(a) sc_print((a), 0, SC_OCT)
+#  define sc_print_bin(a) sc_print((a), 0, SC_BIN)
+#endif
+
+/*
+ * constants, typedefs, enums
+ */
+
 #define DEFAULT_PRECISION_IN_BYTES 8
 
-/*****************************************************************************
- * typedefs, enums and structs
- *****************************************************************************/
 enum {
   SC_0 = 0,
   SC_1,
@@ -66,7 +90,8 @@ enum {
  * The output mode for ntger values.
  */
 enum base_t {
-  SC_HEX,      /**< hexadecimal output */
+  SC_hex,      /**< hexadecimal output with small letters */
+  SC_HEX,      /**< hexadecimal output with BIG letters */
   SC_DEC,      /**< decimal output */
   SC_OCT,      /**< octal output */
   SC_BIN,      /**< binary output */
@@ -108,6 +133,9 @@ int  sc_comp(const void *val1, const void *val2);
 
 int sc_get_highest_set_bit(const void *value);
 int sc_get_lowest_set_bit(const void *value);
+int sc_is_zero(const void *value);
+int sc_is_negative(const void *value);
+int sc_had_carry(void);
 unsigned char sc_sub_bits(const void *value, int len, unsigned byte_ofs);
 
 /**
@@ -120,6 +148,6 @@ unsigned char sc_sub_bits(const void *value, int len, unsigned byte_ofs);
 const char *sc_print(const void *val1, unsigned bits, enum base_t base);
 
 void init_strcalc(int precision_in_bytes);
-int get_precision();
+int get_precision(void);
 
 #endif /* _STRCALC_H_ */