/* General purpose definitions for the GNU Objective-C Library. Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc. Written by: Andrew Kachites McCallum Created: May 1993 This file is part of the GNUstep Base Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. */ #ifndef __preface_h_OBJECTS_INCLUDE #define __preface_h_OBJECTS_INCLUDE #include #include #if defined(__WIN32__) || defined(_WIN32) || defined(__MS_WIN32__) # if !defined(__WIN32__) # define __WIN32__ # endif #endif #if defined(__MINGW32__) # if !defined(__MINGW__) # define __MINGW__ # endif # if !defined(__WIN32__) # define __WIN32__ # endif #endif #ifndef __has_include # define __has_include(x) 0 #endif #ifndef __has_feature # define __has_feature(x) 0 #endif #if defined(__WIN32__) #include #ifndef _WIN32_WINNT #define _WIN32_WINNT Windows2000 #endif #if !defined(WINVER) #define WINVER Windows2000 #elif (WINVER < Windows2000) #undef WINVER #define WINVER Windows2000 #endif #include #define GNUSTEP_BASE_SOCKET_MESSAGE (WM_USER + 1) #endif /* From CoreFoundation.h */ #ifndef CF_EXCLUDE_CSTD_HEADERS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif /* FIXME: Should not all these includes go in GSObjCRuntime.h ? */ #if NeXT_RUNTIME #include #include #include #ifndef _C_ATOM #define _C_ATOM '%' #endif #define _F_CONST 0x01 #define _F_IN 0x01 #define _F_OUT 0x02 #define _F_INOUT 0x03 #define _F_BYCOPY 0x04 #define _F_ONEWAY 0x08 #define _C_CONST 'r' #define _C_IN 'n' #define _C_INOUT 'N' #define _C_OUT 'o' #define _C_BYCOPY 'O' #define _C_ONEWAY 'V' #else /* GNU Objective C Runtime */ #include #if defined (__GNU_LIBOBJC__) #include #else #include #include #endif #endif // Include the blocks runtime header if it's available (It shouldn't matter // that this doesn't work on compilers that don't support __has_include(), // because they also don't support blocks). #if __has_include() # include #endif /* * Hack for older compiler versions that don't have all defines * needed in objc-api.h */ #ifndef _C_LNG_LNG #define _C_LNG_LNG 'q' #endif #ifndef _C_ULNG_LNG #define _C_ULNG_LNG 'Q' #endif #ifndef __WIN32__ #include /* Hack to get rid of warning in GNU libc 2.0.3. */ #endif /* The following group of lines maintained by the gstep-base configure */ #define GNUSTEP_BASE_VERSION @VERSION@ #define GNUSTEP_BASE_MAJOR_VERSION @MAJOR_VERSION@ #define GNUSTEP_BASE_MINOR_VERSION @MINOR_VERSION@ #define GNUSTEP_BASE_SUBMINOR_VERSION @SUBMINOR_VERSION@ #define GNUSTEP_BASE_GCC_VERSION @GCC_VERSION@ /* Do not use the following macros! */ #define OBJC_DEP(M) \ ({ static BOOL beenHere = NO; if (beenHere == NO) {\ beenHere = YES; fprintf(stderr, "%s:%d %s", __FILE__, __LINE__, (M));}}) #define OBJC_MALLOC(VAR, TYPE, NUM) \ (OBJC_DEP("OBJC_MALLOC is deprecated ... use malloc\n"),(VAR) = (TYPE *) malloc ((unsigned)(NUM)*sizeof(TYPE))) #define OBJC_VALLOC(VAR, TYPE, NUM) \ (OBJC_DEP("OBJC_VALLOC is deprecated\n"),(VAR) = (TYPE *) valloc ((unsigned)(NUM)*sizeof(TYPE))) #define OBJC_ATOMIC_MALLOC(VAR, TYPE, NUM) \ (OBJC_DEP("OBJC_ATOMIC_MALLOC is deprecated\n"),(VAR) = (TYPE *) malloc ((unsigned)(NUM)*sizeof(TYPE))) #define OBJC_REALLOC(VAR, TYPE, NUM) \ (OBJC_DEP("OBJC_REALLOC is deprecated ... use realloc\n"),(VAR) = (TYPE *) realloc ((VAR), (unsigned)(NUM)*sizeof(TYPE))) #define OBJC_CALLOC(VAR, TYPE, NUM) \ (OBJC_DEP("OBJC_CALLOC is deprecated ... use calloc\n"),(VAR) = (TYPE *) calloc ((unsigned)(NUM), sizeof(TYPE))) #define OBJC_FREE(PTR) (OBJC_DEP("OBJC_FREE is deprecated ... use free\n"), free (PTR)) #ifndef MAX #define MAX(a,b) \ ({__typeof__(a) _MAX_a = (a); __typeof__(b) _MAX_b = (b); \ _MAX_a > _MAX_b ? _MAX_a : _MAX_b; }) #endif #ifndef MIN #define MIN(a,b) \ ({__typeof__(a) _MIN_a = (a); __typeof__(b) _MIN_b = (b); \ _MIN_a < _MIN_b ? _MIN_a : _MIN_b; }) #endif #ifndef ABS #define ABS(a) \ ({__typeof__(a) _ABS_a = (a); \ _ABS_a < 0 ? -_ABS_a : _ABS_a; }) #endif #ifndef STRINGIFY #define STRINGIFY(s) XSTRINGIFY(s) #define XSTRINGIFY(s) #s #endif #ifndef OBJC_STRINGIFY #define OBJC_STRINGIFY(s) OBJC_XSTRINGIFY(s) #define OBJC_XSTRINGIFY(s) @#s #endif #ifndef PTR2LONG #define PTR2LONG(P) (((char*)(P))-(char*)0) #endif #ifndef LONG2PTR #define LONG2PTR(L) (((char*)0)+(L)) #endif #if VSPRINTF_RETURNS_LENGTH #define VSPRINTF_LENGTH(VSPF_CALL) (VSPF_CALL) #else #define VSPRINTF_LENGTH(VSPF_CALL) strlen((VSPF_CALL)) #endif /* VSPRINTF_RETURNS_LENGTH */ #if VASPRINTF_RETURNS_LENGTH #define VASPRINTF_LENGTH(VASPF_CALL) (VASPF_CALL) #else #define VASPRINTF_LENGTH(VASPF_CALL) strlen((VASPF_CALL)) #endif /* VSPRINTF_RETURNS_LENGTH */ /* Evil hack to stop gcc-4.1 complaining about a dealloc method which * does not call the superclass implementation. */ #define GSNOSUPERDEALLOC if (0) [super dealloc] #ifndef CF_EXCLUDE_CSTD_HEADERS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif // Strong has different semantics in GC and ARC modes, so we need to have a // macro that picks the correct one. #if __OBJC_GC__ # define GS_GC_STRONG __strong #else # define GS_GC_STRONG #endif #if !__has_feature(objc_arc) # if __OBJC_GC__ # define __strong __attribute__((objc_gc(strong))) # define __weak __attribute__((objc_gc(weak))) # else # define __strong # define __weak # endif #endif #ifndef __unsafe_unretained # if !__has_feature(objc_arc) # define __unsafe_unretained # endif #endif #ifndef __bridge # if !__has_feature(objc_arc) # define __bridge # endif #endif #endif /* __preface_h_OBJECTS_INCLUDE */