* of my time.
*/
#ifdef _MSC_VER
-# pragma warning(disable : 4244 ) /* conversion from 'int' to 'float', possible loss of data */
-# pragma warning(disable : 4018 ) /* signed/unsigned mismatch */
-# pragma warning(disable : 4996 ) /* This function or variable may be unsafe */
-# pragma warning(disable : 4700 ) /* uninitialized local variable used */
-# pragma warning(disable : 4129 ) /* unrecognized character secape sequence */
+# pragma warning(disable : 4244 ) /* conversion from 'int' to 'float', possible loss of data */
+# pragma warning(disable : 4018 ) /* signed/unsigned mismatch */
+# pragma warning(disable : 4996 ) /* This function or variable may be unsafe */
#endif
#define GMQCC_VERSION_MAJOR 0
# endif
#endif
#if !defined (PLATFORM_BYTE_ORDER)
-# if defined (__aplha__) || defined (__aplha) || defined (i386) || \
+# if defined (__alpha__) || defined (__alpha) || defined (i386) || \
defined (__i386__) || defined (_M_I86) || defined (_M_IX86) || \
defined (__OS2__) || defined (sun386) || defined (__TURBOC__) || \
defined (vax) || defined (vms) || defined (VMS) || \
bool util_filexists (const char *);
bool util_strupper (const char *);
bool util_strdigit (const char *);
-bool util_strncmpexact (const char *, const char *, size_t);
char *util_strdup (const char *);
-char *util_strrq (const char *);
-char *util_strrnl (const char *);
-char *util_strsws (const char *);
-char *util_strchp (const char *, const char *);
void util_debug (const char *, const char *, ...);
int util_getline (char **, size_t *, FILE *);
void util_endianswap (void *, size_t, unsigned int);
size_t util_strtononcmd (const char *, char *, size_t);
uint16_t util_crc16(uint16_t crc, const char *data, size_t len);
-uint32_t util_crc32(uint32_t crc, const char *data, size_t len);
/*
* If we're compiling as C++ code we need to fix some subtle issues regarding casts between mem_a/mem_d
# define mem_r(x, n) util_memory_r((void*)(x), (n), __LINE__, __FILE__)
#endif
-/*
- * TODO: make these safer to use. Currently this only works on
- * x86 and x86_64, some systems will likely not like this. Such
- * as BE systems. (and clean this up to use a structure ... )
- */
-#define FLT2INT(Y) *((int32_t*)&(Y))
-#define INT2FLT(Y) *((float *)&(Y))
+/** TODO: Cleanup this whole mess {{{ */
/* New flexible vector implementation from Dale */
#define _vec_raw(A) (((size_t*)(void*)(A)) - 2)
#define _vec_forcegrow(A,N) _util_vec_grow(((void**)&(A)), (N), sizeof(*(A)))
#define _vec_remove(A,S,I,N) (memmove((char*)(A)+(I)*(S),(char*)(A)+((I)+(N))*(S),(S)*(_vec_end(A)-(I)-(N))), _vec_end(A)-=(N))
void _util_vec_grow(void **a, size_t i, size_t s);
+
/* exposed interface */
#define vec_free(A) ((A) ? (mem_d((void*)_vec_raw(A)), (A) = NULL) : 0)
#define vec_push(A,V) (_vec_mightgrow((A),1), (A)[_vec_end(A)++] = (V))
#define vec_append(A,N,S) memcpy(vec_add((A), (N)), (S), N * sizeof(*(S)))
#define vec_remove(A,I,N) _vec_remove((A), sizeof(*(A)), (I), (N))
#define vec_pop(A) (_vec_end(A)-=1)
+
/* these are supposed to NOT reallocate */
#define vec_shrinkto(A,N) (_vec_end(A) = (N))
#define vec_shrinkby(A,N) (_vec_end(A) -= (N))
} \
} while(0)
+/** }}} */
+
typedef struct hash_table_t {
size_t size;
struct hash_node_t **table;
/*===================================================================*/
/*====================== ftepp.c commandline ========================*/
/*===================================================================*/
-bool ftepp_init ();
-bool ftepp_preprocess_file (const char *filename);
-bool ftepp_preprocess_string(const char *name, const char *str);
-void ftepp_finish ();
-const char *ftepp_get ();
-void ftepp_flush ();
-void ftepp_add_define (const char *source, const char *name);
-void ftepp_add_macro (const char *name, const char *value);
+bool ftepp_init ();
+bool ftepp_preprocess_file (const char *filename);
+bool ftepp_preprocess_string(const char *name, const char *str);
+void ftepp_finish ();
+const char *ftepp_get ();
+void ftepp_flush ();
+void ftepp_add_define (const char *source, const char *name);
+void ftepp_add_macro (const char *name, const char *value);
/*===================================================================*/
/*======================= main.c commandline ========================*/
extern opts_cmd_t opts;
-/*===================================================================*/
#define OPTS_FLAG(i) (!! (opts.flags [(i)/32] & (1<< ((i)%32))))
#define OPTS_WARN(i) (!! (opts.warn [(i)/32] & (1<< ((i)%32))))
#define OPTS_WERROR(i) (!! (opts.werror [(i)/32] & (1<< ((i)%32))))