00001
00010 #ifndef P6TYPES_H__
00011 #define P6TYPES_H__ 1
00012
00013 #include <stddef.h>
00014 #include <wchar.h>
00015 #include "p6platform.h"
00016
00017 namespace P6R {
00018
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022
00027
00028 typedef unsigned char P6UINT8;
00029 typedef char P6INT8;
00030 typedef P6UINT8 P6BYTE;
00031 #if P6SIZEOF_SHORT == 2
00032 typedef unsigned short int P6UINT16;
00033 typedef short int P6INT16;
00034 #else
00035 #error Unable to find an appropriate type for P6UINT16 and P6INT16
00036 #endif
00037 #if P6SIZEOF_INT == 4
00038 typedef unsigned int P6UINT32;
00039 typedef int P6INT32;
00040 #elif P6SIZEOF_LONG == 4
00041 typedef unsigned long P6UINT32;
00042 typedef long P6INT32;
00043 #else
00044 #error Unable to find an appropriate type for P6UINT32 and P6INT32
00045 #endif
00046 #if P6SIZEOF_LONGLONG == 8
00047 typedef P6ULONGLONG P6UINT64;
00048 typedef P6LONGLONG P6INT64;
00049 #else
00050 #error Unable to find an appropriate type for P6UINT64 and P6INT64
00051 #endif
00052
00053
00054 typedef short P6SHORT;
00055 typedef unsigned short P6USHORT;
00056 typedef int P6INT;
00057 typedef unsigned int P6UINT;
00058 typedef long P6LONG;
00059 typedef unsigned long P6ULONG;
00060 typedef size_t P6SIZE;
00061 typedef double P6FLOAT;
00062
00068 typedef char P6CHAR;
00069 typedef P6CHAR* P6STR;
00070 typedef const P6CHAR* P6CSTR;
00071 typedef unsigned char P6UCHAR;
00072 typedef void P6VOID;
00073 typedef wchar_t P6WCHAR;
00074 typedef P6WCHAR* P6WSTR;
00075 typedef const P6WCHAR* P6CWSTR;
00076 typedef P6WCHAR* P6COMSTR;
00077 #define P6TEXT(t) L ## t
00078 #define P6CTEXT(t) (const P6R::P6WCHAR*) L ## t
00079 #define P6CHR(c) L ## c
00080 #define P6CCHR(c) (const P6R::P6WCHAR) L ## c
00081 #define P6CHARCNT(x) (sizeof((x))/sizeof((x)[0]))
00082
00083 #if defined(__GNUC__) || defined(__SUNPRO_CC)
00084 #define P6I64(v) v##LL
00085 #define P6U64(v) v##ULL
00086 #else
00087 #define P6I64(v) v##i64
00088 #define P6U64(v) v##ui64
00089 #endif
00090
00091
00097 typedef bool P6BOOL;
00098 #define P6TRUE 1
00099 #define P6FALSE 0
00100
00105 typedef P6UINT32 P6ERR;
00106 typedef P6SIZE P6ATOM;
00107 typedef P6SIZE P6THREADID;
00127 typedef struct {
00128 P6R::P6UINT32 timeLow;
00129 P6R::P6UINT16 timeMid;
00130 P6R::P6UINT16 timeHighVer;
00131 P6R::P6UINT8 clockNode[8];
00134 } P6UUID;
00135 #define P6UUID_STR_SIZE 39
00136
00137 typedef P6UUID IID;
00138 typedef P6UUID CID;
00139 typedef P6UUID CATID;
00150 typedef struct {
00151 P6R::P6UCHAR *pString;
00152 P6R::P6SIZE length;
00153 } P6BSTR;
00154
00164 typedef struct {
00165 const P6R::P6UCHAR *pString;
00166 P6R::P6SIZE length;
00167 } P6BCSTR;
00168
00180 typedef struct {
00181 P6R::P6WCHAR *pString;
00182 P6R::P6SIZE length;
00183 } P6BWSTR;
00184
00196 typedef struct {
00197 const P6R::P6WCHAR *pString;
00198 P6R::P6SIZE length;
00199 } P6BWCSTR;
00200
00208 typedef P6INT64 P6TIME;
00209
00213 typedef struct {
00214 P6INT32 useconds;
00215 P6INT32 seconds;
00216 P6INT32 minutes;
00217 P6INT32 hour;
00218 P6INT16 month;
00219 P6INT16 dayOfMonth;
00220 P6INT32 year;
00222 P6INT16 dayOfWeek;
00223 P6INT16 dayOfYear;
00224 P6INT32 tzoff;
00225 P6INT32 dstoff;
00226 } P6TIMEINFO;
00227
00229
00234 typedef P6UINT64 P6INTERVAL;
00235
00236 typedef struct {
00237 P6R::P6UINT32 hours;
00238 P6R::P6UINT32 minutes;
00239 P6R::P6UINT32 seconds;
00240 P6R::P6UINT32 milliseconds;
00241 P6R::P6UINT64 microseconds;
00242 P6R::P6UINT64 fractional;
00243 } P6EXPANDEDINTERVAL;
00244
00245
00246 typedef P6R::P6VOID *P6DLLHANDLE;
00247 typedef P6R::P6VOID *P6SYMPROC;
00248
00257 typedef P6R::P6UINT8 P6P8BIT;
00258 typedef struct {P6R::P6UINT8 c[2];} P6P16BIT;
00259 typedef struct {P6R::P6UINT8 c[4];} P6P32BIT;
00260 typedef struct {P6R::P6UINT8 c[8];} P6P64BIT;
00263 #define P6_NSEC_PER_USEC 1000UL
00264
00266 #define P6_NSEC_PER_MSEC 1000000UL
00267
00269 #define P6_NSEC_PER_SEC 1000000000UL
00270
00272 #define P6_USEC_PER_MSEC 1000UL
00273
00275 #define P6_USEC_PER_SEC 1000000UL
00276
00278 #define P6_MSEC_PER_SEC 1000UL
00279
00280 #define P6_SEC_PER_HOUR 3600UL
00281
00282 #define P6_SEC_PER_DAY 86400UL
00283
00284 typedef enum {
00285 P6AF_INET = 1,
00286 P6AF_INET6= 2,
00287 P6AF_MAX
00288 } P6ADDRFAM;
00289
00294 typedef struct {
00295 union {
00296 P6UINT8 u8[4];
00297 P6UINT16 u16[2];
00298 P6UINT32 u32;
00299 } u;
00300 } IPV4ADDR;
00301
00306 typedef struct {
00307 union {
00308 P6UINT8 u8[16];
00309 P6UINT16 u16[8];
00310 P6UINT32 u32[4];
00311 } u;
00312 } IPV6ADDR;
00313
00318 typedef union {
00319 struct {
00320 P6ADDRFAM family;
00321 P6UINT16 port;
00322 IPV4ADDR ip;
00323 } inet;
00324 struct {
00325 P6ADDRFAM family;
00326 P6UINT16 port;
00327 P6UINT32 flowinfo;
00328 IPV6ADDR ip;
00329 P6UINT32 scope_id;
00330 } inet6;
00331 } P6NETADDR;
00332
00333
00337 typedef struct {
00338 P6R::P6INT32 major;
00339 P6R::P6INT32 minor;
00340 P6R::P6INT32 patch;
00341 P6R::P6INT32 build;
00342 } P6VERSION;
00343
00344 typedef P6R::P6UINT32 BUILDFLAGS;
00345 const BUILDFLAGS P6BF_NONE = 0x00000000;
00346 const BUILDFLAGS P6BF_DEBUG = 0x00000001;
00347 const BUILDFLAGS P6BF_RETAIL = 0x00000002;
00348 const BUILDFLAGS P6BF_ALPHA = 0x00000004;
00349 const BUILDFLAGS P6BF_BETA = 0x00000008;
00350 const BUILDFLAGS P6BF_RELEASE = 0x00000010;
00351 const BUILDFLAGS P6BF_INTERNAL = 0x00000020;
00352
00353 const BUILDFLAGS P6BF_BUILDMODE_MASK = 0x00000003;
00354 const BUILDFLAGS P6BF_RELEASETYPE_MASK= 0x0000003c;
00355
00356 typedef P6R::P6UINT32 VERMAGIC;
00357 const VERMAGIC P6VI_MAGIC1 = 0x18436572;
00358 const VERMAGIC P6VI_MAGIC2 = 0x011951dc;
00359
00360 typedef struct {
00361 VERMAGIC magic1;
00362 VERMAGIC magic2;
00363 P6R::P6VERSION productver;
00364 P6R::P6VERSION filever;
00365 BUILDFLAGS flags;
00366 const P6R::P6CHAR *pcszLocale;
00367 const P6R::P6WCHAR *pszwProductName;
00368 const P6R::P6WCHAR *pszwCopyright;
00369 const P6R::P6WCHAR *pszwModuleDesc;
00370 const P6R::P6WCHAR *pszwBuildNotes;
00371 } P6VERINFO;
00372
00373 typedef enum {
00374 VER_PRODUCT,
00375 VER_FILE
00376 } VERFIELDS;
00377
00378 typedef enum {
00379 VER_PRODNAME,
00380 VER_COPYRIGHT,
00381 VER_MODDESC,
00382 VER_NOTES
00383 } VERSTRFIELDS;
00385
00389 #define P6MAX_LOCALE_LEN 64
00390
00391
00396 #define P6SAFESTR_MAX_CCH 2147483647
00397
00401 typedef enum {
00402 P6AT_BOOL,
00403 P6AT_CHAR,
00404 P6AT_CHARPTR,
00405 P6AT_UCHAR,
00406 P6AT_UCHARPTR,
00407 P6AT_WCHAR,
00408 P6AT_WCHARPTR,
00409 P6AT_PTR,
00410 P6AT_INT8,
00411 P6AT_UINT8,
00412 P6AT_INT16,
00413 P6AT_UINT16,
00414 P6AT_INT32,
00415 P6AT_UINT32,
00416 P6AT_INT64,
00417 P6AT_UINT64,
00418 P6AT_SIZE,
00419 P6AT_FLOAT,
00420 P6AT_TIME,
00421 P6AT_ERR,
00422 P6AT_UUID,
00423 P6AT_NETADDR,
00424 P6AT_INTERVAL,
00425 P6AT_BSTR,
00426 P6AT_BWSTR
00427 } P6ARGTYPE;
00428
00429 typedef enum {
00430 P6AF_HEXU,
00431 P6AF_HEXL,
00432 P6AF_DEC,
00433 P6AF_OCT,
00434 P6AF_CHAR,
00435 P6AF_STR,
00436 P6AF_ISOT,
00437 P6AF_RFCT
00438 } P6ARGFMT;
00439
00440 typedef enum {
00441 P6AFL_NOFLAGS = 0x00000000,
00442 P6AFL_LEFTALIGN = 0x00000001,
00443 P6AFL_CENTER = 0x00000002,
00444 P6AFL_SIGN = 0x00000004,
00445 P6AFL_ADDPORT = 0x00000008,
00446 P6AFL_ISO860 = 0x00000010,
00447 P6AFL_RFC822 = 0x00000020,
00448 P6AFL_LOCALTIME = 0x00000040,
00449 P6AFL_TRUNCATE = 0x00000080
00450 } P6ARGFLAGS;
00451
00455 typedef struct {
00456 P6ARGTYPE m_nType;
00457 P6UINT16 m_fieldWidth;
00458 P6INT16 m_precision;
00459 P6WCHAR m_precisionPad;
00460 P6WCHAR m_fieldPad;
00461 P6ARGFMT m_nFormat;
00462 P6ARGFLAGS m_fFlags;
00463 union {
00464 P6R::P6CHAR m_char;
00465 P6R::P6BOOL m_bool;
00466 const P6R::P6CHAR *m_charptr;
00467 P6R::P6UCHAR m_uchar;
00468 const P6R::P6UCHAR *m_ucharptr;
00469 P6R::P6WCHAR m_wchar;
00470 const P6R::P6WCHAR *m_wcharptr;
00471 const P6R::P6VOID *m_voidptr;
00472 P6R::P6INT8 m_int8;
00473 P6R::P6UINT8 m_uint8;
00474 P6R::P6INT16 m_int16;
00475 P6R::P6UINT16 m_uint16;
00476 P6R::P6INT32 m_int32;
00477 P6R::P6UINT32 m_uint32;
00478 P6R::P6INT64 m_int64;
00479 P6R::P6UINT64 m_uint64;
00480 P6R::P6SIZE m_sizet;
00481 P6R::P6FLOAT m_float;
00482 P6R::P6TIME m_time;
00483 P6R::P6ERR m_err;
00484 P6R::P6INTERVAL m_tInterval;
00485 const P6R::P6UUID *m_uuid;
00486 const P6R::P6NETADDR *m_netAddr;
00487 const P6R::P6BSTR *m_bstr;
00488 const P6R::P6BWSTR *m_bwstr;
00489 };
00490 } P6ARG;
00491
00492
00493 #define P6ARGINPLACE_INIT(type,fieldWidth,precision,precisionPad,fieldPad,format,flags,data) \
00494 {(type),(fieldWidth),(precision),(precisionPad),(fieldPad),(format),(flags),{(data)}}
00495
00496 #define P6ARGINIT(arg,nType,fmt,fieldWidth,precision,flags,fieldPad,precisionPad) \
00497 (arg)->m_nType = (nType); \
00498 (arg)->m_fieldWidth = (fieldWidth); \
00499 (arg)->m_precision = (precision); \
00500 (arg)->m_precisionPad = (precisionPad); \
00501 (arg)->m_fieldPad = (fieldPad); \
00502 (arg)->m_fFlags = (flags); \
00503 (arg)->m_nFormat = (fmt); \
00504 (arg)->m_uint64 = P6I64(0)
00505
00506 #define P6ARGINITBOOLEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_BOOL,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_bool = (data)
00507 #define P6ARGINITCHAREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_CHAR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_char = (data)
00508 #define P6ARGINITCHARPTREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_CHARPTR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_charptr = (data)
00509 #define P6ARGINITUCHAREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_UCHAR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_uchar = (data)
00510 #define P6ARGINITWCHAREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_WCHAR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_wchar = (data)
00511 #define P6ARGINITWCHARPTREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_WCHARPTR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_wcharptr = (data)
00512 #define P6ARGINITPTREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_PTR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_voidptr = (data)
00513 #define P6ARGINITINT8EX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_INT8,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_int8 = (data)
00514 #define P6ARGINITUINT8EX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_UINT8,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_uint8 = (data)
00515 #define P6ARGINITINT16EX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_INT16,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_int16 = (data)
00516 #define P6ARGINITUINT16EX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_UINT16,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_uint16 = (data)
00517 #define P6ARGINITINT32EX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_INT32,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_int32 = (data)
00518 #define P6ARGINITUINT32EX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_UINT32,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_uint32 = (data)
00519 #define P6ARGINITINT64EX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_INT64,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_int64 = (data)
00520 #define P6ARGINITUINT64EX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_UINT64,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_uint64 = (data)
00521 #define P6ARGINITSIZEEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_SIZE,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_sizet = (data)
00522 #define P6ARGINITERREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_ERR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_err = (data)
00523 #define P6ARGINITUUIDEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_UUID,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_uuid = (data)
00524 #define P6ARGINITNETADDREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_NETADDR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_netAddr = (data)
00525 #define P6ARGINITINTERVALEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_INTERVAL,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_tInterval = (data)
00526 #define P6ARGINITFLOATEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_FLOAT,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_float = (data)
00527 #define P6ARGINITBSTR(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_BSTR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_bstr = (data)
00528
00529 #define P6AI_BOOL(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00530 #define P6AI_BOOL_HEXL(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00531 #define P6AI_BOOL_HEXU(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00532 #define P6AI_BOOL_DEC(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00533
00534 #define P6AI_CHAR(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00535 #define P6AI_CHAR_HEXL(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00536 #define P6AI_CHAR_HEXU(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00537 #define P6AI_CHAR_DEC(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00538
00539 #define P6AI_CHARPTR(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00540 #define P6AI_CHARPTR_HEXL(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00541 #define P6AI_CHARPTR_HEXU(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00542 #define P6AI_CHARPTR_DEC(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00543
00544 #define P6AI_UCHAR(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00545 #define P6AI_UCHAR_HEXL(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00546 #define P6AI_UCHAR_HEXU(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00547 #define P6AI_UCHAR_DEC(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00548
00549 #define P6AI_WCHAR(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00550 #define P6AI_WCHAR_HEXL(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00551 #define P6AI_WCHAR_HEXU(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00552 #define P6AI_WCHAR_DEC(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00553
00554 #define P6AI_WCHARPTR(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00555 #define P6AI_WCHARPTR_HEXL(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00556 #define P6AI_WCHARPTR_HEXU(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00557 #define P6AI_WCHARPTR_DEC(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00558
00559 #define P6AI_PTR(arg,data) P6ARGINITPTREX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00560 #define P6AI_PTR_DEC(arg,data) P6ARGINITPTREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00561
00562 #define P6AI_INT8(arg,data) P6ARGINITINT8EX(atg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00563 #define P6AI_INT8_HEXL(arg,data) P6ARGINITINT8EX(atg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00564 #define P6AI_INT8_HEXU(arg,data) P6ARGINITINT8EX(atg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00565
00566 #define P6AI_UINT8(arg,data) P6ARGINITUINT8EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00567 #define P6AI_UINT8_HEXL(arg,data) P6ARGINITUINT8EX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00568 #define P6AI_UINT8_HEXU(arg,data) P6ARGINITUINT8EX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00569
00570 #define P6AI_INT16(arg,data) P6ARGINITINT16EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00571 #define P6AI_INT16_HEXL(arg,data) P6ARGINITINT16EX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00572 #define P6AI_INT16_HEXU(arg,data) P6ARGINITINT16EX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00573
00574 #define P6AI_UINT16(arg,data) P6ARGINITUINT16EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00575 #define P6AI_UINT16_HEXL(arg,data) P6ARGINITUINT16EX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00576 #define P6AI_UINT16_HEXU(arg,data) P6ARGINITUINT16EX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00577
00578 #define P6AI_INT32(arg,data) P6ARGINITINT32EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00579 #define P6AI_INT32_HEXL(arg,data) P6ARGINITINT32EX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00580 #define P6AI_INT32_HEXU(arg,data) P6ARGINITINT32EX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00581
00582 #define P6AI_UINT32(arg,data) P6ARGINITUINT32EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00583 #define P6AI_UINT32_HEXL(arg,data) P6ARGINITUINT32EX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00584 #define P6AI_UINT32_HEXU(arg,data) P6ARGINITUINT32EX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00585
00586 #define P6AI_INT64(arg,data) P6ARGINITINT64EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00587 #define P6AI_INT64_HEXL(arg,data) P6ARGINITINT64EX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00588 #define P6AI_INT64_HEXU(arg,data) P6ARGINITINT64EX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00589
00590 #define P6AI_UINT64(arg,data) P6ARGINITUINT64EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00591 #define P6AI_UINT64_HEXL(arg,data) P6ARGINITUINT64EX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00592 #define P6AI_UINT64_HEXU(arg,data) P6ARGINITUINT64EX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00593
00594 #define P6AI_SIZE(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00595 #define P6AI_SIZE_HEXL(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00596 #define P6AI_SIZE_HEXU(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00597
00598 #define P6AI_FLOAT(arg,data) P6ARGINITFLOATEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00599
00600 #define P6AI_UUID(arg,data) P6ARGINITUUIDEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00601
00602 #define P6AI_ERR(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00603 #define P6AI_ERR_HEXL(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00604 #define P6AI_ERR_HEXU(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00605 #define P6AI_ERR_DEC(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00606
00607 #define P6AI_NETADDR(arg,data) P6ARGINITNETADDREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00608 #define P6AI_NETADDRPORT(arg,data) P6ARGINITNETADDREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ADDPORT,0,0)
00609
00610 #define P6AI_INTERVAL(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00611 #define P6AI_INTERVAL_ISO860(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ISO860,0,0)
00612 #define P6AI_INTERVAL_DEC(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00613 #define P6AI_INTERVAL_HEXL(arg,data)P6ARGINITINTERVALEX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00614 #define P6AI_INTERVAL_HEXU(arg,data)P6ARGINITINTERVALEX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00615
00616 #define P6AI_TIME(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00617 #define P6AI_TIME_ISO860(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ISO860,0,0)
00618 #define P6AI_TIME_RFC822(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_RFC822,0,0)
00619 #define P6AI_TIME_DEC(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
00620 #define P6AI_TIME_HEXL(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_HEXL,0,0,P6R::P6AFL_NOFLAGS,0,0)
00621 #define P6AI_TIME_HEXU(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_HEXU,0,0,P6R::P6AFL_NOFLAGS,0,0)
00622
00623 #define P6AI_BSTR(arg,data) P6ARGINITBSTR(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
00624
00625
00629 #ifndef interface
00630 # define interface struct
00631 #endif
00632
00638 #ifndef P6FROZEN
00639 # define P6FROZEN
00640 #endif
00641
00645 #ifndef P6API
00646 # define P6API
00647 #endif
00648
00649 #define P6IIDOF(iface) ((const P6R::IID) IF_##iface)
00650
00658 #define P6DECLARE_IID(iface) static const P6R::IID IID_##iface = IF_##iface
00659
00660
00665 #define P6DECLARE_CID(component) static const P6R::CID CID_##component = COMP_##component
00666
00671 #define P6DECLARE_CATID(category) static const P6R::CATID CATID_##category = CAT_##category
00672
00673 #ifdef _WIN32
00674 # define xNOEXPORT
00675 # define xEXPORT __declspec(dllexport)
00676 # define xIMPORT __declspec(dllimport)
00677 # define xSTDCALL __stdcall
00678 # define xCCALL __cdecl
00679 #elif defined(__GNUC__) && ((__GNUC__ ==3) && (__GNUC_MINOR__ >= 4) && (__GNUC_PATCHLEVEL__ >= 4))
00680 # define xNOEXPORT __attribute__ ((visibility ("hidden")))
00681 # define xEXPORT __attribute__ ((visibility ("default")))
00682 # define xIMPORT __attribute__ ((visibility ("default")))
00683 # ifdef P6_SOLARIS
00684 # define xSTDCALL
00685 # else
00686 # define xSTDCALL __attribute__ ((__stdcall__))
00687 # endif
00688 # define xCCALL __attribute__ ((__cdecl__))
00689 #elif defined(__GNUC__) && (__GNUC__ ==4)
00690 # define xNOEXPORT
00691 # define xEXPORT __attribute__ ((visibility ("default")))
00692 # define xIMPORT __attribute__ ((visibility ("default")))
00693 # define xSTDCALL __attribute__ ((__stdcall__))
00694 # define xCCALL __attribute__ ((__cdecl__))
00695 #elif defined(__SUNPRO_CC)
00696 # define xNOEXPORT __hidden
00697 # define xEXPORT __global
00698 # define xIMPORT
00699 # define xSTDCALL
00700 # define xCCALL
00701 #else
00702 #error "Unsupported/Unknown platform - unable to define function call and visibility defines"
00703 #endif
00704
00705 #define P6NOEXPORT xNOEXPORT
00706 #define P6EXPORT xEXPORT
00707 #define P6IMPORT xIMPORT
00708 #define P6STDCALL xSTDCALL
00709 #define P6CCALL xCCALL
00710
00711 #define P6COMMETHOD virtual P6NOEXPORT P6R::P6ERR P6STDCALL
00712 #define P6COMMETHOD_(type) virtual P6NOEXPORT type P6STDCALL
00713 #define P6COMMETHODIMPL P6NOEXPORT P6R::P6ERR
00714 #define P6COMVAMETHOD virtual P6NOEXPORT P6R::P6ERR P6CCALL
00715 #define P6COMVAMETHODIMPL P6NOEXPORT P6R::P6ERR P6CCALL
00716 #ifndef PURE
00717 # define PURE = 0
00718 #endif
00719 #define P6CLASSMETHOD P6NOEXPORT P6R::P6ERR P6STDCALL
00720 #define P6CLASSMETHODIMPL P6NOEXPORT P6R::P6ERR
00721
00722 #define IN
00723 #define OUT
00724 #define INOUT
00725 #define P6DEPRICATED
00726
00727 #define P6INVALIDTHREADID ((P6R::P6THREADID)0)
00728
00729 #define P6MIN(a,b) (((a) < (b)) ? (a) : (b))
00730 #define P6MAX(a,b) (((a) > (b)) ? (a) : (b))
00731
00732 #define P6WAITINFINITE (P6R::P6INTERVAL)-1
00733 #define P6WAITNONE (P6R::P6INTERVAL)0
00734
00735 #define P6MAXPATH 4096
00736 #define P6MAXHOSTNAME 1025
00737 #define P6MAXOSNAMESTR 128
00738 #define P6MAXVERSIONSTR 1024
00739 #define P6MAXARCHSTR 64
00740
00741 #define P6FILE __FILE__
00742 #define P6LINE __LINE__
00743 #define P6FILEANDLINE __FILE__,__LINE__
00744
00745 #ifdef __cplusplus
00746 }
00747 #endif
00748
00749 #ifdef __cplusplus
00750
00754 typedef struct P6AUTO_INT32 {
00755 P6R::P6INT32 value;
00756 P6AUTO_INT32() : value(0) {};
00757 } P6AUTO_INT32;
00758
00759 #endif
00760
00761 }
00762
00763
00764 #ifdef __cplusplus
00765 extern "C" {
00766 #endif
00767
00775 typedef P6R::P6UINT32 P6BTFLAGS;
00776 const P6BTFLAGS BT_NOFLAGS = 0x00000000;
00777 const P6BTFLAGS BT_ADDPATHS = 0x00000001;
00778 const P6BTFLAGS BT_FMTXML = 0x00000002;
00779 const P6BTFLAGS BT_FMTCSV = 0x00000004;
00780 const P6BTFLAGS BT_NODEMANGLE = 0x00000008;
00788 typedef enum {
00789 P6D_STARTUP,
00790 P6D_COMPONENT,
00791 P6D_CONF,
00792 P6D_LANG,
00793 P6D_DATA,
00794 P6D_LICENSE,
00795 P6D_LOG,
00796 P6D_MAX
00797 } P6DIRS;
00798
00799
00802 #ifdef __cplusplus
00803 }
00804 #endif
00805
00806 #endif
00807