summaryrefslogtreecommitdiff
path: root/src/Host.h
diff options
context:
space:
mode:
authorPetr Mrázek2012-03-11 13:37:40 +0100
committerPetr Mrázek2012-03-11 13:37:40 +0100
commit7ef04f1dfc0e66621dafd52201b48ab77cfff770 (patch)
tree80fd056a1ab56a30b05b7fadc039d5a8d3b4deaa /src/Host.h
downloadclsocket-7ef04f1dfc0e66621dafd52201b48ab77cfff770.tar.gz
clsocket-7ef04f1dfc0e66621dafd52201b48ab77cfff770.tar.bz2
clsocket-7ef04f1dfc0e66621dafd52201b48ab77cfff770.tar.xz
import original clsocket files
Diffstat (limited to 'src/Host.h')
-rwxr-xr-xsrc/Host.h251
1 files changed, 251 insertions, 0 deletions
diff --git a/src/Host.h b/src/Host.h
new file mode 100755
index 0000000..b24d225
--- /dev/null
+++ b/src/Host.h
@@ -0,0 +1,251 @@
+/*---------------------------------------------------------------------------*/
+/* */
+/* Host.h - Basic header file to provide cross-platform solutions via */
+/* macros, conditional compilation, etc. */
+/* */
+/* Author : Mark Carrier (mark@carrierlabs.com) */
+/* */
+/*---------------------------------------------------------------------------*/
+/* Copyright (c) 2007 CarrierLabs, LLC. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * 4. The name "CarrierLabs" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please contact
+ * mark@carrierlabs.com.
+ *
+ * THIS SOFTWARE IS PROVIDED BY MARK CARRIER ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MARK CARRIER OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *----------------------------------------------------------------------------*/
+#ifndef __HOST_H__
+#define __HOST_H__
+
+#include <limits.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* */
+/* Type Definition Macros */
+/* */
+/*---------------------------------------------------------------------------*/
+#ifndef __WORDSIZE
+ /* Assume 32 */
+ #define __WORDSIZE 32
+#endif
+
+#if defined(_LINUX) || defined(_DARWIN)
+ typedef unsigned char uint8;
+ typedef char int8;
+ typedef unsigned short uint16;
+ typedef short int16;
+ typedef unsigned int uint32;
+ typedef int int32;
+ typedef int SOCKET;
+#endif
+
+#ifdef WIN32
+ struct iovec {
+ void *iov_base;
+ size_t iov_len;
+ };
+
+ typedef unsigned char uint8;
+ typedef char int8;
+ typedef unsigned short uint16;
+ typedef short int16;
+ typedef unsigned int uint32;
+ typedef int int32;
+#endif
+
+#ifdef WIN32
+ typedef int socklen_t;
+#endif
+
+#if defined(WIN32)
+ typedef unsigned long long int uint64;
+ typedef long long int int64;
+#elif (__WORDSIZE == 32)
+ __extension__
+ typedef long long int int64;
+ __extension__
+ typedef unsigned long long int uint64;
+#elif (__WORDSIZE == 64)
+ typedef unsigned long int uint64;
+ typedef long int int64;
+#endif
+
+#ifdef WIN32
+ #define UINT8_MAX (UCHAR_MAX)
+ #define UINT16_MAX (USHRT_MAX)
+ #define UINT32_MAX (ULONG_MAX)
+
+ #if __WORDSIZE == 64
+ #define SIZE_MAX (18446744073709551615UL)
+ #else
+ #ifndef SIZE_MAX
+ #define SIZE_MAX (4294967295U)
+ #endif
+ #endif
+#endif
+
+#if defined(WIN32)
+ #define ssize_t size_t
+#endif
+
+#ifndef TRUE
+ #define TRUE 1
+#endif
+
+#ifndef FALSE
+ #define FALSE 0
+#endif
+
+#ifndef htonll
+#ifdef _BIG_ENDIAN
+#define htonll(x) (x)
+#define ntohll(x) (x)
+#else
+#define htonll(x) ((((uint64)htonl(x)) << 32) + htonl(x >> 32))
+#define ntohll(x) ((((uint64)ntohl(x)) << 32) + ntohl(x >> 32))
+#endif
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* */
+/* Socket Macros */
+/* */
+/*---------------------------------------------------------------------------*/
+#ifdef WIN32
+#define SHUT_RD 0
+#define SHUT_WR 1
+#define SHUT_RDWR 2
+#define ACCEPT(a,b,c) accept(a,b,c)
+#define CONNECT(a,b,c) connect(a,b,c)
+#define CLOSE(a) closesocket(a)
+#define READ(a,b,c) read(a,b,c)
+#define RECV(a,b,c,d) recv(a, (char *)b, c, d)
+#define RECVFROM(a,b,c,d,e,f) recvfrom(a, (char *)b, c, d, (sockaddr *)e, (int *)f)
+#define RECV_FLAGS MSG_WAITALL
+#define SELECT(a,b,c,d,e) select((int32)a,b,c,d,e)
+#define SEND(a,b,c,d) send(a, (const char *)b, (int)c, d)
+#define SENDTO(a,b,c,d,e,f) sendto(a, (const char *)b, (int)c, d, e, f)
+#define SEND_FLAGS 0
+#define SENDFILE(a,b,c,d) sendfile(a, b, c, d)
+#define SET_SOCKET_ERROR(x,y) errno=y
+#define SOCKET_ERROR_INTERUPT EINTR
+#define SOCKET_ERROR_TIMEDOUT EAGAIN
+#define WRITE(a,b,c) write(a,b,c)
+#define WRITEV(a,b,c) Writev(b, c)
+#define GETSOCKOPT(a,b,c,d,e) getsockopt(a,b,c,(char *)d, (int *)e)
+#define SETSOCKOPT(a,b,c,d,e) setsockopt(a,b,c,(char *)d, (int)e)
+#define GETHOSTBYNAME(a) gethostbyname((const char *)a)
+#endif
+
+#if defined(_LINUX) || defined(_DARWIN)
+#define ACCEPT(a,b,c) accept(a,b,c)
+#define CONNECT(a,b,c) connect(a,b,c)
+#define CLOSE(a) close(a)
+#define READ(a,b,c) read(a,b,c)
+#define RECV(a,b,c,d) recv(a, (void *)b, c, d)
+#define RECVFROM(a,b,c,d,e,f) recvfrom(a, (char *)b, c, d, (sockaddr *)e, f)
+#define RECV_FLAGS MSG_WAITALL
+#define SELECT(a,b,c,d,e) select(a,b,c,d,e)
+#define SEND(a,b,c,d) send(a, (const int8 *)b, c, d)
+#define SENDTO(a,b,c,d,e,f) sendto(a, (const int8 *)b, c, d, e, f)
+#define SEND_FLAGS 0
+#define SENDFILE(a,b,c,d) sendfile(a, b, c, d)
+#define SET_SOCKET_ERROR(x,y) errno=y
+#define SOCKET_ERROR_INTERUPT EINTR
+#define SOCKET_ERROR_TIMEDOUT EAGAIN
+#define WRITE(a,b,c) write(a,b,c)
+#define WRITEV(a,b,c) writev(a, b, c)
+#define GETSOCKOPT(a,b,c,d,e) getsockopt((int)a,(int)b,(int)c,(void *)d,(socklen_t *)e)
+#define SETSOCKOPT(a,b,c,d,e) setsockopt((int)a,(int)b,(int)c,(const void *)d,(int)e)
+#define GETHOSTBYNAME(a) gethostbyname((const char *)a)
+#endif
+
+
+/*---------------------------------------------------------------------------*/
+/* */
+/* File Macros */
+/* */
+/*---------------------------------------------------------------------------*/
+#define STRUCT_STAT struct stat
+#define LSTAT(x,y) lstat(x,y)
+#define FILE_HANDLE FILE *
+#define CLEARERR(x) clearerr(x)
+#define FCLOSE(x) fclose(x)
+#define FEOF(x) feof(x)
+#define FERROR(x) ferror(x)
+#define FFLUSH(x) fflush(x)
+#define FILENO(s) fileno(s)
+#define FOPEN(x,y) fopen(x, y)
+ //#define FREAD(a,b,c,d) fread(a, b, c, d)
+#define FSTAT(s, st) fstat(FILENO(s), st)
+ //#define FWRITE(a,b,c,d) fwrite(a, b, c, d)
+#define STAT_BLK_SIZE(x) ((x).st_blksize)
+
+
+/*---------------------------------------------------------------------------*/
+/* */
+/* Misc Macros */
+/* */
+/*---------------------------------------------------------------------------*/
+#if defined(WIN32)
+ #define GET_CLOCK_COUNT(x) QueryPerformanceCounter((LARGE_INTEGER *)x)
+#else
+ #define GET_CLOCK_COUNT(x) gettimeofday(x, NULL)
+#endif
+
+#if defined(WIN32)
+ #define STRTOULL(x) _atoi64(x)
+#else
+ #define STRTOULL(x) strtoull(x, NULL, 10)
+#endif
+
+#if defined(WIN32)
+ #define SNPRINTF _snprintf
+ #define PRINTF printf
+ #define VPRINTF vprintf
+ #define FPRINTF fprintf
+#else
+ #define SNPRINTF snprintf
+ #define PRINTF printf
+ #define VPRINTF vprintf
+ #define FPRINTF fprintf
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __HOST_H__ */
+