#ifndef SYSDEP_H__ #define SYSDEP_H__ #include "config.h" #include "sysdep/debug.h" #ifdef _WIN32 #include "win/win.h" #include "win/wdbg.h" #elif defined(OS_UNIX) #include "unix/unix.h" #endif // vsnprintf2: handles positional parameters and %lld. // already available on *nix, emulated on Win32. #ifdef _WIN32 extern int vsnprintf2(char* buffer, size_t count, const char* format, va_list argptr); #else #define vsnprintf2 vsnprintf #endif #ifdef __cplusplus extern "C" { #endif extern void display_msg(const char* caption, const char* msg); extern void wdisplay_msg(const wchar_t* caption, const wchar_t* msg); extern int clipboard_set(const wchar_t* text); extern wchar_t* clipboard_get(void); extern int clipboard_free(wchar_t* copy); extern int get_executable_name(char* n_path, size_t buf_size); extern int pick_directory(char* n_path, size_t buf_size); #ifdef _MSC_VER extern double round(double); #endif #ifndef HAVE_C99 extern float fminf(float a, float b); extern float fmaxf(float a, float b); #endif #ifndef _MSC_VER #define stricmp strcasecmp #define strnicmp strncasecmp #endif #ifdef __cplusplus } #endif // C++ linkage // STL_HASH_MAP, STL_HASH_MULTIMAP, STL_HASH_SET #ifdef __GNUC__ // GCC # include # include // Probably? # define STL_HASH_MAP __gnu_cxx::hash_map # define STL_HASH_MULTIMAP __gnu_cxx::hash_multimap # define STL_HASH_SET __gnu_cxx::hash_set // Hack: GCC Doesn't have a hash instance for std::string included (and it looks // like they won't add it - marked resolved/wontfix in the gcc bugzilla) namespace __gnu_cxx { template<> struct hash { size_t operator()(const std::string& __x) const { return __stl_hash_string(__x.c_str()); } }; } #else // !__GNUC__ # include # include # if defined(_MSC_VER) && (_MSC_VER >= 1300) // VC7 or above # define STL_HASH_MAP stdext::hash_map # define STL_HASH_MULTIMAP stdext::hash_multimap # define STL_HASH_SET stdext::hash_set # else // VC6 and anything else (most likely name) # define STL_HASH_MAP std::hash_map # define STL_HASH_MULTIMAP std::hash_multimap # define STL_HASH_SET std::hash_set # endif // defined(_MSC_VER) && (_MSC_VER >= 1300) #endif // !__GNUC__ #endif // #ifndef SYSDEP_H__