#define GMQCC_VERSION \
GMQCC_VERSION_BUILD(GMQCC_VERSION_MAJOR, GMQCC_VERSION_MINOR, GMQCC_VERSION_PATCH)
/* Undefine the following on a release-tag: */
-#define GMQCC_VERSION_TYPE_DEVEL
+/*#define GMQCC_VERSION_TYPE_DEVEL*/
/* Full version string in case we need it */
#ifdef GMQCC_VERSION_TYPE_DEVEL
# define GMQCC_NORETURN
#endif /*! (defined(__GNUC__) && __GNUC__ >= 2) || defined (__CLANG__) */
+#if (defined(__GNUC__)) || defined(__CLANG__)
+# define GMQCC_LIKELY(X) __builtin_expect((X), 1)
+# define GMQCC_UNLIKELY(X) __builtin_expect((X), 0)
+#else
+# define GMQCC_LIKELY(X) (X)
+# define GMQCC_UNLIKELY(X) (X)
+#endif
+
+#define GMQCC_ARRAY_COUNT(X) (sizeof(X) / sizeof((X)[0]))
+
#ifndef _MSC_VER
# include <stdint.h>
#else
void util_debug (const char *, 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);
+size_t util_strtocmd (const char *, char *, size_t);
+size_t util_strtononcmd (const char *, char *, size_t);
+size_t util_optimizationtostr(const char *, char *, size_t);
uint16_t util_crc16(uint16_t crc, const char *data, size_t len);
#define vec_shrinkto(A,N) ((void)(vec_meta(A)->used = (N)))
#define vec_shrinkby(A,N) ((void)(vec_meta(A)->used -= (N)))
#define vec_append(A,N,S) ((void)(memcpy(vec_add((A), (N)), (S), (N) * sizeof(*(S)))))
-#define vec_upload(X,Y,S) ((void)(memcpy(vec_add((X), (S) * sizeof(*(Y))), (Y), (S) * sizeof(*(Y)))))
#define vec_remove(A,I,N) ((void)(memmove((A)+(I),(A)+((I)+(N)),sizeof(*(A))*(vec_meta(A)->used-(I)-(N))),vec_meta(A)->used-=(N)))
typedef struct correct_trie_s {
/* TODO: elide */
extern const char *util_instr_str[VINSTR_END];
-/* TOO: _t */
-typedef float qcfloat_t;
-typedef int32_t qcint_t;
+
+typedef float qcfloat_t;
+typedef int32_t qcint_t;
+typedef uint32_t qcuint_t;
typedef struct {
prog_section_statement_t *statements;
uint16_t crc;
uint32_t entfields;
ht string_cache;
- qcint_t string_cached_empty;
+ qcint_t string_cached_empty;
} code_t;
/*
code_t *code_init (void);
void code_cleanup (code_t *);
uint32_t code_genstring (code_t *, const char *string);
-qcint_t code_alloc_field (code_t *, size_t qcsize);
+qcint_t code_alloc_field (code_t *, size_t qcsize);
void code_push_statement(code_t *, prog_section_statement_t *stmt, int linenum);
void code_pop_statement (code_t *);
qcfloat_t x, y, z;
} vec3_t;
-vec3_t vec3_add (vec3_t, vec3_t);
-vec3_t vec3_sub (vec3_t, vec3_t);
-qcfloat_t vec3_mulvv(vec3_t, vec3_t);
-vec3_t vec3_mulvf(vec3_t, float);
-
/*===================================================================*/
/*============================= exec.c ==============================*/
/*===================================================================*/