X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=gmqcc.h;h=593ab811c6bf23104404a19ecf2707322f370a52;hp=8edcbda59de899e2da20d6ad98132fca7715b899;hb=5429b6f18933d108741dff8eed8ca20df80e7b59;hpb=9af3c502dae7420714519dd13dff6aba40fc1fa3 diff --git a/gmqcc.h b/gmqcc.h index 8edcbda..593ab81 100644 --- a/gmqcc.h +++ b/gmqcc.h @@ -23,12 +23,8 @@ */ #ifndef GMQCC_HDR #define GMQCC_HDR -#include -#include -#include #include -#include -#include +#include /* TODO: remove this */ /* * Disable some over protective warnings in visual studio because fixing them is a waste @@ -291,29 +287,12 @@ GMQCC_IND_STRING(GMQCC_VERSION_PATCH) \ /*===================================================================*/ /*=========================== stat.c ================================*/ /*===================================================================*/ -typedef struct { - size_t key; - size_t value; -} stat_size_entry_t, **stat_size_table_t; - -void stat_info(); - +void stat_info (void); char *stat_mem_strdup (const char *, size_t, const char *, bool); void *stat_mem_reallocate(void *, size_t, size_t, const char *); void stat_mem_deallocate(void *); void *stat_mem_allocate (size_t, size_t, const char *); -stat_size_table_t stat_size_new(); -stat_size_entry_t *stat_size_get(stat_size_table_t, size_t); -void stat_size_del(stat_size_table_t); -void stat_size_put(stat_size_table_t, size_t, size_t); - -/* getters for hashtable: */ -stat_size_table_t *stat_size_hashtables_get(); -uint64_t *stat_type_hashtables_get(); -uint64_t *stat_used_hashtables_get(); -stat_size_table_t *stat_hashtables_init(); - #define mem_a(SIZE) stat_mem_allocate ((SIZE), __LINE__, __FILE__) #define mem_d(PTRN) stat_mem_deallocate((void*)(PTRN)) #define mem_r(PTRN, SIZE) stat_mem_reallocate((void*)(PTRN), (SIZE), __LINE__, __FILE__) @@ -326,6 +305,28 @@ stat_size_table_t *stat_hashtables_init(); /*===================================================================*/ /*=========================== util.c ================================*/ /*===================================================================*/ + +/* + * Microsoft implements against the spec versions of ctype.h. Which + * means what ever the current set locale is will render the actual + * results of say isalpha('A') wrong for what ever retarded locale + * is used. Simalerly these are also implemented inefficently on + * some toolchains and end up becoming actual library calls. Perhaps + * this is why tools like yacc provide their own? Regardless implementing + * these as functions is equally as silly, the call overhead is not + * justified when this could happen on every character from an input + * stream. We provide our own as macros for absolute inlinability. + */ +#define util_isupper(C) ((C) >= 'A' && (C) <= 'Z') +#define util_islower(C) ((C) >= 'a' && (C) <= 'z') +#define util_isdigit(C) ((C) >= '0' && (C) <= '9') +#define util_isprint(C) ((C) >= 32 && (C) <= 126) +#define util_isspace(C) ((C) == ' ' || (C) == '\f' || \ + (C) == '\n'|| (C) == '\r' || \ + (C) == '\t'|| (C) == '\v') + +#define util_isalpha(C) (util_islower(C) || util_isupper(C)) + bool util_filexists (const char *); bool util_strupper (const char *); bool util_strdigit (const char *); @@ -338,7 +339,7 @@ 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(); +uint32_t util_rand(void); /* * String functions (formatting, copying, concatenating, errors). These are wrapped @@ -394,7 +395,7 @@ typedef struct trie_s { struct trie_s *entries; } correct_trie_t; -correct_trie_t* correct_trie_new(); +correct_trie_t* correct_trie_new(void); typedef struct hash_table_t { size_t size; @@ -742,7 +743,7 @@ typedef struct { * code_genstrin -- generates string for code * code_alloc_field -- allocated a field * code_push_statement -- keeps statements and linenumbers together - * code_pop_statement -- keeps statements and linenumbers together + * code_pop_statement -- keeps statements and linenumbers together */ bool code_write (code_t *, const char *filename, const char *lno); GMQCC_WARN @@ -784,17 +785,17 @@ enum { LVL_ERROR }; -FILE *con_default_out(); -FILE *con_default_err(); +FILE *con_default_out(void); +FILE *con_default_err(void); void con_vprintmsg (int level, const char *name, size_t line, size_t column, const char *msgtype, const char *msg, va_list ap); void con_printmsg (int level, const char *name, size_t line, size_t column, const char *msgtype, const char *msg, ...); void con_cvprintmsg(void *ctx, int lvl, const char *msgtype, const char *msg, va_list ap); void con_cprintmsg (void *ctx, int lvl, const char *msgtype, const char *msg, ...); -void con_close (); -void con_init (); -void con_reset (); +void con_close (void); +void con_init (void); +void con_reset (void); void con_color (int); int con_change(const char *, const char *); int con_verr (const char *, va_list); @@ -811,7 +812,7 @@ 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(); +void compile_show_werrors(void); /*===================================================================*/ /*========================= assembler.c =============================*/ @@ -1016,8 +1017,7 @@ qcint prog_tempstring(qc_program *prog, const char *_str); /*===================== parser.c commandline ========================*/ /*===================================================================*/ struct parser_s; - -struct parser_s *parser_create (); +struct parser_s *parser_create (void); bool parser_compile_file (struct parser_s *parser, const char *); bool parser_compile_string(struct parser_s *parser, const char *, const char *, size_t); bool parser_finish (struct parser_s *parser, const char *); @@ -1027,7 +1027,7 @@ void parser_cleanup (struct parser_s *parser); /*====================== ftepp.c commandline ========================*/ /*===================================================================*/ struct ftepp_s; -struct ftepp_s *ftepp_create (); +struct ftepp_s *ftepp_create (void); bool ftepp_preprocess_file (struct ftepp_s *ftepp, const char *filename); bool ftepp_preprocess_string(struct ftepp_s *ftepp, const char *name, const char *str); void ftepp_finish (struct ftepp_s *ftepp); @@ -1087,10 +1087,10 @@ 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(); +void opts_backup_non_Wall(void); +void opts_restore_non_Wall(void); +void opts_backup_non_Werror_all(void); +void opts_restore_non_Werror_all(void); enum { # define GMQCC_TYPE_FLAGS