]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - gmqcc.h
Added handler for -W
[xonotic/gmqcc.git] / gmqcc.h
diff --git a/gmqcc.h b/gmqcc.h
index 90d1e05b98e0830763d74d9ed116d4d39efd947a..4eebd20b14b40d094966dfd38f5d7c03477fea83 100644 (file)
--- a/gmqcc.h
+++ b/gmqcc.h
@@ -960,4 +960,70 @@ prog_section_def* prog_getdef    (qc_program *prog, qcint off);
 qcany*            prog_getedict  (qc_program *prog, qcint e);
 qcint             prog_tempstring(qc_program *prog, const char *_str);
 
+/*===================================================================*/
+/*======================= main.c commandline ========================*/
+/*===================================================================*/
+
+#if 0
+/* Helpers to allow for a whole lot of flags. Otherwise we'd limit
+ * to 32 or 64 -f options...
+ */
+typedef struct {
+    size_t  idx; /* index into an array of 32 bit words */
+    uint8_t bit; /* index _into_ the 32 bit word, thus just uint8 */
+} longbit;
+#define LONGBIT(bit) { ((bit)/32), ((bit)%32) }
+#else
+typedef uint32_t longbit;
+#define LONGBIT(bit) (bit)
+#endif
+
+/* Used to store the list of flags with names */
+typedef struct {
+    const char *name;
+    longbit    bit;
+} opt_flag_def;
+
+/*===================================================================*/
+/* list of -f flags, like -fdarkplaces-string-table-bug */
+enum {
+    DP_STRING_TABLE_BUG,
+    OMIT_NULLBYTES,
+
+    NUM_F_FLAGS
+};
+static const opt_flag_def opt_flag_list[] = {
+    { "darkplaces-string-table-bug", LONGBIT(DP_STRING_TABLE_BUG) },
+    { "omit-nullbytes",              LONGBIT(OMIT_NULLBYTES)      }
+};
+static const size_t opt_flag_list_count = sizeof(opt_flag_list) / sizeof(opt_flag_list[0]);
+
+enum {
+    WARN_UNUSED_VARIABLE,
+
+    NUM_W_FLAGS
+};
+static const opt_flag_def opt_warn_list[] = {
+    /* only contains single flags, no groups like 'all' */
+    { "unused-variable",             LONGBIT(WARN_UNUSED_VARIABLE) }
+};
+static const size_t opt_warn_list_count = sizeof(opt_warn_list) / sizeof(opt_warn_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
+};
+
+/*===================================================================*/
+#define OPT_FLAG(i) (!! (opt_flags[(i)/32] & (1<< ((i)%32))))
+extern uint32_t opt_flags[1 + (NUM_F_FLAGS / 32)];
+#define OPT_WARN(i) (!! (opt_warn[(i)/32] & (1<< ((i)%32))))
+extern uint32_t opt_warn[1 + (NUM_W_FLAGS / 32)];
+
 #endif