diff options
author | Steven McCoy <steven.mccoy@miru.hk> | 2011-06-18 20:44:03 +0200 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2011-06-18 20:44:03 +0200 |
commit | 9b795de4afdd5669a9000c5d13bec61e51fbba49 (patch) | |
tree | 6c3cdf97dd7a9529a80cf4c8c0f9160e1f7e7bce | |
parent | dc66053530e798dbcdb236cc2040031980cc09c7 (diff) |
Refactor Windows versioning and WinSock usage.Signed-off-by: Steven McCoy <steven.mccoy@miru.hk>
-rw-r--r-- | include/zmq.h | 2 | ||||
-rw-r--r-- | src/ctx.cpp | 14 | ||||
-rw-r--r-- | src/select.cpp | 11 | ||||
-rw-r--r-- | src/windows.hpp | 157 |
4 files changed, 141 insertions, 43 deletions
diff --git a/include/zmq.h b/include/zmq.h index 8d1d57b..e8454d8 100644 --- a/include/zmq.h +++ b/include/zmq.h @@ -28,7 +28,7 @@ extern "C" { #include <errno.h> #include <stddef.h> #if defined _WIN32 -#include "winsock2.h" +#include <winsock2.h> #endif /* Handle DSO symbol visibility */ diff --git a/src/ctx.cpp b/src/ctx.cpp index fb5420d..66255f0 100644 --- a/src/ctx.cpp +++ b/src/ctx.cpp @@ -18,24 +18,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "platform.hpp" +#if defined ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#else +#include <unistd.h> +#endif + #include <new> #include <string.h> #include "ctx.hpp" #include "socket_base.hpp" #include "io_thread.hpp" -#include "platform.hpp" #include "reaper.hpp" #include "pipe.hpp" #include "err.hpp" #include "msg.hpp" -#if defined ZMQ_HAVE_WINDOWS -#include "windows.h" -#else -#include "unistd.h" -#endif - zmq::ctx_t::ctx_t (uint32_t io_threads_) : tag (0xbadcafe0), terminating (false) diff --git a/src/select.cpp b/src/select.cpp index 35d8bd8..5d5ce5d 100644 --- a/src/select.cpp +++ b/src/select.cpp @@ -19,12 +19,8 @@ */ #include "platform.hpp" - -#include <string.h> -#include <algorithm> - -#ifdef ZMQ_HAVE_WINDOWS -#include "winsock2.h" +#if defined ZMQ_HAVE_WINDOWS +#include "windows.hpp" #elif defined ZMQ_HAVE_HPUX #include <sys/param.h> #include <sys/types.h> @@ -36,6 +32,9 @@ #include <sys/select.h> #endif +#include <string.h> +#include <algorithm> + #include "select.hpp" #include "err.hpp" #include "config.hpp" diff --git a/src/windows.hpp b/src/windows.hpp index 5133875..8f39914 100644 --- a/src/windows.hpp +++ b/src/windows.hpp @@ -21,58 +21,157 @@ #ifndef __ZMQ_WINDOWS_HPP_INCLUDED__ #define __ZMQ_WINDOWS_HPP_INCLUDED__ -// The purpose of this header file is to turn on only the items actually needed -// on the windows platform. +// The purpose of this header file is to turn on only the items actually +// needed on the windows platform. -#define _WINSOCKAPI_ -#ifndef NOMINMAX -#define NOMINMAX // No min and max functions, these clash with C++. -#endif +// Disable deprecation warnings. #define _CRT_SECURE_NO_WARNINGS #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#ifndef NOUSER // No USER defines and routines. -#define NOUSER +#ifndef NOGDICAPMASKS +#define NOGDICAPMASKS // CC_*, LC_*, PC_*, CP_*, TC_*, RC_ #endif -#ifndef NOMCX // No Modem Configuration Extensions. -#define NOMCX +#ifndef NOVIRTUALKEYCODES +#define NOVIRTUALKEYCODES // VK_* #endif -#ifndef NOIME // No Input Method Editor. -#define NOIME +#ifndef NOWINMESSAGES +#define NOWINMESSAGES // WM_*, EM_*, LB_*, CB_* #endif -#ifndef NOSOUND // No Sound driver routines. -#define NOSOUND +#ifndef NOWINSTYLES +#define NOWINSTYLES // WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_* #endif - -#ifdef ZMQ_HAVE_MINGW32 -#ifdef WINVER -#undef WINVER +#ifndef NOSYSMETRICS +#define NOSYSMETRICS // SM_* #endif -#define WINVER 0x0501 +#ifndef NOMENUS +#define NOMENUS // MF_* +#endif +#ifndef NOICONS +#define NOICONS // IDI_* +#endif +#ifndef NOKEYSTATES +#define NOKEYSTATES // MK_* +#endif +#ifndef NOSYSCOMMANDS +#define NOSYSCOMMANDS // SC_* +#endif +#ifndef NORASTEROPS +#define NORASTEROPS // Binary and Tertiary raster ops +#endif +#ifndef NOSHOWWINDOW +#define NOSHOWWINDOW // SW_* +#endif +#ifndef OEMRESOURCE +#define OEMRESOURCE // OEM Resource values +#endif +#ifndef NOATOM +#define NOATOM // Atom Manager routines +#endif +#ifndef NOCLIPBOARD +#define NOCLIPBOARD // Clipboard routines +#endif +#ifndef NOCOLOR +#define NOCOLOR // Screen colors +#endif +#ifndef NOCTLMGR +#define NOCTLMGR // Control and Dialog routines +#endif +#ifndef NODRAWTEXT +#define NODRAWTEXT // DrawText() and DT_* +#endif +#ifndef NOGDI +#define NOGDI // All GDI defines and routines +#endif +#ifndef NOKERNEL +#define NOKERNEL // All KERNEL defines and routines +#endif +#ifndef NOUSER +#define NOUSER // All USER defines and routines +#endif +#ifndef NONLS +#define NONLS // All NLS defines and routines +#endif +#ifndef NOMB +#define NOMB // MB_* and MessageBox() +#endif +#ifndef NOMEMMGR +#define NOMEMMGR // GMEM_*, LMEM_*, GHND, LHND, associated routines +#endif +#ifndef NOMETAFILE +#define NOMETAFILE // typedef METAFILEPICT +#endif +#ifndef NOMINMAX +#define NOMINMAX // Macros min(a,b) and max(a,b) +#endif +#ifndef NOMSG +#define NOMSG // typedef MSG and associated routines +#endif +#ifndef NOOPENFILE +#define NOOPENFILE // OpenFile(), OemToAnsi, AnsiToOem, and OF_* +#endif +#ifndef NOSCROLL +#define NOSCROLL // SB_* and scrolling routines +#endif +#ifndef NOSERVICE +#define NOSERVICE // All Service Controller routines, SERVICE_ equates, etc. +#endif +#ifndef NOSOUND +#define NOSOUND // Sound driver routines +#endif +#ifndef NOTEXTMETRIC +#define NOTEXTMETRIC // typedef TEXTMETRIC and associated routines +#endif +#ifndef NOWH +#define NOWH // SetWindowsHook and WH_* +#endif +#ifndef NOWINOFFSETS +#define NOWINOFFSETS // GWL_*, GCL_*, associated routines +#endif +#ifndef NOCOMM +#define NOCOMM // COMM driver routines +#endif +#ifndef NOKANJI +#define NOKANJI // Kanji support stuff. +#endif +#ifndef NOHELP +#define NOHELP // Help engine interface. +#endif +#ifndef NOPROFILER +#define NOPROFILER // Profiler interface. +#endif +#ifndef NODEFERWINDOWPOS +#define NODEFERWINDOWPOS // DeferWindowPos routines +#endif +#ifndef NOMCX +#define NOMCX // Modem Configuration ExtensionsA #endif -#include <windows.h> - -// MSVC++ 2005 on Win2000 does not define _WIN32_WINNT. +// Set target version to Windows Server 2003, Windows XP/SP1 or higher. #ifndef _WIN32_WINNT -#define _WIN32_WINNT WINVER +#define _WIN32_WINNT 0x0501 #endif -// Enable winsock (not included when WIN32_LEAN_AND_MEAN is defined). -#if(_WIN32_WINNT >= 0x0400) -#include <winsock2.h> -#include <mswsock.h> +#include <windows.h> + +#ifdef __MINGW32__ +// Require Windows XP or higher with MinGW for getaddrinfo(). +#if(_WIN32_WINNT >= 0x0501) #else -#include <winsock.h> +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0501 +#endif #endif + +#include <winsock2.h> +#include <mswsock.h> #include <ws2tcpip.h> #include <ipexport.h> #include <process.h> -// On mingw environment AI_NUMERICSERV is not defined, needed in ip.cpp. +// In MinGW environment AI_NUMERICSERV is not defined. #ifndef AI_NUMERICSERV #define AI_NUMERICSERV 0x0400 #endif |