contain.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:7k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * contain.h
  3.  *
  4.  * General container classes.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: contain.h,v $
  30.  * Revision 1.26  2000/05/02 02:58:09  robertj
  31.  * Added strcasecmp macro, BSDish version of stricmp
  32.  *
  33.  * Revision 1.25  2000/02/28 11:39:52  robertj
  34.  * Removed warning for if STRICT (for windows.h) already defined.
  35.  *
  36.  * Revision 1.24  1999/03/09 10:30:17  robertj
  37.  * Fixed ability to have PMEMORY_CHECK on/off on both debug/release versions.
  38.  *
  39.  * Revision 1.23  1998/11/30 02:55:06  robertj
  40.  * New directory structure
  41.  *
  42.  * Revision 1.22  1998/10/13 14:13:16  robertj
  43.  * Complete rewrite of memory leak detection code.
  44.  *
  45.  * Revision 1.21  1998/09/24 03:29:57  robertj
  46.  * Added open software license.
  47.  *
  48.  * Revision 1.20  1998/03/09 07:15:15  robertj
  49.  * Added support for MemCheck-32 program.
  50.  *
  51.  * Revision 1.19  1998/01/26 00:52:13  robertj
  52.  * Fixed istream << operator for PInt64, should be reference.
  53.  *
  54.  * Revision 1.18  1997/07/08 13:01:30  robertj
  55.  * DLL support.
  56.  *
  57.  * Revision 1.17  1997/01/12 04:13:07  robertj
  58.  * Changed library to support NT 4.0 API changes.
  59.  *
  60.  * Revision 1.16  1996/09/14 12:38:57  robertj
  61.  * Moved template define from command line to code.
  62.  * Fixed correct application of windows defines.
  63.  *
  64.  * Revision 1.15  1996/08/17 10:00:33  robertj
  65.  * Changes for Windows DLL support.
  66.  *
  67.  * Revision 1.14  1996/08/08 10:08:58  robertj
  68.  * Directory structure changes for common files.
  69.  *
  70.  * Revision 1.13  1996/07/15 10:26:55  robertj
  71.  * MSVC 4.1 Support
  72.  *
  73.  * Revision 1.12  1996/03/31 09:07:29  robertj
  74.  * Removed bad define in NT headers.
  75.  *
  76.  * Revision 1.11  1996/01/28 02:54:27  robertj
  77.  * Removal of MemoryPointer classes as usage didn't work for GNU.
  78.  *
  79.  * Revision 1.10  1996/01/23 13:23:15  robertj
  80.  * Added const version of PMemoryPointer
  81.  *
  82.  * Revision 1.9  1995/11/09 12:23:46  robertj
  83.  * Added 64 bit integer support.
  84.  * Added platform independent base type access classes.
  85.  *
  86.  * Revision 1.8  1995/04/25 11:31:18  robertj
  87.  * Changes for DLL support.
  88.  *
  89.  * Revision 1.7  1995/03/12 04:59:54  robertj
  90.  * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code.
  91.  * Used built-in equate for WIN32 API (_WIN32).
  92.  *
  93.  * Revision 1.6  1995/01/09  12:28:45  robertj
  94.  * Moved EXPORTED definition from applicat.h
  95.  *
  96.  * Revision 1.5  1995/01/06  10:47:08  robertj
  97.  * Added 64 bit integer.
  98.  *
  99.  * Revision 1.4  1994/11/19  00:18:26  robertj
  100.  * Changed PInteger to be INT, ie standard type like BOOL/WORD etc.
  101.  *
  102.  * Revision 1.3  1994/07/02  03:18:09  robertj
  103.  * Support for 16 bit systems.
  104.  *
  105.  * Revision 1.2  1994/06/25  12:13:01  robertj
  106.  * Synchronisation.
  107.  *
  108.  * Revision 1.1  1994/04/01  14:38:42  robertj
  109.  * Initial revision
  110.  *
  111.  */
  112. #ifndef _OBJECT_H
  113. #define _OBJECT_H
  114. #ifdef _MSC_VER
  115. #pragma warning(disable:4201)  // nonstandard extension: nameless struct/union
  116. #pragma warning(disable:4251)  // disable warning exported structs
  117. #pragma warning(disable:4511)  // default copy ctor not generated warning
  118. #pragma warning(disable:4512)  // default assignment op not generated warning
  119. #pragma warning(disable:4514)  // unreferenced inline removed
  120. #pragma warning(disable:4699)  // precompiled headers
  121. #pragma warning(disable:4702)  // disable warning about unreachable code
  122. #pragma warning(disable:4705)  // disable warning about statement has no effect
  123. #pragma warning(disable:4710)  // inline not expanded warning
  124. #pragma warning(disable:4711)  // auto inlining warning
  125. #pragma warning(disable:4097)  // typedef synonym for class
  126. #if _MSC_VER>=800
  127. #define PHAS_TEMPLATES
  128. #endif
  129. #endif
  130. ///////////////////////////////////////////////////////////////////////////////
  131. // Machine & Compiler dependent declarations
  132. #if defined(_WIN32) && !defined(WIN32)
  133. #define WIN32
  134. #endif
  135. #if defined(_WINDOWS) || defined(_WIN32)
  136. #ifndef WINVER
  137. #define WINVER 0x401
  138. #endif
  139. #ifndef STRICT
  140. #define STRICT
  141. #endif
  142. #include <windows.h>
  143. #undef DELETE   // Remove define from NT headers.
  144. #else
  145. typedef unsigned char  BYTE;  //  8 bit unsigned integer quantity
  146. typedef unsigned short WORD;  // 16 bit unsigned integer quantity
  147. typedef unsigned long  DWORD; // 32 bit unsigned integer quantity
  148. typedef int            BOOL;  // type returned by expresion (i != j)
  149. #define TRUE 1
  150. #define FALSE 0
  151. #define NEAR __near
  152. #endif
  153. // Declaration for exported callback functions to OS
  154. #if defined(_WIN32)
  155. #define PEXPORTED __stdcall
  156. #elif defined(_WINDOWS)
  157. #define PEXPORTED WINAPI __export
  158. #else
  159. #define PEXPORTED __far __pascal
  160. #endif
  161. // Declaration for static global variables (WIN16 compatibility)
  162. #if defined(_WIN32)
  163. #define PSTATIC
  164. #else
  165. #define PSTATIC __near
  166. #endif
  167. // Declaration for platform independent architectures
  168. #define PCHAR8 PANSI_CHAR
  169. #define PBYTE_ORDER PLITTLE_ENDIAN
  170. // Declaration for integer that is the same size as a void *
  171. #if defined(_WIN32)
  172. typedef int INT;
  173. #else
  174. typedef long INT;   
  175. #endif
  176. // Declaration for signed integer that is 16 bits
  177. typedef short PInt16;
  178. // Declaration for signed integer that is 32 bits
  179. typedef long PInt32;
  180. // Declaration for 64 bit unsigned integer quantity
  181. #if defined(_MSC_VER) && defined(_WIN32)
  182. #define P_HAS_INT64
  183. typedef signed __int64 PInt64;
  184. typedef unsigned __int64 PUInt64;
  185. class ostream;
  186. class istream;
  187. ostream & operator<<(ostream & s, PInt64 v);
  188. ostream & operator<<(ostream & s, PUInt64 v);
  189. istream & operator>>(istream & s, PInt64 & v);
  190. istream & operator>>(istream & s, PUInt64 & v);
  191. #endif
  192. // Standard array index type (depends on compiler)
  193. // Type used in array indexes especially that required by operator[] functions.
  194. #ifdef _MSC_VER
  195. #define PINDEX int
  196. #if defined(_WIN32)
  197. const PINDEX P_MAX_INDEX = 0x7fffffff;
  198. #else
  199. const PINDEX P_MAX_INDEX = 0x7fff;
  200. #endif
  201. inline PINDEX PABSINDEX(PINDEX idx) { return (idx < 0 ? -idx : idx)&P_MAX_INDEX; }
  202. #define PASSERTINDEX(idx) PAssert((idx) >= 0, PInvalidArrayIndex)
  203. #else
  204. #define PINDEX unsigned
  205. #if sizeof(int) == 4
  206. const PINDEX P_MAX_INDEX = 0xffffffff;
  207. #else
  208. const PINDEX P_MAX_INDEX = 0xffff;
  209. #endif
  210. #define PABSINDEX(idx) (idx)
  211. #define PASSERTINDEX(idx)
  212. #endif
  213. #define strcasecmp(s1,s2) stricmp(s1,s2)
  214. ///////////////////////////////////////////////////////////////////////////////
  215. // Fill in common declarations
  216. #include "../../contain.h"
  217. #endif // _OBJECT_H
  218. // End Of File ///////////////////////////////////////////////////////////////