VLFeat.org

API docs

  • Home
    • Download and Install
    • API docs
    • Matlab docs
    • About VLFeat
  • Tutorials
    • SIFT
    • MSER
    • IKM
    • HIKM
    • AIB
    • Utils
  • Main Page
  • Related Pages
  • Data Structures
  • Files
  • Examples

host.h

Go to the documentation of this file.
00001 
00006 #ifndef VL_HOST_H
00007 #define VL_HOST_H
00008 
00009 /* 
00010  The following macros identify the host OS, architecture and compiler. 
00011  They are derived from http://predef.sourceforge.net/ 
00012  */
00013 
00016 #if defined(linux)     || \
00017     defined(__linux)   || \
00018     defined(__linux__) || \
00019     defined(__DOXYGEN__)
00020 #define VL_OS_LINUX 1
00021 #endif
00022 
00023 #if (defined(__APPLE__) & defined(__MACH__)) || \
00024      defined(__DOXYGEN__)
00025 #define VL_OS_MACOSX 1
00026 #endif
00027 
00028 #if defined(__WIN32__) || \
00029     defined(_WIN32)    || \
00030     defined(__DOXYGEN__)
00031 #define VL_OS_WIN 1
00032 #endif
00033 
00034 #if defined(_WIN64) || \
00035     defined(__DOXYGEN__)
00036 #define VL_OS_WIN64 1
00037 #endif
00038 
00042 #if defined(__GNUC__) || defined(__DOXYGEN__)
00043 # if defined(__GNUC_PATCHLEVEL__)
00044 #  define VL_COMPILER_GNUC (__GNUC__ * 10000 \
00045 + __GNUC_MINOR__ * 100 \
00046 + __GNUC_PATCHLEVEL__)
00047 # else
00048 #  define VL_COMPILER_GNUC (__GNUC__ * 10000 \
00049 + __GNUC_MINOR__ * 100)
00050 # endif
00051 #endif
00052 
00053 #if defined(_MSC_VER) || defined(__DOXYGEN__)
00054 #define VL_COMPILER_MSC _MSC_VER
00055 #endif
00056 
00057 #if defined(__LCC__) || defined(__DOXYGEN__)
00058 #warning "LCC support is experimental!"
00059 #define VL_COMPILER_LCC 1
00060 #endif
00061 
00066 #if defined(i386)     || \
00067     defined(__i386__) || \
00068     defined(__DOXYGEN__)
00069 #define VL_ARCH_IX86 300
00070 #elif defined(__i486__)
00071 #define VL_ARCH_IX86 400
00072 #elif defined(__i586__)
00073 #define VL_ARCH_IX86 500
00074 #elif defined(__i686__)
00075 #define VL_ARCH_IX86 600
00076 #elif defined(_M_IX86)
00077 #define VL_ARCH_IX86 _M_IX86
00078 #endif
00079 
00080 #if defined(__ia64__) || \
00081     defined(_IA64)    || \
00082     defined(__IA64)   || \
00083     defined(__ia64)   || \
00084     defined(_M_IA64)  || \
00085     defined(__DOXYGEN__)
00086 #define VL_ARCH_IA64
00087 #endif
00088 
00092 #if defined(__LLP64__) || \
00093     defined(__LLP64)   || \
00094     defined(__LLP64)   || \
00095     (defined(VL_COMPILER_MSC) & defined(VL_OS_WIN64)) || \
00096     (defined(VL_COMPILER_LCC) & defined(VL_OS_WIN64)) || \
00097     defined(__DOXYGEN__)
00098 #define VL_COMPILER_LLP64
00099 #endif
00100 
00101 #if defined(__LP64__) || \
00102     defined(__LP64)   || \
00103     defined(__LP64)   || \
00104     (defined(VL_OS_MACOSX) & defined(VL_ARCH_IA64)) || \
00105     defined(__DOXYGEN__)
00106 #define VL_COMPILER_LP64
00107 #endif
00108 
00109 #if (!defined(VL_COMPILER_LLP64) & !defined(VL_COMPILER_LP64)) || \
00110     defined(__DOXYGEN__)
00111 #define VL_COMPILER_ILP32
00112 #endif
00113 
00117 #if defined(__LITTLE_ENDIAN__) || \
00118     defined(VL_ARCH_IX86)      || \
00119     defined(VL_ARCH_IA64)      || \
00120     defined(__DOXYGEN__)
00121 #define VL_ARCH_LITTLE_ENDIAN
00122 #endif
00123 
00124 #if  defined(__DOXYGEN__) || \
00125     !defined(VL_ARCH_LITTLE_ENDIAN)
00126 #define VL_ARCH_BIG_ENDIAN
00127 #endif
00128 
00130 #if defined(VL_COMPILER_MSC)
00131 #define VL_INLINE static __inline
00132 #define snprintf _snprintf
00133 #define isnan _isnan
00134 #ifdef VL_BUILD_DLL
00135 #define VL_EXPORT __declspec(dllexport)
00136 #else
00137 #define VL_EXPORT __declspec(dllimport)
00138 #endif
00139 #endif
00140 
00141 #if defined(VL_COMPILER_LCC)
00142 #define VL_INLINE static __inline
00143 #define snprintf _snprintf
00144 #define isnan _isnan
00145 #ifdef VL_BUILD_DLL
00146 #define VL_EXPORT __declspec(dllexport)
00147 #else
00148 #define VL_EXPORT 
00149 #endif
00150 #endif
00151 
00152 #if defined(VL_COMPILER_GNUC) || \
00153     defined(__DOXYGEN__)
00154 #define VL_INLINE static __inline__
00155 #ifdef VL_BUILD_DLL
00156 #define VL_EXPORT __attribute__((visibility ("default")))
00157 #else
00158 #define VL_EXPORT
00159 #endif
00160 #endif
00161 
00167 #if defined(VL_COMPILER_LP64) || defined(VL_COMPILER_LLP64)
00168 typedef long long           vl_int64 ;   
00169 typedef int                 vl_int32 ;   
00170 typedef short               vl_int16 ;   
00171 typedef char                vl_int8  ;   
00173 typedef long long unsigned  vl_uint64 ;  
00174 typedef int       unsigned  vl_uint32 ;  
00175 typedef short     unsigned  vl_uint16 ;  
00176 typedef char      unsigned  vl_uint8 ;   
00178 typedef int                 vl_int ;     
00179 typedef unsigned int        vl_uint ;    
00181 typedef int                 vl_bool ;    
00182 typedef vl_int64            vl_intptr ;  
00183 typedef vl_uint64           vl_uintptr ; 
00184 #endif
00185 
00186 #if defined(VL_COMPILER_ILP32)
00187 
00188 #ifdef VL_COMPILER_MSC
00189 typedef __int64             vl_int64 ;  
00190 #else
00191 typedef long long           vl_int64 ;  
00192 #endif
00193 
00194 typedef int                 vl_int32 ;  
00195 typedef short               vl_int16 ;  
00196 typedef char                vl_int8  ;  
00197 
00198 #ifdef VL_COMPILER_MSC
00199 typedef __int64   unsigned  vl_uint64 ; 
00200 #else
00201 typedef long long unsigned  vl_uint64 ; 
00202 #endif
00203 typedef int       unsigned  vl_uint32 ; 
00204 typedef short     unsigned  vl_uint16 ; 
00205 typedef char      unsigned  vl_uint8 ;  
00206 
00207 typedef int                 vl_int ;    
00208 typedef unsigned int        vl_uint ;   
00209 
00210 typedef int                 vl_bool ;   
00211 typedef vl_int32            vl_intptr ; 
00212 typedef vl_uint32           vl_uintptr ;
00213 #endif
00214 
00236 #ifdef VL_COMPILER_MSC
00237 #define VL_FL_INT64  "I64"
00238 #else
00239 #define VL_FL_INT64  "ll"
00240 #endif
00241 #define VL_FL_INT32  ""
00242 #define VL_FL_INT16  "h"
00243 #define VL_FL_INT8   "hh"
00244 
00251 #define VL_BIG_INT  0x7FFFFFFFL
00252 
00254 #define VL_SMALL_INT  (- VL_BIG_INT - 1)
00255 
00257 #define VL_BIG_UINT 0xFFFFFFFFUL
00258 
00263 VL_EXPORT void vl_print_host_info() ;
00264 VL_EXPORT vl_bool vl_cpu_has_sse3 () ;
00265 VL_EXPORT vl_bool vl_cpu_has_sse2 () ;
00268 VL_EXPORT void vl_set_simd_enabled (vl_bool x) ;
00269 VL_EXPORT vl_bool vl_get_simd_enabled() ;
00270 
00271 /* VL_HOST_H */
00272 #endif
Copyright © 2008 Andrea Vedaldi and Brian Fulkerson