X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=gmqcc.h;h=b9aca8378f44c8c29c78c3347fc04e5ebcf871be;hb=06101d48e4ff603c3857a1970c2ac5f0ea413f8e;hp=11c3a3eb5e286475ed90a103351a57a59ea77fb7;hpb=8bc9d4b42785425071f87dedf2c0c04524309941;p=xonotic%2Fgmqcc.git diff --git a/gmqcc.h b/gmqcc.h index 11c3a3e..b9aca83 100644 --- 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