--- parser3/src/include/pa_config_includes.h 2002/02/08 08:30:12 1.17 +++ parser3/src/include/pa_config_includes.h 2017/12/03 23:36:23 1.55 @@ -1,119 +1,246 @@ /** @file Parser: includes all Configure-d headers - Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001-2017 Art. Lebedev Studio (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) - $Id: pa_config_includes.h,v 1.17 2002/02/08 08:30:12 paf Exp $ - - when used Configure [HAVE_CONFIG_H] it uses defines from Configure, fixed otherwise. */ -#if _MSC_VER -# pragma warning(disable:4291) // disable warning -// "no matching operator delete found; memory will not be freed if initialization throws an exception -#endif +#ifndef PA_CONFIG_INCLUDES_H +#define PA_CONFIG_INCLUDES_H #if HAVE_CONFIG_H -# include "pa_config_auto.h" +# include "pa_config_auto.h" #else -# include "pa_config_fixed.h" +# include "pa_config_fixed.h" #endif -#ifdef __cplusplus -# undef inline +// AC_INCLUDES_DEFAULT + +#ifdef HAVE_STDIO_H +# include +#endif + +#ifdef HAVE_SYS_TYPES_H +# include +#endif + +#ifdef HAVE_SYS_STAT_H +# include +#endif + +#ifdef HAVE_STDLIB_H +# include +#endif + +#ifdef HAVE_STDDEF_H +# include +#endif + +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif + +#ifdef HAVE_STRINGS_H +# include +#endif + +#ifdef HAVE_INTTYPES_H +# include +#endif + +#ifdef HAVE_STDINT_H +# include +#endif + +#ifdef HAVE_UNISTD_H +# include +#endif + +// other includes + +#ifdef HAVE_ASSERT_H +# include +#endif + +#ifdef HAVE_LIMITS_H +# include #endif #ifdef HAVE_CTYPE_H -# include +# include +#endif + +#ifdef HAVE_MATH_H +# include +#endif + +#ifdef HAVE_PROCESS_H +# include +#endif + +#ifdef HAVE_STDARG_H +# include +#endif + +#ifdef HAVE_SETJMP_H +# include +#endif + +#ifdef HAVE_SIGNAL_H +# include #endif #ifdef HAVE_ERRNO_H -# include +# include +#endif + +#ifdef HAVE_DIRENT_H +# include #endif #ifdef HAVE_FCNTL_H -# include +# include #endif #ifdef HAVE_IO_H -# include +# include #endif -#ifdef HAVE_PROCESS_H -# include +#ifdef HAVE_SYS_FILE_H +# include #endif -#ifdef HAVE_STDARG_H -# include +#ifdef HAVE_SYS_LOCKING_H +# include #endif -#ifdef HAVE_STDDEF_H -# include +#ifdef HAVE_SYS_SELECT_H +# include #endif -#ifdef HAVE_STDIO_H -# include +#ifdef HAVE_SYS_RESOURCE_H +# include #endif -#ifdef HAVE_SYS_STAT_H -# include +#ifdef HAVE_SYS_WAIT_H +# include #endif -#if defined(HAVE_UNISTD_H) && !defined(NO_UNISTD_H) -# include + +#ifdef HAVE_SYS_SOCKET_H +# include #endif -#ifdef HAVE_MATH_H -# include +#ifdef HAVE_NETINET_IN_H +# include #endif -#ifdef HAVE_SYS_TIME_H -# include -#else -# ifdef HAVE_TIME_H -# include -# endif +#ifdef HAVE_ARPA_INET_H +# include #endif -#ifdef HAVE_STDLIB_H -# include +#ifdef HAVE_NETDB_H +# include #endif -#ifdef HAVE_STRING_H -# include + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif #endif -#ifdef HAVE_DIRECT_H -# include +// math function replacements + +#ifdef __cplusplus + +#ifndef HAVE_TRUNC +inline double trunc(double param) { return param > 0? floor(param) : ceil(param); } #endif -#ifdef HAVE_SETJMP_H -# include +#ifndef HAVE_ROUND +inline double round(double param) { return floor(param+0.5); } #endif -#ifdef HAVE_MEMORY_H -# include +#ifndef HAVE_SIGN +inline double sign(double param) { return param > 0 ? 1 : ( param < 0 ? -1 : 0 ); } #endif -#ifdef HAVE_NEW -#include +#if !defined(max) +inline int max(int a, int b) { return a>b?a:b; } +inline int min(int a, int b){ return ab?a:b; } +inline size_t min(size_t a, size_t b){ return a +#endif // __cplusplus + +// libgc usage configuration +//#define PA_DEBUG_DISABLE_GC + +#ifdef PA_DEBUG_DISABLE_GC + +#define GC_MALLOC(size) memset(malloc(size), 0 , size) +#define GC_MALLOC_ATOMIC(size) memset(malloc(size), 0 , size) +#define GC_REALLOC(ptr, size) realloc(ptr, size) +#define GC_FREE(ptr) free(ptr) + +#define GC_NEW(t) (t *)GC_MALLOC(sizeof (t)) +#define GC_NEW_ATOMIC(t) (t *)GC_MALLOC_ATOMIC(sizeof (t)) + +#else + +#include "gc.h" + +#endif // PA_DEBUG_DISABLE_GC + + +#ifdef __GNUC__ +# define PA_ATTR_UNUSED __attribute__((unused)) +#else +# define PA_ATTR_UNUSED #endif -#ifdef HAVE_SYS_LOCKING_H -#include +#ifdef WIN32 +#define THREAD_LOCAL __declspec(thread) +#else +#define THREAD_LOCAL // __thread // multithreading support required only for apache2 module #endif -#ifdef HAVE_SYS_TYPES_H -#include +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wparentheses" // if(a=b) +#pragma clang diagnostic ignored "-Wpointer-sign" // CORD (unsigned char *) to char * in libcord +#pragma clang diagnostic ignored "-Winline-new-delete" // test for regular new/delete usage in memory.h +#endif + +#ifdef _MSC_VER +#pragma warning(disable:4355) // using this in calls to parent constructors +#pragma warning(disable:4291) // no matching operator delete found; memory will not be freed if initialization throws an exception +#pragma warning(disable:4512) // assignment operator could not be generated +#pragma warning(disable:4505) // unreferenced local function has been removed +#pragma warning(disable:4127) // conditional expression is constant; while(true) OK +#pragma warning(disable:4706) // assignment within conditional expression if(type var=somethig) OK +#pragma warning(disable:4996) // memcpy deprecation +#pragma warning(disable:4702) // unreachable code +#pragma warning(disable:4511) // copy constructor could not be generated (vs2003 specific) +#endif + +/// to debug backtrace pointers switch this on: +#if defined(_DEBUG) || defined(PA_RELEASE_ASSERTS) +//// this switches on straightforward realloc implementation, bad for profiling +//// note: this is incompatible with -DGC_ASSERTIONS, which can be switched ON in win32/gc/NT_THREADS_MAKEFILE +#define GC_DEBUG #endif -#ifdef HAVE_SYS_SELECT_H -#include #endif