]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - gmqcc.h
manpage: A note about __NULL__ vs nil
[xonotic/gmqcc.git] / gmqcc.h
diff --git a/gmqcc.h b/gmqcc.h
index 11c3a3eb5e286475ed90a103351a57a59ea77fb7..b9aca8378f44c8c29c78c3347fc04e5ebcf871be 100644 (file)
--- a/gmqcc.h
+++ b/gmqcc.h
@@ -316,9 +316,8 @@ void _util_vec_grow(void **a, size_t i, size_t s);
 #define vec_remove(A,I,N) memmove((A)+(I),(A)+((I)+(N)),sizeof(*(A))*(vec_meta(A)->used-(I)-(N))),vec_meta(A)->used-=(N)
 
 typedef struct trie_s {
-    struct trie_s *entries;
-    unsigned char  ch;
     void          *value;
+    struct trie_s *entries;
 } correct_trie_t;
 
 correct_trie_t* correct_trie_new();
@@ -434,9 +433,15 @@ GMQCC_INLINE FILE   *file_open   (const char *, const char *);
 /*===================================================================*/
 /*=========================== correct.c =============================*/
 /*===================================================================*/
-void  correct_del(correct_trie_t*, size_t **);
-void  correct_add(correct_trie_t*, size_t ***, const char *);
-char *correct_str(correct_trie_t*, /********/  const char *);
+typedef struct {
+    char ***edits;
+} correction_t;
+
+void  correct_del (correct_trie_t*, size_t **);
+void  correct_add (correct_trie_t*, size_t ***, const char *);
+char *correct_str (correction_t *, correct_trie_t*, const char *);
+void  correct_init(correction_t *);
+void  correct_free(correction_t *);
 
 /*===================================================================*/
 /*=========================== code.c ================================*/
@@ -1051,6 +1056,12 @@ void opts_set          (uint32_t   *, size_t, bool);
 void opts_setoptimlevel(unsigned int);
 void opts_ini_init     (const char *);
 
+/* Saner flag handling */
+void opts_backup_non_Wall();
+void opts_restore_non_Wall();
+void opts_backup_non_Werror_all();
+void opts_restore_non_Werror_all();
+
 enum {
 # define GMQCC_TYPE_FLAGS
 # define GMQCC_DEFINE_FLAG(X) X,
@@ -1121,17 +1132,20 @@ typedef struct {
     bool        pp_only;        /* -E            */
     size_t      max_array_size; /* --max-array=  */
 
-    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)];
+    uint32_t flags        [1 + (COUNT_FLAGS         / 32)];
+    uint32_t warn         [1 + (COUNT_WARNINGS      / 32)];
+    uint32_t werror       [1 + (COUNT_WARNINGS      / 32)];
+    uint32_t warn_backup  [1 + (COUNT_WARNINGS      / 32)];
+    uint32_t werror_backup[1 + (COUNT_WARNINGS      / 32)];
+    uint32_t optimization [1 + (COUNT_OPTIMIZATIONS / 32)];
 } opts_cmd_t;
 
 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))))
+#define OPTS_GENERIC(f,i)    (!! (((f)[(i)/32]) & (1<< ((i)%32))))
+#define OPTS_FLAG(i)         OPTS_GENERIC(opts.flags,        (i))
+#define OPTS_WARN(i)         OPTS_GENERIC(opts.warn,         (i))
+#define OPTS_WERROR(i)       OPTS_GENERIC(opts.werror,       (i))
+#define OPTS_OPTIMIZATION(i) OPTS_GENERIC(opts.optimization, (i))
 
 #endif