]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - gmqcc.h
Merge pull request #80 from matthiaskrgr/master
[xonotic/gmqcc.git] / gmqcc.h
diff --git a/gmqcc.h b/gmqcc.h
index 9e8af454691aba5ded690ff18e652f5bb9e39dca..fe9e8a04d4da5e029745a0654ad9a4539ae3710f 100644 (file)
--- a/gmqcc.h
+++ b/gmqcc.h
 #define GMQCC_VERSION \
     GMQCC_VERSION_BUILD(GMQCC_VERSION_MAJOR, GMQCC_VERSION_MINOR, GMQCC_VERSION_PATCH)
 
+#ifndef GMQCC_GITINFO
+# define GMQCC_GITINFO "(no git info)"
+#endif
+
 /*
- * We cannoy rely on C99 at all, since compilers like MSVC
+ * We cannot rely on C99 at all, since compilers like MSVC
  * simply don't support it.  We define our own boolean type
  * as a result (since we cannot include <stdbool.h>). For
  * compilers that are in 1999 mode (C99 compliant) we can use
@@ -74,8 +78,6 @@
 #   endif /* !__STDC_VERSION__ */
 #endif    /* !__cplusplus      */
 
-
-
 /*
  * Of some functions which are generated we want to make sure
  * that the result isn't ignored. To find such function calls,
@@ -260,6 +262,13 @@ size_t util_strtononcmd (const char *, char *, size_t);
 
 uint16_t util_crc16(uint16_t crc, const char *data, size_t len);
 
+void     util_seed(uint32_t);
+uint32_t util_rand();
+
+int util_vasprintf(char **ret, const char *fmt, va_list);
+int util_asprintf (char **ret, const char *fmt, ...);
+
+
 #ifdef NOTRACK
 #    define mem_a(x)    malloc (x)
 #    define mem_d(x)    free   ((void*)x)
@@ -387,6 +396,8 @@ enum {
     TYPE_UNION    ,
     TYPE_ARRAY    ,
 
+    TYPE_NIL      , /* it's its own type / untyped */
+
     TYPE_COUNT
 };
 
@@ -682,12 +693,14 @@ int  con_out   (const char *, ...);
 
 /* error/warning interface */
 extern size_t compile_errors;
+extern size_t compile_Werrors;
 extern size_t compile_warnings;
 
 void /********/ compile_error   (lex_ctx ctx, /*LVL_ERROR*/ const char *msg, ...);
 void /********/ vcompile_error  (lex_ctx ctx, /*LVL_ERROR*/ const char *msg, va_list ap);
 bool GMQCC_WARN compile_warning (lex_ctx ctx, int warntype, const char *fmt, ...);
 bool GMQCC_WARN vcompile_warning(lex_ctx ctx, int warntype, const char *fmt, va_list ap);
+void            compile_show_werrors();
 
 /*===================================================================*/
 /*========================= assembler.c =============================*/
@@ -914,18 +927,20 @@ void        ftepp_add_macro        (const char *name,   const char *value);
 /*======================= main.c commandline ========================*/
 /*===================================================================*/
 
-#if 0
+#if 1
 /* Helpers to allow for a whole lot of flags. Otherwise we'd limit
  * to 32 or 64 -f options...
  */
 typedef struct {
     size_t  idx; /* index into an array of 32 bit words */
-    uint8_t bit; /* index _into_ the 32 bit word, thus just uint8 */
+    uint8_t bit; /* bit index for the 8 bit group idx points to */
 } longbit;
 #define LONGBIT(bit) { ((bit)/32), ((bit)%32) }
+#define LONGBIT_SET(B, I) ((B).idx = (I)/32, (B).bit = ((I)%32))
 #else
 typedef uint32_t longbit;
 #define LONGBIT(bit) (bit)
+#define LONGBIT_SET(B, I) ((B) = (I))
 #endif
 
 /*===================================================================*/
@@ -1016,6 +1031,7 @@ typedef enum {
 typedef struct {
     uint32_t    O;              /* -Ox           */
     const char *output;         /* -o file       */
+    bool        quiet;          /* -q --quiet    */
     bool        g;              /* -g            */
     opts_std_t  standard;       /* -std=         */
     bool        debug;          /* -debug        */