211 lines
5.0 KiB
C++
211 lines
5.0 KiB
C++
#ifndef CONFIG_H
|
|
#define CONFIG_H
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
// define this if you want the library to throw exceptions when things go wrong
|
|
|
|
#define THROW_EXCEPTIONS
|
|
|
|
// define this if your compiler doesn't support namespaces
|
|
|
|
// NOTE:dmb For OST we will be using 2.95.2 which supports namespaces
|
|
//#ifdef __GNUC__
|
|
//#define NO_NAMESPACE
|
|
//#endif
|
|
|
|
// define this if your compiler only has the old version of iostream library
|
|
|
|
// NOTE:dmb For OST we will be using the current ostreams
|
|
//#ifdef __GNUC__
|
|
//#define OLD_IOSTREAM
|
|
//#endif
|
|
|
|
// switch between different secure memory allocation mechnisms, this is the only
|
|
// one available right now
|
|
|
|
#define SECALLOC_DEFAULT
|
|
|
|
// Define this to 0 if your system doesn't differentiate between
|
|
// text mode and binary mode files.
|
|
|
|
// #define BINARY_MODE 0
|
|
#define BINARY_MODE ios::binary
|
|
// #define BINARY_MODE ios::bin
|
|
|
|
// Define this to 0 if your compiler doesn't have ios::nocreate.
|
|
// This is needed because some compilers automaticly create a new file
|
|
// when you try to open one for reading if it doesn't already exist.
|
|
|
|
#define FILE_NO_CREATE 0
|
|
// #define FILE_NO_CREATE ios::nocreate
|
|
|
|
// define this if you have a copy of RSAREF and want to compile the RSAREF
|
|
// class wrappers
|
|
|
|
// #define USE_RSAREF
|
|
|
|
// define this if you want to be able to initialize RSAREF structures with bignums
|
|
|
|
// #define USE_BIGNUM_WITH_RSAREF
|
|
|
|
#define GZIP_OS_CODE 0
|
|
|
|
// how much memory to use for deflation (compression)
|
|
// note 16 bit compilers don't work with BIG_MEM (pointer wraps around segment boundary)
|
|
|
|
// #define SMALL_MEM
|
|
#define MEDIUM_MEM
|
|
// #define BIG_MEM
|
|
|
|
// Define the following to use the updated standard SHA-1 instead of SHA
|
|
|
|
#define NEW_SHA
|
|
|
|
// Try this if your CPU has 256K internal cache or a slow multiply instruction
|
|
// and you want a (possibly) faster IDEA implementation using log tables
|
|
|
|
// #define IDEA_LARGECACHE
|
|
|
|
// Try this if you have a large cache or your CPU is slow manipulating
|
|
// individual bytes.
|
|
|
|
// #define DIAMOND_USE_PERMTABLE
|
|
|
|
// Define this if, for the linear congruential RNG, you want to use
|
|
// the original constants as specified in S.K. Park and K.W. Miller's
|
|
// CACM paper.
|
|
|
|
// #define LCRNG_ORIGINAL_NUMBERS
|
|
|
|
// Make sure these typedefs are correct for your computer
|
|
|
|
typedef unsigned char byte;
|
|
typedef unsigned short word16;
|
|
#if SIZEOF_INT == 4
|
|
typedef unsigned int word32;
|
|
#elif SIZEOF_LONG == 4
|
|
typedef unsigned long word32;
|
|
#else
|
|
#error "I don't seem to have a 32-bit integer type on this system."
|
|
#endif
|
|
|
|
// word should have the same size as your CPU registers
|
|
// dword should be twice as big as word
|
|
|
|
#if defined(_MSC_VER)
|
|
|
|
typedef unsigned __int32 word;
|
|
typedef unsigned __int64 dword;
|
|
#define WORD64_AVAILABLE
|
|
typedef unsigned __int64 word64;
|
|
#define W64LIT(x) x##i64
|
|
|
|
#elif defined(_KCC)
|
|
|
|
#if defined(_ALPHA)
|
|
|
|
typedef unsigned int word;
|
|
typedef unsigned long dword;
|
|
#define WORD64_AVAILABLE
|
|
typedef unsigned long word64;
|
|
#define W64LIT(x) x##LL
|
|
|
|
#elif defined(_IRIX)
|
|
|
|
typedef unsigned long word;
|
|
typedef unsigned long long dword;
|
|
#define WORD64_AVAILABLE
|
|
typedef unsigned long long word64;
|
|
#define W64LIT(x) x##LL
|
|
|
|
#else
|
|
|
|
typedef unsigned long word;
|
|
typedef unsigned long long dword;
|
|
#define WORD64_AVAILABLE
|
|
typedef unsigned long long word64;
|
|
#define W64LIT(x) x##LL
|
|
|
|
#endif
|
|
|
|
#elif defined(_SUNPRO)
|
|
|
|
typedef unsigned long word;
|
|
typedef unsigned long long dword;
|
|
#define WORD64_AVAILABLE
|
|
typedef unsigned long long word64;
|
|
#define W64LIT(x) x##LL
|
|
|
|
#elif defined(__GNUC__)
|
|
|
|
typedef word32 word;
|
|
#if SIZEOF_LONG_LONG == 8
|
|
typedef unsigned long long dword;
|
|
#define WORD64_AVAILABLE
|
|
typedef unsigned long long word64;
|
|
#define W64LIT(x) x##LL
|
|
#else
|
|
#error "I don't seem to have a 64-bit integer type on this system."
|
|
#endif
|
|
#else
|
|
|
|
typedef unsigned int word;
|
|
typedef unsigned long dword;
|
|
|
|
#endif
|
|
|
|
// You may need to tweak this to fit your architecture
|
|
typedef unsigned long ptr_size_type;
|
|
|
|
const unsigned int WORD_SIZE = sizeof(word);
|
|
const unsigned int WORD_BITS = WORD_SIZE * 8;
|
|
|
|
#if defined(_IRIX)
|
|
#define LOW_WORD(x) (word)((x) & 0xffffffff)
|
|
#else
|
|
#define LOW_WORD(x) (word)(x)
|
|
#endif
|
|
|
|
#ifdef WORDS_BIGENDIAN
|
|
#define HIGH_WORD(x) (*((word *)&(x)))
|
|
#else
|
|
#define HIGH_WORD(x) (*(((word *)&(x))+1))
|
|
#endif
|
|
|
|
// if the above HIGH_WORD macro doesn't work (if you are not sure, compile it
|
|
// and run the validation tests), try this:
|
|
// #define HIGH_WORD(x) (word)((x)>>WORD_BITS)
|
|
|
|
#ifdef _MSC_VER
|
|
// 4250: dominance
|
|
// 4660: explicitly instantiating a class that's already implicitly instantiated
|
|
#pragma warning(disable: 4250 4660)
|
|
#endif
|
|
|
|
#ifdef NO_NAMESPACE
|
|
#define std
|
|
#define USING_NAMESPACE(x)
|
|
#define NAMESPACE_BEGIN(x)
|
|
#define NAMESPACE_END
|
|
#define ANONYMOUS_NAMESPACE_BEGIN
|
|
#else
|
|
#define USING_NAMESPACE(x) using namespace x;
|
|
#define NAMESPACE_BEGIN(x) namespace x {
|
|
#define ANONYMOUS_NAMESPACE_BEGIN namespace {
|
|
#define NAMESPACE_END }
|
|
#endif
|
|
|
|
#ifdef _MSC_VER
|
|
// VC50 workaround
|
|
#define STDMIN std::_cpp_min
|
|
#define STDMAX std::_cpp_max
|
|
#else
|
|
#define STDMIN std::min
|
|
#define STDMAX std::max
|
|
#endif
|
|
|
|
#endif
|