mirror of
https://git.do.srb2.org/STJr/ZenNode.git
synced 2024-11-10 06:42:09 +00:00
259 lines
6.5 KiB
C++
259 lines
6.5 KiB
C++
|
//----------------------------------------------------------------------------
|
|||
|
//
|
|||
|
// File: common.hpp
|
|||
|
// Date:
|
|||
|
// Programmer: Marc Rousseau
|
|||
|
//
|
|||
|
// Description:
|
|||
|
//
|
|||
|
// Copyright (c) 1994-2004 Marc Rousseau, All Rights Reserved.
|
|||
|
//
|
|||
|
// This program is free software; you can redistribute it and/or modify
|
|||
|
// it under the terms of the GNU General Public License as published by
|
|||
|
// the Free Software Foundation; either version 2 of the License, or
|
|||
|
// (at your option) any later version.
|
|||
|
//
|
|||
|
// This program is distributed in the hope that it will be useful,
|
|||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|||
|
// GNU General Public License for more details.
|
|||
|
//
|
|||
|
// You should have received a copy of the GNU General Public License
|
|||
|
// along with this program; if not, write to the Free Software
|
|||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
//
|
|||
|
// Revision History:
|
|||
|
//
|
|||
|
//----------------------------------------------------------------------------
|
|||
|
|
|||
|
#ifndef COMMON_HPP_
|
|||
|
#define COMMON_HPP_
|
|||
|
|
|||
|
//----------------------------------------------------------------------------
|
|||
|
// Generic definitions
|
|||
|
//----------------------------------------------------------------------------
|
|||
|
|
|||
|
#ifdef UNREFERENCED_PARAMETER
|
|||
|
#undef UNREFERENCED_PARAMETER
|
|||
|
#endif
|
|||
|
|
|||
|
#if defined ( _MSC_VER )
|
|||
|
#define UNREFERENCED_PARAMETER(x) x
|
|||
|
#else
|
|||
|
#define UNREFERENCED_PARAMETER(x)
|
|||
|
#endif
|
|||
|
|
|||
|
#define OFFSET_OF(t,x) (( size_t ) & (( t * ) 0 )->( x ))
|
|||
|
#define SIZE(x) ( sizeof ( x ) / sizeof (( x )[0] ))
|
|||
|
#define EVER ;;
|
|||
|
|
|||
|
typedef signed char INT8;
|
|||
|
typedef signed short INT16;
|
|||
|
typedef signed int INT32;
|
|||
|
|
|||
|
typedef unsigned char UINT8, UCHAR;
|
|||
|
typedef unsigned short UINT16;
|
|||
|
typedef unsigned int UINT32;
|
|||
|
|
|||
|
#if defined ( __GNUC__ )
|
|||
|
|
|||
|
typedef long long INT64;
|
|||
|
typedef unsigned long long UINT64;
|
|||
|
|
|||
|
#else
|
|||
|
|
|||
|
typedef __int64 INT64;
|
|||
|
typedef unsigned __int64 UINT64;
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
#if defined ( __WIN32__ ) || defined ( __AMIGAOS__ )
|
|||
|
|
|||
|
// Undo any previos definitions
|
|||
|
#define BIG_ENDIAN 1234
|
|||
|
#define LITTLE_ENDIAN 4321
|
|||
|
|
|||
|
#define BYTE_ORDER LITTLE_ENDIAN
|
|||
|
|
|||
|
#else
|
|||
|
|
|||
|
// Use the environments endian definitions
|
|||
|
#undef __USE_BSD
|
|||
|
#define __USE_BSD
|
|||
|
#include <endian.h>
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
typedef int (*QSORT_FUNC) ( const void *, const void * );
|
|||
|
|
|||
|
#ifdef max
|
|||
|
#undef max
|
|||
|
#endif
|
|||
|
#ifdef min
|
|||
|
#undef min
|
|||
|
#endif
|
|||
|
|
|||
|
template < class T > inline void swap ( T &item1, T &item2 )
|
|||
|
{
|
|||
|
T temp = item1;
|
|||
|
item1 = item2;
|
|||
|
item2 = temp;
|
|||
|
}
|
|||
|
|
|||
|
//----------------------------------------------------------------------------
|
|||
|
// Platform specific definitions
|
|||
|
//----------------------------------------------------------------------------
|
|||
|
|
|||
|
#if defined ( __OS2__ ) || defined ( __WIN32__ )
|
|||
|
|
|||
|
#define SEPERATOR '\\'
|
|||
|
#define DEFAULT_CHAR '<27>'
|
|||
|
|
|||
|
#elif defined ( __GNUC__ ) || defined ( __INTEL_COMPILER )
|
|||
|
|
|||
|
#define SEPERATOR '/'
|
|||
|
#define DEFAULT_CHAR '*'
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
//----------------------------------------------------------------------------
|
|||
|
// Compiler specific definitions
|
|||
|
//----------------------------------------------------------------------------
|
|||
|
|
|||
|
#if defined ( __BORLANDC__ )
|
|||
|
|
|||
|
#if defined ( __BCPLUSPLUS__ ) || defined ( __TCPLUSPLUS__ )
|
|||
|
#undef NULL
|
|||
|
#define NULL ( void * ) 0
|
|||
|
#endif
|
|||
|
|
|||
|
#if (( __BORLANDC__ < 0x0500 ) || defined ( __OS2__ ))
|
|||
|
|
|||
|
// Fake out ANSI definitions for deficient compilers
|
|||
|
#define for if (0); else for
|
|||
|
|
|||
|
enum { false, true };
|
|||
|
class bool {
|
|||
|
int value;
|
|||
|
public:
|
|||
|
operator = ( int x ) { value = x ? true : false; }
|
|||
|
bool operator ! () { return value; }
|
|||
|
};
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
template <class T> inline const T &min ( const T &t1, const T &t2 )
|
|||
|
{
|
|||
|
return ( t1 > t2 ) ? t2 : t1;
|
|||
|
}
|
|||
|
|
|||
|
template <class T> inline const T &max ( const T &t1, const T &t2 )
|
|||
|
{
|
|||
|
return ( t1 > t2 ) ? t1 : t2;
|
|||
|
}
|
|||
|
|
|||
|
#elif defined ( _MSC_VER )
|
|||
|
|
|||
|
#undef NULL
|
|||
|
#define NULL 0L
|
|||
|
|
|||
|
#define MAXPATH _MAX_PATH
|
|||
|
#define MAXDRIVE _MAX_DRIVE
|
|||
|
#define MAXDIR _MAX_DIR
|
|||
|
#define MAXFNAME _MAX_FNAME
|
|||
|
#define MAXEXT _MAX_EXT
|
|||
|
|
|||
|
#if ( _MSC_VER < 1300 )
|
|||
|
|
|||
|
// Fake out ANSI definitions for deficient compilers
|
|||
|
#define for if (0); else for
|
|||
|
|
|||
|
#pragma warning ( disable: 4127 ) // C4127: conditional expression is constant
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
#pragma warning ( disable: 4244 ) // C4244: 'xyz' conversion from 'xxx' to 'yyy', possible loss of data
|
|||
|
#pragma warning( disable : 4290 ) // C4290: C++ exception specification ignored...
|
|||
|
#pragma warning ( disable: 4514 ) // C4514: 'xyz' unreferenced inline function has been removed
|
|||
|
|
|||
|
template <class T> inline const T &min ( const T &t1, const T &t2 )
|
|||
|
{
|
|||
|
return ( t1 > t2 ) ? t2 : t1;
|
|||
|
}
|
|||
|
|
|||
|
template <class T> inline const T &max ( const T &t1, const T &t2 )
|
|||
|
{
|
|||
|
return ( t1 > t2 ) ? t1 : t2;
|
|||
|
}
|
|||
|
|
|||
|
#if ( _MSC_VER >= 1300 )
|
|||
|
extern char *strndup ( const char *string, size_t max );
|
|||
|
#endif
|
|||
|
|
|||
|
#elif defined ( __WATCOMC__ )
|
|||
|
|
|||
|
#define M_PI 3.14159265358979323846
|
|||
|
|
|||
|
template <class T> inline const T &min ( const T &t1, const T &t2 )
|
|||
|
{
|
|||
|
return ( t1 > t2 ) ? t2 : t1;
|
|||
|
}
|
|||
|
|
|||
|
template <class T> inline const T &max ( const T &t1, const T &t2 )
|
|||
|
{
|
|||
|
return ( t1 > t2 ) ? t1 : t2;
|
|||
|
}
|
|||
|
|
|||
|
#elif defined ( __GNUC__ ) || defined ( __INTEL_COMPILER )
|
|||
|
|
|||
|
#define MAXPATH FILENAME_MAX
|
|||
|
#define MAXDRIVE FILENAME_MAX
|
|||
|
#define MAXDIR FILENAME_MAX
|
|||
|
#define MAXFNAME FILENAME_MAX
|
|||
|
#define MAXEXT FILENAME_MAX
|
|||
|
|
|||
|
#define O_BINARY 0
|
|||
|
|
|||
|
#define stricmp strcasecmp
|
|||
|
#define strnicmp strncasecmp
|
|||
|
|
|||
|
template <class T> inline const T &min ( const T &t1, const T &t2 )
|
|||
|
{
|
|||
|
return ( t1 > t2 ) ? t2 : t1;
|
|||
|
}
|
|||
|
|
|||
|
template <class T> inline const T &max ( const T &t1, const T &t2 )
|
|||
|
{
|
|||
|
return ( t1 > t2 ) ? t1 : t2;
|
|||
|
}
|
|||
|
|
|||
|
#elif defined ( __AMIGAOS__ )
|
|||
|
|
|||
|
// Fake out ANSI definitions for deficient compilers
|
|||
|
#define for if (0); else for
|
|||
|
|
|||
|
enum { false, true };
|
|||
|
class bool {
|
|||
|
int value;
|
|||
|
public:
|
|||
|
operator = ( int x ) { value = x ? true : false; }
|
|||
|
bool operator ! () { return value; }
|
|||
|
};
|
|||
|
|
|||
|
template <class T> inline const T &min ( const T &t1, const T &t2 )
|
|||
|
{
|
|||
|
return ( t1 > t2 ) ? t2 : t1;
|
|||
|
}
|
|||
|
|
|||
|
template <class T> inline const T &max ( const T &t1, const T &t2 )
|
|||
|
{
|
|||
|
return ( t1 > t2 ) ? t1 : t2;
|
|||
|
}
|
|||
|
|
|||
|
extern char *strdup ( const char *string );
|
|||
|
extern char *strndup ( const char *string, size_t max );
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
#endif
|