]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - gmqcc.h
Another one
[xonotic/gmqcc.git] / gmqcc.h
diff --git a/gmqcc.h b/gmqcc.h
index 5922b840bb23394ad59b6140ade0db1821252d15..593ab811c6bf23104404a19ecf2707322f370a52 100644 (file)
--- a/gmqcc.h
+++ b/gmqcc.h
  */
 #ifndef GMQCC_HDR
 #define GMQCC_HDR
-#include <limits.h>
-#include <stdlib.h>
-#include <string.h>
 #include <stdarg.h>
-#include <stdio.h>
-#include <ctype.h>
+#include <stdio.h> /* TODO: remove this */
 
 /*
  * Disable some over protective warnings in visual studio because fixing them is a waste
@@ -291,7 +287,7 @@ GMQCC_IND_STRING(GMQCC_VERSION_PATCH) \
 /*===================================================================*/
 /*=========================== stat.c ================================*/
 /*===================================================================*/
-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 *);
@@ -309,6 +305,28 @@ void *stat_mem_allocate  (size_t, size_t, const char *);
 /*===================================================================*/
 /*=========================== 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 *);
@@ -321,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
@@ -377,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;
@@ -725,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
@@ -767,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);
@@ -794,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 =============================*/
@@ -999,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 *);
@@ -1010,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);
@@ -1070,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