Loading...
Searching...
No Matches
 
 
 
 
 
   21#ifndef _freetds_macros_h_ 
   22#define _freetds_macros_h_ 
   24#ifndef _freetds_config_h_ 
   25#error should include config.h before 
   32#include "tds_sysdep_public.h" 
   33#include <freetds/sysdep_types.h> 
   35#define TDS_ZERO_FREE(x) do {free((x)); (x) = NULL;} while(0) 
   36#define TDS_VECTOR_SIZE(x) (sizeof(x)/sizeof(x[0])) 
   39#define TDS_OFFSET(type, field) offsetof(type, field) 
   41#define TDS_OFFSET(type, field) (((char*)&((type*)0)->field)-((char*)0)) 
   44#if ENABLE_EXTRA_CHECKS 
   45# if defined(__llvm__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))) 
   46# define TDS_COMPILE_CHECK(name,check) \ 
   47    _Static_assert(check,#name) 
   48# elif defined(__GNUC__) && __GNUC__ >= 2 
   49# define TDS_COMPILE_CHECK(name,check) \ 
   50    extern int name[(check)?1:-1] __attribute__ ((unused)) 
   52# define TDS_COMPILE_CHECK(name,check) \ 
   53    extern int name[(check)?1:-1] 
   55# define TDS_EXTRA_CHECK(stmt) stmt 
   57# define TDS_COMPILE_CHECK(name,check) \ 
   58    extern int disabled_check_##name 
   59# define TDS_EXTRA_CHECK(stmt) 
   62#if defined(__GNUC__) && __GNUC__ >= 3 
   63# define TDS_LIKELY(x)  __builtin_expect(!!(x), 1) 
   64# define TDS_UNLIKELY(x)    __builtin_expect(!!(x), 0) 
   66# define TDS_LIKELY(x)  (x) 
   67# define TDS_UNLIKELY(x)    (x) 
   70#if ENABLE_EXTRA_CHECKS && defined(__GNUC__) && __GNUC__ >= 4 
   71#define TDS_WUR __attribute__ ((__warn_unused_result__)) 
   76#define TDS_INT2PTR(i) ((void*)(((char*)0)+((TDS_INTPTR)(i)))) 
   77#define TDS_PTR2INT(p) ((int)(((char*)(p))-((char*)0)))