diff --git a/src/acc/acc.h b/src/acc/acc.h index d5f86c9e..d697b1af 100644 --- a/src/acc/acc.h +++ b/src/acc/acc.h @@ -25,7 +25,7 @@ #ifndef __ACC_H_INCLUDED #define __ACC_H_INCLUDED -#define ACC_VERSION 20030803L +#define ACC_VERSION 20030811L #if !defined(ACC_CONFIG_INCLUDE) # define ACC_CONFIG_INCLUDE(file) file diff --git a/src/acc/acc_chk.ch b/src/acc/acc_chk.ch index 56c55afd..b6a85384 100644 --- a/src/acc/acc_chk.ch +++ b/src/acc/acc_chk.ch @@ -230,6 +230,10 @@ ACCCHK_ASSERT(sizeof(acc_int32l_t) >= sizeof(int)) +#if defined(acc_int32e_t) + ACCCHK_ASSERT(sizeof(acc_int32l_t) >= sizeof(acc_int32e_t)) +#endif + ACCCHK_ASSERT(sizeof(acc_int32l_t) >= 4) ACCCHK_ASSERT(sizeof(acc_int32l_t) == SIZEOF_ACC_INT32L_T) ACCCHK_ASSERT(sizeof(acc_uint32l_t) >= 4) @@ -254,6 +258,11 @@ ACCCHK_ASSERT(sizeof(acc_int32f_t) >= sizeof(int)) +#if defined(acc_int32e_t) + ACCCHK_ASSERT(sizeof(acc_int32f_t) >= sizeof(acc_int32e_t)) +#endif + ACCCHK_ASSERT(sizeof(acc_int32f_t) >= sizeof(acc_int32l_t)) + ACCCHK_ASSERT(sizeof(acc_int32f_t) >= 4) ACCCHK_ASSERT(sizeof(acc_int32f_t) >= sizeof(acc_int32l_t)) ACCCHK_ASSERT(sizeof(acc_int32f_t) == SIZEOF_ACC_INT32F_T) diff --git a/src/acc/acc_cxx.h b/src/acc/acc_cxx.h new file mode 100644 index 00000000..f614661f --- /dev/null +++ b/src/acc/acc_cxx.h @@ -0,0 +1,96 @@ +/* ACC -- Automatic Compiler Configuration + + Copyright (C) 1996-2003 Markus Franz Xaver Johannes Oberhumer + All Rights Reserved. + + This software is a copyrighted work licensed under the terms of + the GNU General Public License. Please consult the file "ACC_LICENSE" + for details. + + Markus F.X.J. Oberhumer + + http://www.oberhumer.com/ + */ + + +#ifndef __ACC_CXX_H_INCLUDED +#define __ACC_CXX_H_INCLUDED +#if defined(__cplusplus) + + +/************************************************************************* +// +**************************************************************************/ + +#if !defined(ACC_CXX_NOTHROW) +# define ACC_CXX_NOTHROW throw() +#endif + + +/************************************************************************* +// disable dynamic allocation of an object +**************************************************************************/ + +#if defined(new) || defined(delete) +#elif (ACC_CC_SYMANTECC || ACC_CC_ZORTECHC) +#elif (ACC_CC_GNUC && (ACC_CC_GNUC < 0x029000ul)) +#else +# define __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_NEW \ + static void* operator new(size_t, void*); +# if (ACC_CC_GNUC >= 0x030000ul) +# define __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_DELETE \ + static void operator delete(void*, void*) ACC_CXX_NOTHROW { } +# elif (ACC_CC_INTELC) +# define __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_DELETE \ + static void operator delete(void*, void*) ACC_CXX_NOTHROW { } +# elif (ACC_CC_MSC && (_MSC_VER >= 1200)) +# define __ACC_CXX_DISABLE_NEW_DELETE_PLACEMENT_DELETE \ + static void operator delete(void*, void*) ACC_CXX_NOTHROW { } +# 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) +# define ACC_CXX_DISABLE_NEW_DELETE private: +#endif +#if !defined(ACC_CXX_DISABLE_NEW_DELETE_STRICT) +# define ACC_CXX_DISABLE_NEW_DELETE_STRICT ACC_CXX_DISABLE_NEW_DELETE +#endif + + + +#endif /* __cplusplus */ +#endif /* already included */ + + +/* +vi:ts=4:et +*/ diff --git a/src/acc/acc_lib.h b/src/acc/acc_lib.h index d7e9f9d2..cfc06ac6 100644 --- a/src/acc/acc_lib.h +++ b/src/acc/acc_lib.h @@ -90,6 +90,7 @@ ACCLIB_EXTERN(long, acc_hwrite) (int fd, const acc_hvoid_p buf, long size); #elif (ACC_OS_TOS) # define ACC_FN_PATH_MAX 259 #else + /* arbitrary limit for acclib implementation */ # define ACC_FN_PATH_MAX 1024 #endif @@ -181,6 +182,7 @@ ACCLIB_EXTERN(int, acc_closedir) (acc_dir_t* d); // wrap misc **************************************************************************/ +#undef acc_alloca #if defined(__CYGWIN__) || defined(__MINGW32__) # define acc_alloca(x) __builtin_alloca((x)) #elif defined(__BORLANDC__) && defined(__linux__) @@ -202,6 +204,32 @@ ACCLIB_EXTERN(int, acc_set_binmode) (int fd, int binary); #endif ACCLIB_EXTERN(acc_uclock_t, acc_uclock) (void); +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_EXTERN(void, acc_set_be16) (acc_hvoid_p, unsigned); +ACCLIB_EXTERN(void, acc_set_be24) (acc_hvoid_p, acc_uint32l_t); +ACCLIB_EXTERN(void, acc_set_be32) (acc_hvoid_p, acc_uint32l_t); +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_EXTERN(void, acc_set_le16) (acc_hvoid_p, unsigned); +ACCLIB_EXTERN(void, acc_set_le24) (acc_hvoid_p, acc_uint32l_t); +ACCLIB_EXTERN(void, acc_set_le32) (acc_hvoid_p, acc_uint32l_t); +#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); +ACCLIB_EXTERN(acc_uint64l_t, acc_get_le64) (const acc_hvoid_p); +ACCLIB_EXTERN(void, acc_set_le64) (acc_hvoid_p, acc_uint64l_t); +#endif +/* inline versions */ +#if (ACC_ARCH_IA32) +# define ACC_GET_LE16(p) (* (const unsigned short *) (p)) +# define ACC_GET_LE32(p) (* (const unsigned int *) (p)) +# define ACC_SET_LE16(p,v) (* (unsigned short *) (p) = (unsigned short) (v)) +# define ACC_SET_LE32(p,v) (* (unsigned int *) (p) = (unsigned int) (v)) +#endif + ACCLIB_EXTERN(acc_int32l_t, acc_muldiv32) (acc_int32l_t, acc_int32l_t, acc_int32l_t); ACCLIB_EXTERN(acc_uint32l_t, acc_umuldiv32) (acc_uint32l_t, acc_uint32l_t, acc_uint32l_t); diff --git a/src/acc/acclib/bele.ch b/src/acc/acclib/bele.ch new file mode 100644 index 00000000..5111b233 --- /dev/null +++ b/src/acc/acclib/bele.ch @@ -0,0 +1,52 @@ +/* ACC -- Automatic Compiler Configuration + + Copyright (C) 1996-2003 Markus Franz Xaver Johannes Oberhumer + All Rights Reserved. + + This software is a copyrighted work licensed under the terms of + the GNU General Public License. Please consult the file "ACC_LICENSE" + for details. + + Markus F.X.J. Oberhumer + + http://www.oberhumer.com/ + */ + + +#if !defined(ACCLIB_PUBLIC) +# define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f) +#endif + + +/************************************************************************* +// 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_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_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_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); + +#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_EXTERN(acc_uint64l_t, acc_get_le64) (const acc_hvoid_p); +ACCLIB_EXTERN(void, acc_set_le64) (acc_hvoid_p, acc_uint64l_t v); +#endif + + +/* +vi:ts=4:et +*/ diff --git a/src/acc/acclib/misc.ch b/src/acc/acclib/misc.ch index 7b012323..cec4cb0e 100644 --- a/src/acc/acclib/misc.ch +++ b/src/acc/acclib/misc.ch @@ -150,6 +150,35 @@ ACCLIB_PUBLIC(int, acc_mkdir) (const char* name, unsigned mode) } +ACCLIB_PUBLIC(acc_int32l_t, acc_muldiv32) (acc_int32l_t a, acc_int32l_t b, acc_int32l_t x) +{ + acc_int32l_t r = 0; + if (x == 0) + return r; +#if (SIZEOF_ACC_INT32L_T > 4) + if (a > ACC_INT32L_C(2147483647) || b > (ACC_INT32L_C(-2147483647) - 1)) + return r; +#endif + /* FIXME */ + ACC_UNUSED(a); ACC_UNUSED(b); + return r; +} + +ACCLIB_PUBLIC(acc_uint32l_t, acc_umuldiv32) (acc_uint32l_t a, acc_uint32l_t b, acc_uint32l_t x) +{ + acc_uint32l_t r = 0; + if (x == 0) + return r; +#if (SIZEOF_ACC_INT32L_T > 4) + if (a > ACC_UINT32L_C(0xffffffff) || b > ACC_UINT32L_C(0xffffffff)) + return r; +#endif + /* FIXME */ + ACC_UNUSED(a); ACC_UNUSED(b); + return r; +} + + /* vi:ts=4:et */