X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=gmqcc.h;h=6e0d3ac05ecfca2f7bc858212dc56b8751f539d2;hb=3988aae73e889975892af76920d1d16177de56b8;hp=f396b28ea0677d7712e3a342f61b3b8ca072c98a;hpb=4d0bf1607a8105201190233c60556d1f8b307f21;p=xonotic%2Fgmqcc.git diff --git a/gmqcc.h b/gmqcc.h index f396b28..6e0d3ac 100644 --- a/gmqcc.h +++ b/gmqcc.h @@ -256,14 +256,14 @@ GMQCC_IND_STRING(GMQCC_VERSION_PATCH) \ /* stat.c */ 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_reallocate(void *, size_t, size_t, const char *, const char *); void stat_mem_deallocate(void *); -void *stat_mem_allocate (size_t, size_t, const char *); +void *stat_mem_allocate (size_t, size_t, const char *, const char *); -#define mem_a(SIZE) stat_mem_allocate ((SIZE), __LINE__, __FILE__) +#define mem_a(SIZE) stat_mem_allocate ((SIZE), __LINE__, __FILE__, #SIZE) #define mem_d(PTRN) stat_mem_deallocate((void*)(PTRN)) -#define mem_r(PTRN, SIZE) stat_mem_reallocate((void*)(PTRN), (SIZE), __LINE__, __FILE__) -#define mem_af(SIZE, FILE, LINE) stat_mem_allocate ((SIZE), (LINE), (FILE)) +#define mem_r(PTRN, SIZE) stat_mem_reallocate((void*)(PTRN), (SIZE), __LINE__, __FILE__, #SIZE) +#define mem_af(SIZE, FILE, LINE) stat_mem_allocate ((SIZE), (LINE), (FILE), #SIZE) /* TODO: rename to mem variations */ #define util_strdup(SRC) stat_mem_strdup((char*)(SRC), __LINE__, __FILE__, false) @@ -313,7 +313,8 @@ const struct tm *util_localtime(const time_t *timer); const char *util_ctime (const time_t *timer); typedef struct fs_file_s fs_file_t; -int util_isatty (fs_file_t *); + +bool util_isatty(fs_file_t *); /* * A flexible vector implementation: all vector pointers contain some @@ -1010,11 +1011,19 @@ typedef enum { COMPILER_GMQCC /* this QuakeC */ } opts_std_t; -typedef union { - bool B; - uint16_t U16; - uint32_t U32; - char *STR; +typedef struct { + union { + bool b; + uint16_t u16; + uint32_t u32; + + union { + char *p; + const char *c; + } str; + } data; + + bool allocated; } opt_value_t; @@ -1036,9 +1045,11 @@ extern opts_cmd_t opts; #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_BOOL(X) (opts.options[X].B) -#define OPTS_OPTION_U16(X) (opts.options[X].U16) -#define OPTS_OPTION_U32(X) (opts.options[X].U32) -#define OPTS_OPTION_STR(X) (opts.options[X].STR) +#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) #endif /*! GMQCC_HDR */