/*
- * Copyright (C) 2012, 2013
+ * Copyright (C) 2012, 2013, 2014
* Dale Weiler
* Wolfgang Bumiller
*
#else
# ifdef _MSC_VER
/* conversion from 'int' to 'float', possible loss of data */
-# pragma warning(disable : 4244 )
+# pragma warning(disable : 4244)
typedef unsigned __int8 uint8_t;
typedef unsigned __int16 uint16_t;
#define util_isprint(a) (((unsigned)(a)-0x20) < 0x5F)
#define util_isspace(a) (((a) >= 9 && (a) <= 13) || (a) == ' ')
-bool util_strupper (const char *);
-bool util_strdigit (const char *);
-void util_endianswap (void *, size_t, unsigned int);
+bool util_strupper(const char *);
+bool util_strdigit(const char *);
+
+void util_endianswap(void *, size_t, unsigned int);
size_t util_strtocmd (const char *, char *, size_t);
size_t util_strtononcmd (const char *, char *, size_t);
typedef struct fs_file_s fs_file_t;
bool util_isatty(fs_file_t *);
+size_t hash(const char *key);
/*
* A flexible vector implementation: all vector pointers contain some
/* TODO: elide */
extern const char *util_instr_str[VINSTR_END];
+void util_swap_header (prog_header_t *code_header);
+void util_swap_statements (prog_section_statement_t *statements);
+void util_swap_defs_fields(prog_section_both_t *section);
+void util_swap_functions (prog_section_function_t *functions);
+void util_swap_globals (int32_t *globals);
typedef float qcfloat_t;
typedef int32_t qcint_t;
extern opts_cmd_t opts;
#define OPTS_GENERIC(f,i) (!! (((f)[(i)/32]) & (1<< (unsigned)((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))
+
#define OPTS_OPTION_DUPED(X) (opts.options[X].allocated)
-#define OPTS_OPTION_BOOL(X) (opts.options[X].data.b)
-#define OPTS_OPTION_U16(X) (opts.options[X].data.u16)
-#define OPTS_OPTION_U32(X) (opts.options[X].data.u32)
-#define OPTS_OPTION_DUP(X) *(OPTS_OPTION_DUPED(X)=true, &(opts.options[X].data.str.p))
-#define OPTS_OPTION_STR(X) (opts.options[X].data.str.c)
+#define OPTS_OPTION_BOOL(X) (opts.options[X].data.b)
+#define OPTS_OPTION_U16(X) (opts.options[X].data.u16)
+#define OPTS_OPTION_U32(X) (opts.options[X].data.u32)
+#define OPTS_OPTION_STR(X) (opts.options[X].data.str.c)
+#define OPTS_OPTION_DUP(X) *(OPTS_OPTION_DUPED(X)=true, &(opts.options[X].data.str.p))
#endif /*! GMQCC_HDR */