*
**************************************************************************/
+/*
+ * Simple OS abstraction layer.
+ */
+
#ifndef _OS_HPP_
#define _OS_HPP_
#include <stdlib.h>
#include <stdarg.h>
+#include <stdio.h>
-#ifdef WIN32
+#ifdef _WIN32
#ifndef snprintf
#define snprintf _snprintf
#endif
#define vsnprintf _vsnprintf
#endif
#define PATH_SEP '\\'
-#else /* !WIN32 */
+#else /* !_WIN32 */
#define PATH_SEP '/'
-#endif /* !WIN32 */
+#endif /* !_WIN32 */
#ifndef PATH_MAX
#define PATH_MAX 1024
bool GetProcessName(char *str, size_t size);
bool GetCurrentDir(char *str, size_t size);
-void DebugMessage(const char *format, ...);
+void DebugMessage(const char *format, ...)
+#ifdef __GNUC__
+ __attribute__ ((format (printf, 1, 2)))
+#endif
+;
+
+#if defined _WIN32 || defined __CYGWIN__
+ /* We always use .def files on windows for now */
+ #if 0
+ #define PUBLIC __declspec(dllexport)
+ #else
+ #define PUBLIC
+ #endif
+ #define PRIVATE
+#else
+ #if __GNUC__ >= 4
+ #define PUBLIC __attribute__ ((visibility("default")))
+ #define PRIVATE __attribute__ ((visibility("hidden")))
+ #else
+ #define PUBLIC
+ #define PRIVATE
+ #endif
+#endif
/**
* Get the current time in microseconds from an unknown base.
void Abort(void);
+void SetExceptionCallback(void (*callback)(void));
+void ResetExceptionCallback(void);
+
} /* namespace OS */
#endif /* _OS_HPP_ */