blob: b9a3edc9b5602cb6a122ec50db83f796fdf42f5a [file] [log] [blame]
/*
* Copyright 2004-2004 The Apache Software Foundation.
// (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined( _PLATFORM_SPECIFIC_WINDOWS_HPP )
#define _PLATFORM_SPECIFIC_WINDOWS_HPP
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
#ifndef _SCL_SECURE_NO_WARNINGS
#define _SCL_SECURE_NO_WARNINGS
#endif
#ifndef _USE_32BIT_TIME_T
#define _USE_32BIT_TIME_T
#endif
// C4101: 'identifier' : unreferenced local variable (revisit this)
#pragma warning (disable : 4101)
// C4251: class xx needs to have dll-interface to be used by clients of class bb
#pragma warning (disable : 4251)
// C4275: non dll-interface class used as base for dll-interface class
#pragma warning (disable : 4275)
// C4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
#pragma warning (disable : 4290)
// C4297: function assumed not to throw an exception but does
#pragma warning (disable : 4297)
// C4503: decorated name length exceeded, name was truncated
#pragma warning (disable : 4503)
// C4786: identifier was truncated to '255' characters in the debug information
#pragma warning (disable : 4786)
// Exclude rarely-used stuff from Windows headers
#define WIN32_LEAN_AND_MEAN
//#define _WIN32_WINNT 0x0400
#define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */
#include <windows.h>
#include <string>
#include <sys/timeb.h>
#include <string.h>
#define DIR_SEPARATOR '\\'
#define DIR_SEPARATOR_S "\\"
// =============================================================
// Default paths to shared library/DLLs and files
// =============================================================
#define PLATFORM_DEFAULT_DEPLOY_PATH ""
#ifdef _DEBUG
#define PLATFORM_XMLPARSER_PATH "AxisXMLParser_D.dll"
#define PLATFORM_TRANSPORTHTTP_PATH "HTTPTransport_D.dll"
#define PLATFORM_CHANNEL_PATH "HTTPChannel_D.dll"
#define PLATFORM_SSLCHANNEL_PATH "Unknown"
#else
#define PLATFORM_XMLPARSER_PATH "AxisXMLParser.dll"
#define PLATFORM_TRANSPORTHTTP_PATH "HTTPTransport.dll"
#define PLATFORM_CHANNEL_PATH "HTTPChannel.dll"
#define PLATFORM_SSLCHANNEL_PATH "Unknown"
#endif
#define PLATFORM_LOG_PATH ""
#define PLATFORM_CLIENTLOG_PATH ""
#define PLATFORM_CONFIG_PATH "/axiscpp.conf"
#define PLATFORM_SECUREINFO ""
// =============================================================
// Library loading and procedure resolution
// =============================================================
#define DLHandler HINSTANCE
#define RTLD_LAZY 0 // not sure this is needed?
#define PLATFORM_LOADLIBINIT()
#define PLATFORM_LOADLIB(_lib) callLoadLib(_lib)
#define PLATFORM_UNLOADLIB FreeLibrary
#define PLATFORM_GETPROCADDR GetProcAddress
#define PLATFORM_LOADLIBEXIT()
#define PLATFORM_LOADLIB_ERROR PLATFORM_GET_ERROR_MESSAGE(GetLastError())
// =============================================================
// National Language Support
// =============================================================
// STRTOASC is to translate single byte 'native' character representation to ASCII
// ASCTOSTR is to translate single byte ascii representation to 'native' character
// CANNOT be used with constants
#define PLATFORM_STRTOASC( x ) ( x )
#define PLATFORM_ASCTOSTR( x ) ( x )
#define PLATFORM_DOUBLE_QUOTE_S "\""
#define PLATFORM_DOUBLE_QUOTE_C '\"'
// Some C functions are locale-sensitive. On IBM i strtod() is locale-sensitive,
// such that if running in french locale the strtod() function expects
// the decimal point to be a comma. If the same holds true with
// other platforms then you will need to set this define appropriately.
#define PLATFORM_PROCESS_DECIMAL_POINT_C '.'
#define PLATFORM_XML_ENTITY_REFERENCE_CHARS_S "<>&\"\'"
// Case-insensitive string compares
#define PLATFORM_STRCASECMP _stricmp
// =============================================================
// Miscellaneous
// =============================================================
#define PLATFORM_SET_SOCKET_BLOCKING(x) \
{ \
u_long iMode = 0; \
ioctlsocket(x, FIONBIO, &iMode); \
}
#define PLATFORM_SET_SOCKET_NONBLOCKING(x) \
{ \
u_long iMode = 1; \
ioctlsocket(x, FIONBIO, &iMode); \
}
#define PLATFORM_SLEEP(x) Sleep(x)
/**
* Get the last error code from the system.
* Please ensure that this is a thread safe implementation
* and that it returns a long
* @return long the lsat error message for this thread
*/
#define GETLASTERROR GetLastError()
/**
* From the last error number get a sensible std::string representing it
* @param errorNumber the error Number you are trying to get a message for
* @return the error message. NOTE: The caller is responsible for deleting the returned string
*/
#define PLATFORM_GET_ERROR_MESSAGE(errorNumber) getPlatformErrorMessage(errorNumber)
/**
* type to be used for 64bit integers
*/
#define LONGLONG __int64
#define LONGLONGVALUE(value) value##I64
#define UNSIGNED_LONGLONGVALUE(value) value##UI64
/**
* Format string to be used in printf for 64bit integers
*/
#define PRINTF_LONGLONG_FORMAT_SPECIFIER "%I64d"
#define PRINTF_LONGLONG_FORMAT_SPECIFIER_CHARS "I64d"
#define PRINTF_UNSIGNED_LONGLONG_FORMAT_SPECIFIER "%I64u"
#define PRINTF_UNSIGNED_LONGLONG_FORMAT_SPECIFIER_CHARS "I64u"
#define PRINTF_LONGLONG_LOG_FORMAT_SPECIFIER "%.8I64u"
/**
* Platform specific method to obtain current thread ID
*/
#define PLATFORM_GET_THREAD_ID GetCurrentThreadId()
/**
* Platform specific method to obtain current time in milli seconds
*/
#define PLATFORM_GET_TIME_IN_MILLIS _ftime
#define PLATFORM_TIMEB _timeb
std::string getPlatformErrorMessage(long errorNumber);
HMODULE callLoadLib(LPCTSTR lib);
/**
* File modes
*/
#define TRACE_FILE_MODE1 "a"
#define TRACE_FILE_MODE2 "a"
#endif