📄 contain.h
字号:
/*
* contain.h
*
* Low level object and container definitions.
*
* Portable Windows Library
*
* Copyright (c) 1993-1998 Equivalence Pty. Ltd.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Portable Windows Library.
*
* The Initial Developer of the Original Code is Equivalence Pty. Ltd.
*
* Portions are Copyright (C) 1993 Free Software Foundation, Inc.
* All Rights Reserved.
*
* Contributor(s): ______________________________________.
*
* $Log: contain.h,v $
* Revision 1.27 2005/11/30 12:47:38 csoutheren
* Removed tabs, reformatted some code, and changed tags for Doxygen
*
* Revision 1.26 2005/03/10 06:37:21 csoutheren
* Removed use of typeid on WIndows to get class name because it is not threadsafe
* In fact, lets just use #classname everywhere because that will always work
* Thanks to Vyacheslav Frolov
*
* Revision 1.25 2004/05/12 04:36:18 csoutheren
* Fixed problems with using sem_wait and friends on systems that do not
* support atomic integers
*
* Revision 1.24 2004/04/11 13:34:51 csoutheren
* Sigh. gcc needs a namespace directive in order to compile correctly :(
*
* Revision 1.23 2004/04/11 06:15:35 csoutheren
* Modified to use Atomic_word if available
*
* Revision 1.22 2004/04/11 03:20:42 csoutheren
* Added Unix implementation of PCriticalSection
*
* Revision 1.21 2004/04/09 11:54:47 csoutheren
* Added configure.in check for STL streams, and tested with gcc 2.95.3,
* gcc 3.3.1, and gcc 3.3.3
*
* Revision 1.20 2004/04/09 00:42:59 csoutheren
* Changed Unix build to use slightly different method for
* keep class names, as GCC does not use actual class names for typeinfo
*
* Revision 1.19 2004/04/03 08:57:41 csoutheren
* Replaced pseudo-RTTI with real RTTI
*
* Revision 1.18 2004/04/03 07:14:51 csoutheren
* Remove no-rtti compiler flag
* Added __USE_STL__ to allow interopability with STL and iostreams
*
* Revision 1.17 2003/10/27 03:21:43 csoutheren
* Added UINT type needed for QoS
*
* Revision 1.16 2003/09/17 01:18:03 csoutheren
* Removed recursive include file system and removed all references
* to deprecated coooperative threading support
*
* Revision 1.15 2002/06/06 09:27:26 robertj
* Fixed PINDEX macros for being signed no (gcc3 port).
* iAdded limits.h for Solaris compatibility.
*
* Revision 1.14 2002/06/05 12:29:15 craigs
* Changes for gcc 3.1
*
* Revision 1.13 1999/05/01 11:29:19 robertj
* Alpha linux port changes.
*
* Revision 1.12 1999/01/08 01:27:43 robertj
* Moved include of pmachdep to earlier in inclusions.
*
* Revision 1.11 1998/11/30 22:06:35 robertj
* New directory structure.
*
* Revision 1.10 1998/11/03 10:56:33 robertj
* Removed unused extern for PErrorStream
*
* Revision 1.9 1998/09/24 04:11:31 robertj
* Added open software license.
*
*/
#include "pmachdep.h"
#include <unistd.h>
#include <ctype.h>
#include <limits.h>
///////////////////////////////////////////
//
// define TRUE and FALSE for environments that don't have them
//
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
///////////////////////////////////////////
//
// define a macro for declaring classes so we can bolt
// extra things to class declarations
//
#define PEXPORT
#define PSTATIC
///////////////////////////////////////////
//
// define some basic types and their limits
//
typedef int BOOL;
typedef unsigned char BYTE; // 1 byte
typedef signed short PInt16; // 16 bit
typedef unsigned short WORD;
typedef signed int PInt32; // 32 bit
typedef unsigned int DWORD;
#ifndef P_NEEDS_INT64
typedef signed long long int PInt64;
typedef unsigned long long int PUInt64; // 64 bit
#endif
// Integer type that is same size as a pointer type.
#ifdef P_64BIT
typedef long INT;
typedef unsigned long UINT;
#else
typedef int INT;
typedef unsigned int UINT;
#endif
typedef int PINDEX;
#define P_MAX_INDEX INT_MAX
inline PINDEX PABSINDEX(PINDEX idx) { return (idx < 0 ? -idx : idx)&P_MAX_INDEX; }
#define PASSERTINDEX(idx) PAssert((idx) >= 0, PInvalidArrayIndex)
///////////////////////////////////////////
//
// needed for STL
//
#if P_HAS_STL_STREAMS
#define __USE_STL__ 1
#endif
#define P_HAS_TYPEINFO 1
using namespace std;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -