contact | forum | legal | impressum | privacy

types.h

Go to the documentation of this file.
00001 
00018 #ifndef HAM_TYPES_H__
00019 #define HAM_TYPES_H__
00020 
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif 
00024 
00025 /*
00026  * Check the operating system and word size
00027  */
00028 #ifdef UNDER_CE
00029 #   undef WIN32
00030 #   define WIN32 1
00031 #   define HAM_OS_WINCE 1
00032 #endif
00033 
00034 #ifdef WIN32
00035 #   undef  HAM_OS_WIN32
00036 #   define HAM_OS_WIN32 1
00037 #   ifdef WIN64
00038 #       undef  HAM_64BIT
00039 #       define HAM_64BIT 1
00040 #   elif WIN32
00041 #       undef  HAM_32BIT
00042 #       define HAM_32BIT 1
00043 #   else
00044 #       error "Neither WIN32 nor WIN64 defined!"
00045 #   endif
00046 #else /* posix? */
00047 #   undef  HAM_OS_POSIX
00048 #   define HAM_OS_POSIX 1
00049 #   if defined(__LP64__) || defined(__LP64) || __WORDSIZE==64
00050 #       undef  HAM_64BIT
00051 #       define HAM_64BIT 1
00052 #   else
00053 #       undef  HAM_32BIT
00054 #       define HAM_32BIT 1
00055 #   endif
00056 #endif
00057 
00058 #if defined(HAM_OS_POSIX) && defined(HAM_OS_WIN32)
00059 #    error "Unknown arch - neither HAM_OS_POSIX nor HAM_OS_WIN32 defined"
00060 #endif
00061 
00062 /*
00063  * windows.h is needed for for HANDLE
00064  */
00065 #ifdef HAM_OS_WIN32
00066 #   define WIN32_MEAN_AND_LEAN
00067 #   include <windows.h>
00068 #endif
00069 
00070 /*
00071  * Create the EXPORT macro for Microsoft Visual C++
00072  */
00073 #ifndef HAM_EXPORT
00074 #   ifdef _MSC_VER
00075 #       define HAM_EXPORT __declspec(dllexport)
00076 #   else
00077 #       define HAM_EXPORT extern
00078 #   endif
00079 #endif
00080 
00081 /*
00082  * The default calling convention is cdecl
00083  */
00084 #ifndef HAM_CALLCONV
00085 #   define HAM_CALLCONV
00086 #endif
00087 
00091 #ifdef HAM_32BIT
00092 #   ifdef _MSC_VER
00093 typedef signed __int64     ham_s64_t;
00094 typedef unsigned __int64   ham_u64_t;
00095 #   else
00096 typedef signed long long   ham_s64_t;
00097 typedef unsigned long long ham_u64_t;
00098 #   endif
00099 typedef signed int         ham_s32_t;
00100 typedef unsigned int       ham_u32_t;
00101 typedef signed short       ham_s16_t;
00102 typedef unsigned short     ham_u16_t;
00103 typedef signed char        ham_s8_t;
00104 typedef unsigned char      ham_u8_t;
00105 #endif
00106 
00111 #ifdef HAM_64BIT
00112 #   ifdef _MSC_VER
00113 typedef signed __int64     ham_s64_t;
00114 typedef unsigned __int64   ham_u64_t;
00115 #   else
00116 typedef signed long        ham_s64_t;
00117 typedef unsigned long      ham_u64_t;
00118 #   endif
00119 typedef signed int         ham_s32_t;
00120 typedef unsigned int       ham_u32_t;
00121 typedef signed short       ham_s16_t;
00122 typedef unsigned short     ham_u16_t;
00123 typedef signed char        ham_s8_t;
00124 typedef unsigned char      ham_u8_t;
00125 #endif 
00126 
00127 /*
00128  * Undefine macros to avoid macro redefinitions
00129  */
00130 #undef HAM_INVALID_FD
00131 #undef HAM_FALSE
00132 #undef HAM_TRUE
00133 
00134 /* 
00135  * typedefs for posix
00136  */
00137 #ifdef HAM_OS_POSIX
00138 typedef int                ham_fd_t;
00139 #   define HAM_INVALID_FD  (-1)
00140 #endif 
00141 
00142 /* 
00143  * typedefs for Windows 32- and 64-bit
00144  */
00145 #ifdef HAM_OS_WIN32
00146 #   ifdef CYGWIN
00147 typedef int                ham_fd_t; 
00148 #   else
00149 typedef HANDLE             ham_fd_t; 
00150 #   endif
00151 #   define HAM_INVALID_FD  (0)
00152 #endif 
00153 
00157 typedef int                ham_bool_t;
00158 #define HAM_FALSE          0
00159 #define HAM_TRUE           (!HAM_FALSE)
00160 
00164 typedef int                ham_status_t;
00165 
00172 typedef ham_u64_t          ham_offset_t;
00173 
00180 typedef ham_u32_t          ham_size_t;
00181 
00182 
00183 #ifdef __cplusplus
00184 } // extern "C"
00185 #endif 
00186 
00187 #endif /* HAM_TYPES_H__ */
 
 

The hamsterdb API

 

Help us!

Found an information that is missing on this page? Please send a mail.