]> de.git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - gmqcc.h
-ftrue-empty-strings now changes type_not_instr[TYPE_STRING] to INSTR_NOT_F
[xonotic/gmqcc.git] / gmqcc.h
diff --git a/gmqcc.h b/gmqcc.h
index 53a5460bf9718b6cac970e734a9549673db84f45..af3d2c1d00434d7ce94a6636f71d311fab7d6931 100644 (file)
--- a/gmqcc.h
+++ b/gmqcc.h
 #    define GMQCC_NORETURN
 #endif
 
-/*
- * stdint.h and inttypes.h -less subset
- * for systems that don't have it, which we must
- * assume is all systems. (int8_t not required)
- */
-#if   CHAR_MIN  == -128
-    typedef unsigned char  uint8_t; /* same as below */
-#elif SCHAR_MIN == -128
-    typedef unsigned char  uint8_t; /* same as above */
-#endif
-#if   SHRT_MAX  == 0x7FFF
-    typedef short          int16_t;
-    typedef unsigned short uint16_t;
-#elif INT_MAX   == 0x7FFF
-    typedef int            int16_t;
-    typedef unsigned int   uint16_t;
-#endif
-#if   INT_MAX   == 0x7FFFFFFF
-    typedef int            int32_t;
-    typedef unsigned int   uint32_t;
-#elif LONG_MAX  == 0x7FFFFFFF
-    typedef long           int32_t;
-    typedef unsigned long  uint32_t;
-#endif
-
-
-#if defined(__GNUC__) || defined (__CLANG__)
-       typedef int              int64_t  __attribute__((__mode__(__DI__)));
-       typedef unsigned int     uint64_t __attribute__((__mode__(__DI__)));
-#elif defined(_MSC_VER)
-       typedef __int64          int64_t;
-       typedef unsigned __int64 uint64_t;
-#else
-    /*
-    * Incorrectly size the types so static assertions below will
-    * fail.  There is no valid way to get a 64bit type at this point
-    * without making assumptions of too many things.
-    */
-    typedef struct { char _fail : 0; } int64_t;
-    typedef struct { char _fail : 0; } uint64_t;
+/* TODO: visual studiblows work around */
+#ifndef _MSC_VER
+#   include <stdint.h>
 #endif
-/* Ensure type sizes are correct: */
-typedef char uint8_size_is_correct  [sizeof(uint8_t)  == 1?1:-1];
-typedef char uint16_size_is_correct [sizeof(uint16_t) == 2?1:-1];
-typedef char uint32_size_is_correct [sizeof(uint32_t) == 4?1:-1];
-typedef char uint64_size_is_correct [sizeof(uint64_t) == 8?1:-1];
-typedef char int16_size_if_correct  [sizeof(int16_t)  == 2?1:-1];
-typedef char int32_size_is_correct  [sizeof(int32_t)  == 4?1:-1];
-typedef char int64_size_is_correct  [sizeof(int64_t)  >= 8?1:-1];
 
 /*===================================================================*/
 /*=========================== util.c ================================*/
@@ -871,9 +826,10 @@ typedef struct {
     longbit     bit;
 } opts_flag_def;
 
-bool opts_setflag (const char *, bool);
-bool opts_setwarn (const char *, bool);
-bool opts_setoptim(const char *, bool);
+bool opts_setflag  (const char *, bool);
+bool opts_setwarn  (const char *, bool);
+bool opts_setwerror(const char *, bool);
+bool opts_setoptim (const char *, bool);
 
 void opts_init         (const char *, int, size_t);
 void opts_set          (uint32_t   *, size_t, bool);
@@ -943,7 +899,6 @@ typedef struct {
     bool        memchk;         /* -memchk       */
     bool        dumpfin;        /* -dumpfin      */
     bool        dump;           /* -dump         */
-    bool        werror;         /* -Werror       */
     bool        forcecrc;       /* --force-crc=  */
     uint16_t    forced_crc;     /* --force-crc=  */
     bool        pp_only;        /* -E            */
@@ -951,6 +906,7 @@ typedef struct {
 
     uint32_t flags       [1 + (COUNT_FLAGS         / 32)];
     uint32_t warn        [1 + (COUNT_WARNINGS      / 32)];
+    uint32_t werror      [1 + (COUNT_WARNINGS      / 32)];
     uint32_t optimization[1 + (COUNT_OPTIMIZATIONS / 32)];
 } opts_cmd_t;
 
@@ -959,6 +915,7 @@ extern opts_cmd_t opts;
 /*===================================================================*/
 #define OPTS_FLAG(i)         (!! (opts.flags       [(i)/32] & (1<< ((i)%32))))
 #define OPTS_WARN(i)         (!! (opts.warn        [(i)/32] & (1<< ((i)%32))))
+#define OPTS_WERROR(i)       (!! (opts.werror      [(i)/32] & (1<< ((i)%32))))
 #define OPTS_OPTIMIZATION(i) (!! (opts.optimization[(i)/32] & (1<< ((i)%32))))
 
 #endif