--- parser3/src/include/pa_config_includes.h 2001/04/17 19:00:35 1.3 +++ parser3/src/include/pa_config_includes.h 2012/06/09 10:55:35 1.35 @@ -1,9 +1,35 @@ +/** @file + Parser: includes all Configure-d headers + + Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com) + Author: Alexandr Petrosian (http://paf.design.ru) + + when used Configure [HAVE_CONFIG_H] it uses defines from Configure, + fixed otherwise. +*/ + +#ifndef PA_CONFIG_INCLUDES_H +#define PA_CONFIG_INCLUDES_H + +#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 + #if HAVE_CONFIG_H # include "pa_config_auto.h" #else # include "pa_config_fixed.h" #endif +#ifdef __cplusplus +# undef inline +#endif + +#ifdef HAVE_ASSERT_H +# include +#endif + #ifdef HAVE_CTYPE_H # include #endif @@ -28,6 +54,10 @@ # include #endif +#ifdef HAVE_STDDEF_H +# include +#endif + #ifdef HAVE_STDIO_H # include #endif @@ -44,15 +74,174 @@ # include #endif -#ifdef HAVE_TIME_H +#include + +#ifdef HAVE_STRING_H +# include +#endif + +#ifdef HAVE_LIMITS_H +#include +#endif + +#ifdef HAVE_DIRECT_H +# include +#endif + +#ifdef HAVE_SETJMP_H +# include +#endif + +#ifdef HAVE_MEMORY_H +# include +#endif + +#ifdef HAVE_NEW +#include +#endif + +#ifdef HAVE_SYS_FILE_H +#include +#endif + +#ifdef HAVE_SYS_LOCKING_H +#include +#endif + +#ifdef HAVE_SYS_TYPES_H +#include +#endif + +#ifdef HAVE_SYS_SELECT_H +#include +#endif + +#ifdef HAVE_SIGNAL_H +#include +#endif + +#ifdef HAVE_SYS_SOCKET_H +# include +#else +# if defined(HAVE_WINSOCK_H) && !defined(_MSC_VER) && !defined(CYGWIN) +# include +# endif +#endif + +// must go anywhere after winsock [cygwin time.h checks for already inclusion of winsock.h] +#if TIME_WITH_SYS_TIME +# include # include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif #endif -#ifdef HAVE_STDLIB_H -# include + +#ifdef HAVE_NETINET_IN_H +#include +#endif + +#ifdef HAVE_ARPA_INET_H +#include +#endif + +#ifdef HAVE_NETDB_H +#include +#endif + + +// math function replacements + +#ifdef __cplusplus + +#ifndef HAVE_TRUNC +inline double trunc(double param) { return param > 0? floor(param) : ceil(param); } +#endif + +#ifndef HAVE_ROUND +inline double round(double param) { return floor(param+0.5); } +#endif + +#ifndef HAVE_SIGN +inline double sign(double param) { return param > 0 ? 1 : ( param < 0 ? -1 : 0 ); } +#endif + +#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 +#ifdef PA_RELEASE_ASSERTS +// this helps to remove warnings on helper-to-assert variables +#undef NDEBUG +// pa_globals.C +void pa_release_assert(const char* str, const char* file, int line); +#undef assert +#define assert(exp) (void)( (exp) || (pa_release_assert(#exp, __FILE__, __LINE__), 0) ) +#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 + +#endif