#undef FALSE
#endif
-#ifdef MODE_AUTO
-#undef MODE_AUTO
+#ifdef STATE_AUTO
+#undef STATE_AUTO
#endif
+#ifdef STATE_ASK
+#undef STATE_ASK
+#endif
+
+// values for boolean data type
#define TRUE 1
#define FALSE 0
-#define MODE_AUTO -1
+// values for 3-state data type (for "yes/no/auto" or "yes/no/ask")
+#define STATE_TRUE 1
+#define STATE_FALSE 0
+#define STATE_AUTO -1
+#define STATE_ASK -1
#ifndef MIN
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
+#if defined(__x86_64__)
+
+#define PTR_TO_INT(p) ((int) (long long) (p))
+#define PTR_TO_UINT(p) ((unsigned int) (unsigned long long) (p))
+
+#define INT_TO_PTR(i) ((void *) (long long) (i))
+#define UINT_TO_PTR(u) ((void *) (unsigned long long) (u))
+
+#else
+
#define PTR_TO_INT(p) ((int) (long) (p))
#define PTR_TO_UINT(p) ((unsigned int) (unsigned long) (p))
#define INT_TO_PTR(i) ((void *) (long) (i))
#define UINT_TO_PTR(u) ((void *) (unsigned long) (u))
+#endif
+
#define STRUCT_OFFSET(s, m) (offsetof(s, m))