AtxTypes.h

00001 /*****************************************************************
00002 |
00003 |   Atomix - General Types
00004 |
00005 |   (c) 2002-2006 Gilles Boccon-Gibod
00006 |   Author: Gilles Boccon-Gibod (bok@bok.net)
00007 |
00008  ****************************************************************/
00009 
00010 #ifndef _ATX_TYPES_H_
00011 #define _ATX_TYPES_H_
00012 
00013 /*----------------------------------------------------------------------
00014 |   includes
00015 +---------------------------------------------------------------------*/
00016 #include "AtxConfig.h"
00017 #include "AtxDefs.h"
00018 
00019 /*----------------------------------------------------------------------
00020 |   generic types
00021 +---------------------------------------------------------------------*/
00022 typedef unsigned int   ATX_UInt32;
00023 typedef int            ATX_Int32;
00024 typedef unsigned short ATX_UInt16;
00025 typedef short          ATX_Int16;
00026 typedef unsigned char  ATX_UInt8;
00027 typedef signed char    ATX_Int8;
00028 typedef float          ATX_Float;
00029 
00030 /*----------------------------------------------------------------------
00031 |   types
00032 +---------------------------------------------------------------------*/
00037 typedef enum {
00038     ATX_FALSE = 0, 
00039     ATX_TRUE  = 1
00040 } ATX_Boolean;
00041 
00049 typedef int ATX_Result;
00050 
00059 typedef ATX_UInt32 ATX_Flags;
00060 
00064 typedef ATX_UInt32 ATX_Mask;
00065 
00070 typedef unsigned long ATX_Size;
00071 
00075 typedef signed long ATX_Offset;
00076 
00080 typedef unsigned long ATX_Position;
00081 
00085 typedef unsigned char* ATX_Address;
00086 
00091 typedef ATX_UInt32 ATX_Range;
00092 
00097 typedef ATX_UInt32 ATX_Cardinal;
00098 
00103 typedef ATX_UInt32  ATX_Ordinal;
00104 
00109 typedef ATX_UInt32  ATX_VersionId;
00110 
00116 typedef const char* ATX_CString;
00117 typedef char*       ATX_CStringBuffer;
00118 
00123 typedef void*       ATX_Any;
00124 typedef const void* ATX_AnyConst;
00125 
00129 typedef ATX_UInt8 ATX_Byte;
00130 
00134 typedef ATX_UInt8* ATX_ByteBuffer;
00135 
00139 typedef long       ATX_Timeout;
00140 
00144 #if defined(ATX_CONFIG_HAVE_INT64)
00145 typedef ATX_CONFIG_INT64_TYPE ATX_Int64;
00146 typedef unsigned ATX_CONFIG_INT64_TYPE ATX_UInt64;
00147 #else 
00148 #error ATX_CONFIG_INT64_TYPE not defined
00149 #endif
00150 
00157 typedef ATX_CONFIG_INT_32_64_TYPE ATX_Int3264;
00158 typedef unsigned ATX_CONFIG_INT_32_64_TYPE ATX_UInt3264;
00159 
00160 #if defined(ATX_CONFIG_HAVE_INT_MIN)
00161 #define ATX_INT_MIN INT_MIN
00162 #endif
00163 #if defined(ATX_CONFIG_HAVE_INT_MAX)
00164 #define ATX_INT_MAX INT_MAX
00165 #endif
00166 #if defined(ATX_CONFIG_HAVE_UINT_MAX)
00167 #define ATX_UINT_MAX UINT_MAX
00168 #endif
00169 #if defined(ATX_CONFIG_HAVE_LONG_MIN)
00170 #define ATX_LONG_MIN LONG_MIN
00171 #endif
00172 #if defined(ATX_CONFIG_HAVE_LONG_MAX)
00173 #define ATX_LONG_MAX LONG_MAX
00174 #endif
00175 #if defined(ATX_CONFIG_HAVE_ULONG_MAX)
00176 #define ATX_ULONG_MAX ULONG_MAX
00177 #endif
00178 
00179 /*----------------------------------------------------------------------
00180 |   functions
00181 +---------------------------------------------------------------------*/
00182 #if defined(ATX_CONFIG_HAVE_INT64)
00183 #define ATX_Int64_Zero(i) do {(i)=0;} while(0)
00184 #define ATX_Int64_Add_Int64(a,b) ((a)+=(b))
00185 #define ATX_Int64_Add_Int32(a,b) ((a)+=(ATX_CONFIG_INT64_TYPE)(b))
00186 #define ATX_Int64_Sub_Int64(a,b) ((a)-=(b))
00187 #define ATX_Int64_Sub_Int32(a,b) ((a)-=(ATX_CONFIG_INT64_TYPE)(b))
00188 #define ATX_Int64_Mul_Int64(a,b) ((a)*=(b))
00189 #define ATX_Int64_Mul_Int32(a,b) ((a)*=(ATX_CONFIG_INT64_TYPE)(b))
00190 #define ATX_Int64_Div_Int64(a,b) ((a)/=(b))
00191 #define ATX_Int64_Div_Int32(a,b) ((a)/=(ATX_CONFIG_INT64_TYPE)(b))
00192 #define ATX_Int64_Set_Int32(a,b) ((a) = (ATX_CONFIG_INT64_TYPE)(b))
00193 #define ATX_Int64_Get_Int32(i) ((ATX_Int32)(i))
00194 #define ATX_Int64_Equal(a,b) ((a) == (b))
00195 #else
00196 /* no INT64 */
00197 #endif
00198 
00199 #endif /* _ATX_TYPES_H_ */