No more hacks

This commit is contained in:
Dale Weiler 2012-12-20 10:20:16 +00:00
parent 42fc620466
commit 2e57a952a7
4 changed files with 13 additions and 56 deletions

View file

@ -9,7 +9,7 @@ CYGWIN = $(findstring CYGWIN, $(UNAME))
MINGW = $(findstring MINGW32, $(UNAME))
CC ?= clang
CFLAGS += -Wall -Wextra -I. -pedantic-errors -std=gnu99
CFLAGS += -Wall -Wextra -I. -pedantic-errors
#turn on tons of warnings if clang is present
# but also turn off the STUPID ONES
ifeq ($(CC), clang)

15
con.c
View file

@ -27,7 +27,14 @@
* + some other things likewise.
*/
#ifndef _WIN32
#include <unistd.h>
# include <unistd.h>
#else
# include <io.h>
/*
* Windows and it's posix underscore bullshit. We simply fix this
* with yay, another macro :P
*/
# define isatty _isatty
#endif
#define GMQCC_IS_STDOUT(X) ((FILE*)((void*)X) == stdout)
@ -59,12 +66,6 @@ typedef struct {
#define STDERR_FILENO 2
#define STDOUT_FILENO 1
/*
* Windows and it's posix underscore bullshit. We simply fix this
* with yay, another macro :P
*/
#define isatty _isatty
enum {
RESET = 0,
BOLD = 1,

48
gmqcc.h
View file

@ -134,52 +134,8 @@
# define GMQCC_NORETURN
#endif
/* no stdint.h in < C99 */
#if __STDC_VERSION__ < 199901L
# if CHAR_MIN == -128
typedef unsigned char uint8_t; /* same as below */
# elif SCHAR_MIN == -128
typedef unsigned char uint8_t; /* same as above */
# endif
# if SHRT_MAX == 0x7FFF
typedef short int16_t;
typedef unsigned short uint16_t;
# elif INT_MAX == 0x7FFF
typedef int int16_t;
typedef unsigned int uint16_t;
# endif
# if INT_MAX == 0x7FFFFFFF
typedef int int32_t;
typedef unsigned int uint32_t;
# elif LONG_MAX == 0x7FFFFFFF
typedef long int32_t;
typedef unsigned long uint32_t;
# endif
# if defined(__GNUC__) || defined (__CLANG__)
typedef int int64_t __attribute__((__mode__(__DI__)));
typedef unsigned int uint64_t __attribute__((__mode__(__DI__)));
# elif defined(_MSC_VER)
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
# else
/*
* Incorrectly size the types so static assertions below will
* fail. There is no valid way to get a 64bit type at this point
* without making assumptions of too many things.
*/
typedef struct { char _fail : 0; } int64_t;
typedef struct { char _fail : 0; } uint64_t;
# endif
/* Ensure type sizes are correct: */
typedef char uint8_size_is_correct [sizeof(uint8_t) == 1?1:-1];
typedef char uint16_size_is_correct [sizeof(uint16_t) == 2?1:-1];
typedef char uint32_size_is_correct [sizeof(uint32_t) == 4?1:-1];
typedef char uint64_size_is_correct [sizeof(uint64_t) == 8?1:-1];
typedef char int16_size_if_correct [sizeof(int16_t) == 2?1:-1];
typedef char int32_size_is_correct [sizeof(int32_t) == 4?1:-1];
typedef char int64_size_is_correct [sizeof(int64_t) >= 8?1:-1];
#else
/* TODO: visual studiblows work around */
#ifndef _MSC_VER
# include <stdint.h>
#endif

4
util.c
View file

@ -533,7 +533,7 @@ typedef struct hash_node_t {
* below. These should be autovectorized by gcc.
*/
#ifdef __x86_64__
static GMQCC_INLINE uint32_t util_hthashfunc(hash_table_t *ht, const char *key, size_t seed) {
GMQCC_INLINE uint32_t util_hthashfunc(hash_table_t *ht, const char *key, size_t seed) {
const uint64_t mix = 0xC6A4A7935BD1E995UL;
const int rot = 47;
size_t size = strlen(key);
@ -575,7 +575,7 @@ static GMQCC_INLINE uint32_t util_hthashfunc(hash_table_t *ht, const char *key,
}
#else
static GMQCC_INLINE uint32_t util_hthashfunc(hash_table_t *ht, const char *key, size_t seed) {
GMQCC_INLINE uint32_t util_hthashfunc(hash_table_t *ht, const char *key, size_t seed) {
const uint32_t mix = 0x5BD1E995;
const uint32_t rot = 24;
size_t size = strlen(key);