]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - gmqcc.h
This should be the tag
[xonotic/gmqcc.git] / gmqcc.h
diff --git a/gmqcc.h b/gmqcc.h
index 2ab3a00e5cc940ff97229e47bc5f161625974c0d..ff74f45163d098c4e33c1f4684b32201ac7dae5c 100644 (file)
--- a/gmqcc.h
+++ b/gmqcc.h
@@ -41,7 +41,7 @@
 #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
@@ -149,6 +149,16 @@ GMQCC_IND_STRING(GMQCC_VERSION_PATCH) \
 #    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
@@ -325,8 +335,9 @@ bool  util_strdigit      (const char *);
 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);
 
@@ -379,7 +390,6 @@ void _util_vec_grow(void **a, size_t i, size_t s);
 #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 {
@@ -713,9 +723,10 @@ enum {
 /* 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;
@@ -728,7 +739,7 @@ typedef struct {
     uint16_t                  crc;
     uint32_t                  entfields;
     ht                        string_cache;
-    qcint_t                     string_cached_empty;
+    qcint_t                   string_cached_empty;
 } code_t;
 
 /*
@@ -744,7 +755,7 @@ GMQCC_WARN
 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 *);
 
@@ -824,11 +835,6 @@ typedef struct {
     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 ==============================*/
 /*===================================================================*/