]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - gmqcc.h
code_alloc_field to allocate entityfield data, ir now has ir_builder_create_field...
[xonotic/gmqcc.git] / gmqcc.h
diff --git a/gmqcc.h b/gmqcc.h
index 2361fd76a0c0c46d9496630021e710f4b4417493..8ebe3afd60e0dae8f3a7e38ad6a07f843ab163fe 100644 (file)
--- a/gmqcc.h
+++ b/gmqcc.h
@@ -287,6 +287,9 @@ void  util_debug         (const char *, const char *, ...);
 int   util_getline       (char **, size_t *, FILE *);
 void  util_endianswap    (void *,  int, int);
 
+size_t util_strtocmd    (const char *, char *, size_t);
+size_t util_strtononcmd (const char *, char *, size_t);
+
 uint32_t util_crc32(const char *, int, register const short);
 
 #ifdef NOTRACK
@@ -581,6 +584,9 @@ VECTOR_PROT(prog_section_function,  code_functions );
 VECTOR_PROT(int,                    code_globals   );
 VECTOR_PROT(char,                   code_chars     );
 
+typedef float   qcfloat;
+typedef int32_t qcint;
+
 /*
  * code_write -- writes out the compiled file
  * code_init  -- prepares the code file
@@ -589,6 +595,7 @@ bool     code_write       (const char *filename);
 void     code_init        ();
 uint32_t code_genstring   (const char *string);
 uint32_t code_cachedstring(const char *string);
+qcint    code_alloc_field (size_t qcsize);
 
 /*===================================================================*/
 /*========================= assembler.c =============================*/
@@ -671,20 +678,6 @@ void asm_init (const char *, FILE **);
 void asm_close(FILE *);
 void asm_parse(FILE *);
 /*===================================================================*/
-/*============================= main.c ==============================*/
-/*===================================================================*/
-enum {
-    COMPILER_QCC,     /* circa  QuakeC */
-    COMPILER_FTEQCC,  /* fteqcc QuakeC */
-    COMPILER_QCCX,    /* qccx   QuakeC */
-    COMPILER_GMQCC    /* this   QuakeC */
-};
-extern bool opts_debug;
-extern bool opts_memchk;
-extern bool opts_darkplaces_stringtablebug;
-extern bool opts_omit_nullcode;
-extern int  opts_compiler;
-/*===================================================================*/
 /*============================= ast.c ===============================*/
 /*===================================================================*/
 #define MEM_VECTOR_PROTO(Towner, Tmem, mem)                   \
@@ -877,9 +870,6 @@ typedef struct {
  * Since we may want to support that as well, let's redefine
  * float and int here.
  */
-typedef float   qcfloat;
-typedef int32_t qcint;
-
 typedef union {
     qcint   _int;
     qcint    string;
@@ -982,35 +972,53 @@ typedef uint32_t longbit;
 typedef struct {
     const char *name;
     longbit    bit;
-} opt_flag_def;
+} opts_flag_def;
 
 /*===================================================================*/
 /* list of -f flags, like -fdarkplaces-string-table-bug */
 enum {
-    DP_STRING_TABLE_BUG,
-    OMIT_NULLBYTES,
+# define GMQCC_DEFINE_FLAG(X) X,
+#  include "flags.def"
+# undef GMQCC_DEFINE_FLAG
+    COUNT_FLAGS
+};
+static const opts_flag_def opts_flag_list[] = {
+# define GMQCC_DEFINE_FLAG(X) { #X, LONGBIT(X) },
+#  include "flags.def"
+# undef GMQCC_DEFINE_FLAG
+    { NULL, LONGBIT(0) }
+};
 
-    NUM_F_FLAGS
+enum {
+# define GMQCC_DEFINE_FLAG(X) X,
+#  include "warns.def"
+# undef GMQCC_DEFINE_FLAG
+    COUNT_WARNINGS
 };
-static const opt_flag_def opt_flag_list[] = {
-    { "darkplaces-string-table-bug", LONGBIT(DP_STRING_TABLE_BUG) },
-    { "omit-nullbytes",              LONGBIT(OMIT_NULLBYTES)      },
+static const opts_flag_def opts_warn_list[] = {
+# define GMQCC_DEFINE_FLAG(X) { #X, LONGBIT(X) },
+#  include "warns.def"
+# undef GMQCC_DEFINE_FLAG
+    { NULL, LONGBIT(0) }
 };
-static const size_t opt_flag_list_count = sizeof(opt_flag_list) / sizeof(opt_flag_list[0]);
 
 /* other options: */
-extern uint32_t    opt_O;      /* -Ox */
-extern const char *opt_output; /* -o file */
-extern int         opt_standard;
-
 enum {
-    STD_DEF,
-    STD_QCC,
-    STD_FTE
+    COMPILER_QCC,     /* circa  QuakeC */
+    COMPILER_FTEQCC,  /* fteqcc QuakeC */
+    COMPILER_QCCX,    /* qccx   QuakeC */
+    COMPILER_GMQCC    /* this   QuakeC */
 };
+extern uint32_t    opts_O;      /* -Ox */
+extern const char *opts_output; /* -o file */
+extern int         opts_standard;
+extern bool        opts_debug;
+extern bool        opts_memchk;
 
 /*===================================================================*/
-#define OPT_FLAG(i) (!! (opt_flags[(i)/32] & (1<< ((i)%32))))
-extern uint32_t opt_flags[1 + (NUM_F_FLAGS / 32)];
+#define OPTS_FLAG(i) (!! (opts_flags[(i)/32] & (1<< ((i)%32))))
+extern uint32_t opts_flags[1 + (COUNT_FLAGS / 32)];
+#define OPTS_WARN(i) (!! (opts_warn[(i)/32] & (1<< ((i)%32))))
+extern uint32_t opts_warn[1 + (COUNT_WARNINGS / 32)];
 
 #endif