/*!
	@file scolMsWindows.h
	@brief Ms Windows specific options.
*/

// LICENCE

#ifndef __SCOL_MS_WINDOWS_H__
#define __SCOL_MS_WINDOWS_H__

#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
#include <windows.h>
#include <WinSock.h>

#ifdef SCOL_NON_CLIENT_BUILD
#	define _Scol_Export __declspec(dllexport)
#else
#	define _Scol_Export __declspec(dllimport)
#endif

#ifdef _DEBUG
#	define SCOL_DEBUG 1
#	define RELEASE_DEVELOPER
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#endif

// Define the window handler type // TODO: typedef instead of define
#define ScolWindowID HWND

// Ms Windows dynamic library loading and unloading functions.
#define SCOL_PLUGIN_INSTANCE hInstance
#define SCOL_PLUGIN_LOAD(a) LoadLibrary(a)
#define SCOL_PLUGIN_UNLOAD(a) FreeLibrary(a)
#define SCOL_PLUGIN_GET_SYMBOL(a,b) (void*)GetProcAddress(a,b)
#define SCOL_PLUGIN_ERROR() "Unknown Error"
struct HINSTANCE__;
typedef struct HINSTANCE__* hInstance;

// define the system type for window handle ("HWND" for MS Windows, "Window" for X11).
#define ScolWindowHandle HWND

// Disable this warning
#pragma warning (disable : 4251)

#endif
