pport.h
来自「PTypes是一个扩充了多线程和网络功能的STL库」· C头文件 代码 · 共 209 行
H
209 行
/* * * C++ Portable Types Library (PTypes) * Version 2.0.2 Released 17-May-2004 * * Copyright (C) 2001-2004 Hovik Melikyan * * http://www.melikyan.com/ptypes/ * */#ifndef __PPORT_H__#define __PPORT_H__#if defined(linux)# include <stdint.h> // for uintptr_t#endif#include <sys/types.h>#ifndef __cplusplus# error "This is a C++ source"#endif#define PTYPES_NAMESPACE pt//// conditional namespace declarations//#ifdef PTYPES_NAMESPACE# define PTYPES_BEGIN namespace PTYPES_NAMESPACE {# define PTYPES_END }# define USING_PTYPES using namespace PTYPES_NAMESPACE;#else# define PTYPES_NAMESPACE# define PTYPES_BEGIN# define PTYPES_END# define USING_PTYPES#endif//// Windows DLL export/import and calling convention macros//#ifdef WIN32# if defined(PTYPES_DLL_EXPORTS)# define ptpublic __declspec(dllexport)# elif defined(PTYPES_DLL)# define ptpublic __declspec(dllimport)# else# define ptpublic# endif# define ptdecl __stdcall# define __PFASTCALL __fastcall#else# define ptpublic # define ptdecl # define __PFASTCALL#endif//// versioning//extern "C" ptpublic unsigned long __ptypes_version;// this enables outdated class names, such as exceptobj, tsemaphore, // ipsocket, ipserver, etc.// #define PTYPES18_COMPAT// this enables old algebraic list interfaces; NO_PTYPES19_COMPAT// can be defined at command line#if !defined(NO_PTYPES19_COMPAT)# define PTYPES19_COMPAT#endifPTYPES_BEGIN#ifdef _MSC_VER// we don't want "unreferenced inline function" warning# pragma warning (disable: 4514)// ... also "copy constructor/assignment operator could not be generated"# pragma warning (disable: 4511)# pragma warning (disable: 4512)#endif#if defined(_DEBUG) && !defined(DEBUG)# define DEBUG#endif#if defined(__WIN32__) && !defined(WIN32)# define WIN32#endif// __APPLE__ is the only predefined macro on MacOS X#if defined(__APPLE__)# define __DARWIN__#endif// CHECK_BOUNDS enables bounds checking for strings and lists#if defined(DEBUG) && !defined(CHECK_BOUNDS)# define CHECK_BOUNDS#endif// COUNT_OBJALLOC helps to keep track of the number of// objects created/destroyed#if defined(DEBUG) && !defined(COUNT_OBJALLOC)# define COUNT_OBJALLOC#endif//// useful typedefs//typedef unsigned int uint;typedef unsigned long ulong;typedef unsigned short ushort;typedef unsigned char uchar;typedef signed char schar;typedef char* pchar;typedef const char* pconst;typedef void* ptr;typedef int* pint;#ifdef WIN32 typedef uint pintptr;#else typedef uintptr_t pintptr;#endif//// portable 64-bit integers//#if defined(_MSC_VER) || defined(__BORLANDC__) typedef __int64 large; typedef unsigned __int64 ularge;# define LLCONST(a) (a##i64)#else typedef long long large; typedef unsigned long long ularge;# define LLCONST(a) (a##ll)#endif#define LARGE_MIN (LLCONST(-9223372036854775807)-1)#define LARGE_MAX (LLCONST(9223372036854775807))#define ULARGE_MAX (LLCONST(18446744073709551615u))#if defined(_MSC_VER) || defined(__BORLANDC__)# define strcasecmp stricmp# define snprintf _snprintf#endif//// misc.//// I like Pascal's nil#define nil 0inline int imax(int x, int y) { return (x > y) ? x : y; }inline int imin(int x, int y) { return (x < y) ? x : y; }inline large lmax(large x, large y) { return (x > y) ? x : y; }inline large lmin(large x, large y) { return (x < y) ? x : y; }//// critical error processing//#define CRIT_FIRST 0xC0000typedef void (ptdecl *_pcrithandler)(int code, const char* msg);ptpublic _pcrithandler ptdecl getcrithandler();ptpublic _pcrithandler ptdecl setcrithandler(_pcrithandler newh);ptpublic void ptdecl fatal(int code, const char* msg);//// memory management (undocumented)// hides some BSD* incompatibility issues//ptpublic void* ptdecl memalloc(uint a);ptpublic void* ptdecl memrealloc(void* p, uint a);ptpublic void ptdecl memfree(void* p);ptpublic void ptdecl memerror();ptpublic int ptdecl memquantize(int);PTYPES_END#endif // __PPORT_H__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?