diff --git a/src/acc/acc_arch.h b/src/acc/acc_arch.h index ce40bd3a..c3642216 100644 --- a/src/acc/acc_arch.h +++ b/src/acc/acc_arch.h @@ -31,7 +31,8 @@ * ACC_ENDIAN_BIG_ENDIAN * * Note that this list is not exhaustive - actually we only really care - * about IA32 which allows unaligned memory access (at reasonable speed). + * about architectures which allows unaligned memory access at reasonable + * speed (for the moment this means IA16 and IA32). */ #if (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16) @@ -50,11 +51,11 @@ # define ACC_ARCH_IA64 1 # define ACC_INFO_ARCH "ia64" #elif (ACC_OS_DOS32 || ACC_OS_OS2) -# error "missing define for CPU architechture" -#elif (0 && ACC_OS_WIN32) -# error "missing define for CPU architechture" -#elif (0 && ACC_OS_WIN64) -# error "missing define for CPU architechture" +# error "missing define for CPU architecture" +#elif (ACC_OS_WIN32) +# error "missing define for CPU architecture" +#elif (ACC_OS_WIN64) +# error "missing define for CPU architecture" #elif (ACC_OS_TOS) || defined(__m68000__) # define ACC_ARCH_M68K 1 # define ACC_INFO_ARCH "m68k" diff --git a/src/acc/acc_auto.h b/src/acc/acc_auto.h index ae43772c..5c95808c 100644 --- a/src/acc/acc_auto.h +++ b/src/acc/acc_auto.h @@ -187,12 +187,12 @@ #elif (ACC_CC_TURBOC) # undef HAVE_UNISTD_H # undef HAVE_SYS_TIME_H +# undef HAVE_SYS_TYPES_H /* useless */ # if (ACC_OS_WIN32 || ACC_OS_WIN64) # undef HAVE_DIRENT_H /* pulls in ; use instead */ # endif # if (__TURBOC__ < 0x0200) # undef HAVE_SIGNAL_H /* not working */ -# undef HAVE_SYS_TYPES_H # endif # if (__TURBOC__ < 0x0400) # undef HAVE_DIRECT_H @@ -319,7 +319,7 @@ # undef HAVE_UTIME /* struct utimbuf is missing */ # undef HAVE_VSNPRINTF #elif (ACC_CC_BORLANDC) -# if (ACC_OS_DOS16 || ACC_OS_WIN16) +# if defined(ACC_MM_TINY) # undef HAVE_DIFFTIME /* difftime() is in the math library */ # endif # if (__BORLANDC__ < 0x0400) @@ -339,7 +339,7 @@ #elif defined(__DJGPP__) # undef HAVE_SNPRINTF # undef HAVE_VSNPRINTF -#elif (ACC_CC_IBMC && ACC_OS_OS2) +#elif (ACC_CC_IBMC) # undef HAVE_SNPRINTF # undef HAVE_VSNPRINTF #elif (ACC_CC_INTELC) @@ -493,7 +493,7 @@ # define SIZEOF___INT64 8 # define SIZEOF_UNSIGNED___INT64 8 #elif (ACC_ARCH_IA32 && (ACC_CC_BORLANDC && __BORLANDC__ >= 0x0520)) - /* WARNING: unsigned __int64 is somewhat broken in 0x0520 */ + /* INFO: unsigned __int64 is somewhat broken in 0x0520; fixed in 0x0530 */ # define SIZEOF___INT64 8 # define SIZEOF_UNSIGNED___INT64 8 #elif (ACC_ARCH_IA32 && (ACC_CC_WATCOMC && __WATCOMC__ >= 1100)) diff --git a/src/acc/acc_chk.ch b/src/acc/acc_chk.ch index b6a85384..90ea9f71 100644 --- a/src/acc/acc_chk.ch +++ b/src/acc/acc_chk.ch @@ -23,7 +23,7 @@ /* compile-time sign */ #if !defined(ACCCHK_ASSERT_SIGN_T) -# define ACCCHK_ASSERT_SIGN_T(type, relop) \ +# define ACCCHK_ASSERT_SIGN_T(type,relop) \ ACCCHK_ASSERT( (type) (-1) relop (type) 0 ) \ ACCCHK_ASSERT( (type) (~(type)0) relop (type) 0 ) \ ACCCHK_ASSERT( (type) (~(type)0) == (type) (-1) ) diff --git a/src/acc/acc_cxx.h b/src/acc/acc_cxx.h index f614661f..ea38ee83 100644 --- a/src/acc/acc_cxx.h +++ b/src/acc/acc_cxx.h @@ -19,9 +19,22 @@ /************************************************************************* -// +// exceptions +// ACC_CXX_NOTHROW **************************************************************************/ +#if (ACC_CC_GNUC && (ACC_CC_GNUC < 0x028000ul)) +# define ACC_CXX_NOTHROW +#elif (ACC_CC_BORLANDC && (__BORLANDC__ < 0x0450)) +# define ACC_CXX_NOTHROW +#elif (ACC_CC_TURBOC) +# define ACC_CXX_NOTHROW +#elif (ACC_CC_MSC && (_MSC_VER < 1100)) +# define ACC_CXX_NOTHROW +#elif (ACC_CC_WATCOMC && !defined(_CPPUNWIND)) +# define ACC_CXX_NOTHROW +#endif + #if !defined(ACC_CXX_NOTHROW) # define ACC_CXX_NOTHROW throw() #endif @@ -29,58 +42,89 @@ /************************************************************************* // disable dynamic allocation of an object +// ACC_CXX_DISABLE_NEW_DELETE +// ACC_CXX_DISABLE_NEW_DELETE_STRICT **************************************************************************/ -#if defined(new) || defined(delete) -#elif (ACC_CC_SYMANTECC || ACC_CC_ZORTECHC) +#undef __ACC_CXX_HAVE_ARRAY_NEW +#undef __ACC_CXX_HAVE_PLACEMENT_NEW +#undef __ACC_CXX_HAVE_PLACEMENT_DELETE + +#if (ACC_CC_BORLANDC && (__BORLANDC__ < 0x0450)) #elif (ACC_CC_GNUC && (ACC_CC_GNUC < 0x029000ul)) +# define ACC_CXX_DISABLE_NEW_DELETE private: +#elif (ACC_CC_MSC && ACC_MM_HUGE) +# define ACC_CXX_DISABLE_NEW_DELETE private: +#elif (ACC_CC_MSC && (_MSC_VER < 1100)) +#elif (ACC_CC_SYMANTECC || ACC_CC_ZORTECHC) +#elif (ACC_CC_TURBOC) +#elif (ACC_CC_WATCOMC && (__WATCOMC__ < 1100)) #else -# define __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_NEW \ - static void* operator new(size_t, void*); +# define __ACC_CXX_HAVE_ARRAY_NEW 1 +#endif + +#if (__ACC_CXX_HAVE_ARRAY_NEW) +# define __ACC_CXX_HAVE_PLACEMENT_NEW 1 +#endif + +#if (__ACC_CXX_HAVE_PLACEMENT_NEW) # if (ACC_CC_GNUC >= 0x030000ul) -# define __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_DELETE \ - static void operator delete(void*, void*) ACC_CXX_NOTHROW { } +# define __ACC_CXX_HAVE_PLACEMENT_DELETE 1 # elif (ACC_CC_INTELC) -# define __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_DELETE \ - static void operator delete(void*, void*) ACC_CXX_NOTHROW { } +# define __ACC_CXX_HAVE_PLACEMENT_DELETE 1 # elif (ACC_CC_MSC && (_MSC_VER >= 1200)) -# define __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_DELETE \ - static void operator delete(void*, void*) ACC_CXX_NOTHROW { } +# define __ACC_CXX_HAVE_PLACEMENT_DELETE 1 # endif -# if !defined(__ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_NEW) -# define __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_NEW -# undef __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_DELETE -# endif -# if !defined(__ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_DELETE) -# define __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_DELETE -# endif - -# define ACC_CXX_DISABLE_NEW_DELETE \ - private: \ - static void* operator new(size_t); \ - static void* operator new[](size_t); \ - protected: \ - static void operator delete(void*) ACC_CXX_NOTHROW { } \ - static void operator delete[](void*) ACC_CXX_NOTHROW { } \ - private: - -# define ACC_CXX_DISABLE_NEW_DELETE_STRICT \ - private: \ - static void* operator new(size_t); \ - static void* operator new[](size_t); \ - __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_NEW \ - protected: \ - static void operator delete(void*) ACC_CXX_NOTHROW { } \ - static void operator delete[](void*) ACC_CXX_NOTHROW { } \ - __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_DELETE \ - private: - #endif -#if !defined(ACC_CXX_DISABLE_NEW_DELETE) +#if !defined(__ACC_CXX_PLACEMENT_NEW) && (__ACC_CXX_HAVE_PLACEMENT_NEW) +# define __ACC_CXX_PLACEMENT_NEW \ + static void* operator new(size_t, void*); +#endif +#if !defined(__ACC_CXX_PLACEMENT_DELETE) && (__ACC_CXX_HAVE_PLACEMENT_DELETE) +# define __ACC_CXX_PLACEMENT_DELETE \ + static void operator delete(void*, void*) ACC_CXX_NOTHROW { } +#endif +#if !defined(__ACC_CXX_PLACEMENT_NEW) +# define __ACC_CXX_PLACEMENT_NEW +#endif +#if !defined(__ACC_CXX_PLACEMENT_DELETE) +# define __ACC_CXX_PLACEMENT_DELETE +#endif + + +#if !defined(ACC_CXX_DISABLE_NEW_DELETE) && (defined(new) || defined(delete)) # define ACC_CXX_DISABLE_NEW_DELETE private: #endif + +#if !defined(ACC_CXX_DISABLE_NEW_DELETE) && !(__ACC_CXX_HAVE_ARRAY_NEW) +/* for old compilers use `protected' instead of `private' */ +# define ACC_CXX_DISABLE_NEW_DELETE \ + protected: static void operator delete(void*) ACC_CXX_NOTHROW { } \ + protected: static void* operator new(size_t); \ + private: +#endif + +#if !defined(ACC_CXX_DISABLE_NEW_DELETE) +# define ACC_CXX_DISABLE_NEW_DELETE \ + protected: \ + static void operator delete(void*) ACC_CXX_NOTHROW { } \ + static void operator delete[](void*) ACC_CXX_NOTHROW { } \ + private: \ + static void* operator new(size_t); \ + static void* operator new[](size_t); +# define ACC_CXX_DISABLE_NEW_DELETE_STRICT \ + protected: \ + static void operator delete(void*) ACC_CXX_NOTHROW { } \ + static void operator delete[](void*) ACC_CXX_NOTHROW { } \ + __ACC_CXX_PLACEMENT_DELETE \ + private: \ + static void* operator new(size_t); \ + static void* operator new[](size_t); \ + __ACC_CXX_PLACEMENT_NEW +#endif + #if !defined(ACC_CXX_DISABLE_NEW_DELETE_STRICT) # define ACC_CXX_DISABLE_NEW_DELETE_STRICT ACC_CXX_DISABLE_NEW_DELETE #endif diff --git a/src/acc/acc_lib.h b/src/acc/acc_lib.h index cfc06ac6..3f35fa0a 100644 --- a/src/acc/acc_lib.h +++ b/src/acc/acc_lib.h @@ -245,7 +245,7 @@ typedef struct { } acc_rand48_t; ACCLIB_EXTERN(void, acc_srand48) (acc_rand48_t* r, acc_uint32l_t seed); ACCLIB_EXTERN(acc_uint32l_t, acc_rand48) (acc_rand48_t* r); -#endif /* defined(acc_uint64l_t) */ +#endif #if defined(acc_uint64l_t) typedef struct { @@ -253,7 +253,7 @@ typedef struct { } acc_rand64_t; ACCLIB_EXTERN(void, acc_srand64) (acc_rand64_t* r, acc_uint64l_t seed); ACCLIB_EXTERN(acc_uint32l_t, acc_rand64) (acc_rand64_t* r); -#endif /* defined(acc_uint64l_t) */ +#endif #endif /* already included */ diff --git a/src/acc/acclib/bele.ch b/src/acc/acclib/bele.ch index 5111b233..22d409f3 100644 --- a/src/acc/acclib/bele.ch +++ b/src/acc/acclib/bele.ch @@ -22,28 +22,28 @@ // FIXME **************************************************************************/ -ACCLIB_EXTERN(unsigned, acc_get_be16) (const acc_hvoid_p); -ACCLIB_EXTERN(acc_uint32l_t, acc_get_be24) (const acc_hvoid_p); -ACCLIB_EXTERN(acc_uint32l_t, acc_get_be32) (const acc_hvoid_p); +ACCLIB_PUBLIC(unsigned, acc_get_be16) (const acc_hvoid_p); +ACCLIB_PUBLIC(acc_uint32l_t, acc_get_be24) (const acc_hvoid_p); +ACCLIB_PUBLIC(acc_uint32l_t, acc_get_be32) (const acc_hvoid_p); -ACCLIB_EXTERN(void, acc_set_be16) (acc_hvoid_p, unsigned v); -ACCLIB_EXTERN(void, acc_set_be24) (acc_hvoid_p, acc_uint32l_t v); -ACCLIB_EXTERN(void, acc_set_be32) (acc_hvoid_p, acc_uint32l_t v); +ACCLIB_PUBLIC(void, acc_set_be16) (acc_hvoid_p, unsigned v); +ACCLIB_PUBLIC(void, acc_set_be24) (acc_hvoid_p, acc_uint32l_t v); +ACCLIB_PUBLIC(void, acc_set_be32) (acc_hvoid_p, acc_uint32l_t v); -ACCLIB_EXTERN(unsigned, acc_get_le16) (const acc_hvoid_p); -ACCLIB_EXTERN(acc_uint32l_t, acc_get_le24) (const acc_hvoid_p); -ACCLIB_EXTERN(acc_uint32l_t, acc_get_le32) (const acc_hvoid_p); +ACCLIB_PUBLIC(unsigned, acc_get_le16) (const acc_hvoid_p); +ACCLIB_PUBLIC(acc_uint32l_t, acc_get_le24) (const acc_hvoid_p); +ACCLIB_PUBLIC(acc_uint32l_t, acc_get_le32) (const acc_hvoid_p); -ACCLIB_EXTERN(void, acc_set_le16) (acc_hvoid_p, unsigned v); -ACCLIB_EXTERN(void, acc_set_le24) (acc_hvoid_p, acc_uint32l_t v); -ACCLIB_EXTERN(void, acc_set_le32) (acc_hvoid_p, acc_uint32l_t v); +ACCLIB_PUBLIC(void, acc_set_le16) (acc_hvoid_p, unsigned v); +ACCLIB_PUBLIC(void, acc_set_le24) (acc_hvoid_p, acc_uint32l_t v); +ACCLIB_PUBLIC(void, acc_set_le32) (acc_hvoid_p, acc_uint32l_t v); #if defined(acc_uint64l_t) -ACCLIB_EXTERN(acc_uint64l_t, acc_get_be64) (const acc_hvoid_p); -ACCLIB_EXTERN(void, acc_set_be64) (acc_hvoid_p, acc_uint64l_t v); +ACCLIB_PUBLIC(acc_uint64l_t, acc_get_be64) (const acc_hvoid_p); +ACCLIB_PUBLIC(void, acc_set_be64) (acc_hvoid_p, acc_uint64l_t v); -ACCLIB_EXTERN(acc_uint64l_t, acc_get_le64) (const acc_hvoid_p); -ACCLIB_EXTERN(void, acc_set_le64) (acc_hvoid_p, acc_uint64l_t v); +ACCLIB_PUBLIC(acc_uint64l_t, acc_get_le64) (const acc_hvoid_p); +ACCLIB_PUBLIC(void, acc_set_le64) (acc_hvoid_p, acc_uint64l_t v); #endif