<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>sysconfig.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.2.17 --> <center> <a class="qindex" href="main.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>sysconfig.h</h1><a href="sysconfig_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 00014 <span class="preprocessor">#ifndef SYSCONFIG_H</span> 00015 <span class="preprocessor"></span><span class="preprocessor">#define SYSCONFIG_H</span> 00016 <span class="preprocessor"></span> 00017 <span class="comment">/* \def __BORLANDC__</span> 00018 <span class="comment"> Manifest constant present in all Borland compilers that contains the</span> 00019 <span class="comment"> compiler version number. </span> 00020 <span class="comment"> */</span> 00021 00022 <span class="comment">/* \def __CYGWIN__</span> 00023 <span class="comment"> Manifest constant present in cygwin compilers.</span> 00024 <span class="comment"> */</span> 00025 00026 <span class="comment">/* \def _MSC_VER</span> 00027 <span class="comment"> Manifest constant present in all Microsoft Visual C compilers that</span> 00028 <span class="comment"> contains the compiler version number.</span> 00029 <span class="comment"> */</span> 00030 00044 <span class="preprocessor">#if ( defined (__WIN32__) || defined (_WIN32) ) && !defined (WIN32)</span> <a name="l00045"></a><a class="code" href="sysconfig_8h.html#a0">00045</a> <span class="preprocessor"></span><span class="preprocessor"> #define WIN32 1</span> 00046 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__CYGWIN__)</span> 00047 <span class="preprocessor"></span><span class="preprocessor"> #define UNIX 1</span> 00048 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 00049 <span class="preprocessor"></span> 00050 <span class="preprocessor">#if !defined(UNIX) && !defined(WIN32) && !defined(__cplusplus)</span> 00051 <span class="preprocessor"></span><span class="preprocessor"> #error Unsupported compiler and/or operating system.</span> 00052 <span class="preprocessor"></span><span class="preprocessor"> #error Please update sysconfig.h with your compiler or OS information.</span> 00053 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 00054 <span class="preprocessor"></span> 00059 <span class="preprocessor">#ifdef WIN32</span> <a name="l00060"></a><a class="code" href="sysconfig_8h.html#a1">00060</a> <span class="preprocessor"></span><span class="preprocessor"> #define WIN32_LEAN_AND_MEAN 1</span> 00061 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 00062 <span class="preprocessor"></span> 00063 <span class="comment">// BC++ uses _MT which is a manifest constant picked by compiler options.</span> 00064 <span class="comment">// VC++ 6.0 compiler options by default are multi-threaded</span> 00065 <span class="preprocessor">#ifdef UNIX</span> 00066 <span class="preprocessor"></span><span class="preprocessor"> #define _MULTI_THREADED</span> 00067 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 00068 <span class="preprocessor"></span> 00069 <span class="comment">// Disable some noise and blather from VC++ compiler</span> 00070 <span class="preprocessor">#ifdef _MSC_VER</span> 00071 <span class="preprocessor"></span><span class="preprocessor"> #pragma warning(disable:4786) // names over 255 characters in templates</span> 00072 <span class="preprocessor"></span><span class="preprocessor"> #pragma warning(disable:4068) // unknown pragma warnings</span> 00073 <span class="preprocessor"></span><span class="preprocessor"> #pragma warning(disable:4101) // unreferenced variables</span> 00074 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 00075 <span class="preprocessor"></span> 00076 <span class="comment">// C++ STL headers used</span> 00077 <span class="preprocessor">#include <iostream></span> 00078 <span class="preprocessor">#include <fstream></span> 00079 <span class="preprocessor">#include <list></span> 00080 <span class="preprocessor">#include <queue></span> 00081 <span class="preprocessor">#include <string></span> 00082 <span class="preprocessor">#include <exception></span> 00083 <span class="comment">// C++ wrappers for C stdlib functions</span> 00084 <span class="preprocessor">#include <cstdio></span> 00085 <span class="preprocessor">#include <ctime></span> 00086 <span class="preprocessor">#if defined(WIN32) && defined(__BORLANDC__) </span> 00087 <span class="preprocessor"></span><span class="preprocessor"> #include <cprocess></span> 00088 <span class="preprocessor">#endif</span> 00089 <span class="preprocessor"></span> 00094 <span class="keyword">using</span> <span class="keyword">namespace </span>std; 00095 00096 <span class="preprocessor">#if defined(WIN32)</span> 00097 <span class="preprocessor"></span><span class="preprocessor"> #include <winsock2.h></span> 00098 <span class="preprocessor">#else</span> 00099 <span class="preprocessor"></span><span class="preprocessor"> #include <netinet/in.h></span> 00100 <span class="preprocessor"> #include <sys/socket.h></span> 00101 <span class="preprocessor"> #include <sys/ioctl.h></span> 00102 <span class="preprocessor">#endif</span> 00103 <span class="preprocessor"></span> 00104 <span class="comment">// For threading - Borland has a cprocess header - see above</span> 00105 <span class="preprocessor">#if defined(WIN32) && defined(_MSC_VER)</span> 00106 <span class="preprocessor"></span><span class="preprocessor"> #include <process.h></span> 00107 <span class="preprocessor">#endif</span> 00108 <span class="preprocessor"></span> 00109 <span class="comment">// Additional headers required for Unix.</span> 00110 <span class="preprocessor">#if defined(UNIX)</span> 00111 <span class="preprocessor"></span><span class="preprocessor"> #include <pthread.h></span> <span class="comment">// pthreads library</span> 00112 <span class="preprocessor"> #include <unistd.h></span> 00113 <span class="preprocessor"> #include <stdarg.h></span> <span class="comment">// for variable arguments - used by Log</span> 00114 <span class="preprocessor">#endif</span> 00115 <span class="preprocessor"></span><span class="preprocessor">#pragma hdrstop</span> 00116 <span class="preprocessor"></span> 00117 <span class="comment">/*</span> 00118 <span class="comment"> This is a feeble attempt to minimize the changes to this code for</span> 00119 <span class="comment"> Cygwin/Unix by making use of macros that disguise, hide, morph and</span> 00120 <span class="comment"> otherwise obfuscate the code. With the side effect of confusing</span> 00121 <span class="comment"> programmers looking at it. So I lied above when I said I'd be careful.</span> 00122 <span class="comment"> */</span> 00123 <span class="preprocessor">#if defined(WIN32)</span> 00124 <span class="preprocessor"></span> <span class="comment">// Thread stuff</span> <a name="l00125"></a><a class="code" href="sysconfig_8h.html#a3">00125</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="sysconfig_8h.html#a3">THREADHANDLE_T</a>; <a name="l00126"></a><a class="code" href="sysconfig_8h.html#a2">00126</a> <span class="preprocessor"> #define StartThread(T_HANDLE, FUNCTION, STACKSIZE, ARGS) \</span> 00127 <span class="preprocessor"> T_HANDLE = _beginthread((FUNCTION), (STACKSIZE), (ARGS));</span> 00128 <span class="preprocessor"></span><span class="preprocessor">#elif defined(UNIX)</span> 00129 <span class="preprocessor"></span> <span class="comment">// Network stuff</span> 00130 <span class="keyword">typedef</span> <span class="keywordtype">int</span> SOCKET; 00131 <span class="preprocessor"> #define INVALID_SOCKET -1 // Better look for side-effects with this! - 0 on Windows</span> 00132 <span class="preprocessor"></span><span class="preprocessor"> #define SOCKET_ERROR -1</span> 00133 <span class="preprocessor"></span><span class="preprocessor"> #define WSAEWOULDBLOCK EWOULDBLOCK // Used in Server and Socket</span> 00134 <span class="preprocessor"></span><span class="preprocessor"> #define SD_SEND SHUT_WR // Used in Server::Disconnect</span> 00135 <span class="preprocessor"></span><span class="preprocessor"> #define closesocket(X) close(X)</span> 00136 <span class="preprocessor"></span><span class="preprocessor"> #define WSAGetLastError(X) errno</span> 00137 <span class="preprocessor"></span><span class="preprocessor"> #define ioctlsocket(X,Y,Z) ioctl(X,Y,Z) </span> 00138 <span class="preprocessor"></span> <span class="comment">// Synchronization stuff</span> 00139 <span class="preprocessor"> #define InitializeCriticalSection(X) *(X) = PTHREAD_MUTEX_INITIALIZER;</span> 00140 <span class="preprocessor"></span><span class="preprocessor"> #define DeleteCriticalSection(X) </span> 00141 <span class="preprocessor"></span><span class="preprocessor"> #define CRITICAL_SECTION pthread_mutex_t</span> 00142 <span class="preprocessor"></span><span class="preprocessor"> #define EnterCriticalSection(X) pthread_mutex_lock(X);</span> 00143 <span class="preprocessor"></span><span class="preprocessor"> #define LeaveCriticalSection(X) pthread_mutex_unlock(X);</span> 00144 <span class="preprocessor"></span> 00145 <span class="comment">// Thread stuff</span> 00146 <span class="keyword">typedef</span> pthread_t <a class="code" href="sysconfig_8h.html#a3">THREADHANDLE_T</a>; 00147 <span class="preprocessor"> #define StartThread(T_HANDLE, FUNCTION, STACKSIZE, ARGS) \</span> 00148 <span class="preprocessor"> pthread_create(&(T_HANDLE), NULL, (FUNCTION), (ARGS));</span> 00149 <span class="preprocessor"></span><span class="preprocessor"> #define WaitForSingleObject(T_HANDLE, WAIT) \</span> 00150 <span class="preprocessor"> pthread_join(*(T_HANDLE), NULL)</span> 00151 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 00152 <span class="preprocessor"></span> 00153 <span class="preprocessor">#endif // SYSCONFIG_H</span> </pre></div><hr><address style="align: right;"><small>Generated on Mon Mar 29 23:12:53 2004 for Paradigm by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.17 </small></address> </body> </html>