Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
p6types.h
Go to the documentation of this file.
1 
10 #ifndef P6TYPES_H__
11 #define P6TYPES_H__ 1
12 
13 #include <stddef.h>
14 #include <cstddef> // for std::ptrdiff_t
15 #include <wchar.h> // wchar_t
16 #include <new> // std::nothrow
17 #include "p6platform.h"
18 
19 namespace P6R {
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
29 
30 typedef unsigned char P6UINT8;
31 typedef char P6INT8;
32 typedef P6UINT8 P6BYTE;
33 #if P6SIZEOF_SHORT == 2
34 typedef unsigned short int P6UINT16;
35 typedef short int P6INT16;
36 #else
37 #error Unable to find an appropriate type for P6UINT16 and P6INT16
38 #endif
39 #if P6SIZEOF_INT == 4
40 typedef unsigned int P6UINT32;
41 typedef int P6INT32;
42 #elif P6SIZEOF_LONG == 4
43 typedef unsigned long P6UINT32;
44 typedef long P6INT32;
45 #else
46 #error Unable to find an appropriate type for P6UINT32 and P6INT32
47 #endif
48 #if P6SIZEOF_LONGLONG == 8
51 #else
52 #error Unable to find an appropriate type for P6UINT64 and P6INT64
53 #endif
54 
55 
56 typedef short P6SHORT;
57 typedef unsigned short P6USHORT;
58 typedef int P6INT;
59 typedef unsigned int P6UINT;
60 typedef long P6LONG;
61 typedef unsigned long P6ULONG;
62 typedef size_t P6SIZE;
63 typedef double P6FLOAT;
64 typedef std::ptrdiff_t P6PTRDIFF;
65 
71 typedef char P6CHAR;
72 typedef P6CHAR* P6STR;
73 typedef const P6CHAR* P6CSTR;
74 typedef unsigned char P6UCHAR;
75 typedef void P6VOID;
76 typedef wchar_t P6WCHAR;
77 typedef P6WCHAR* P6WSTR;
78 typedef const P6WCHAR* P6CWSTR;
79 typedef P6WCHAR* P6COMSTR;
80 #define P6TEXT(t) L ## t
81 #define P6CTEXT(t) (const P6R::P6WCHAR*) L ## t
82 #define P6CHR(c) L ## c
83 #define P6CCHR(c) (const P6R::P6WCHAR) L ## c
84 #define P6CHARCNT(x) (sizeof((x))/sizeof((x)[0]))
85 #define P6CNTOF P6CHARCNT
86 
87 #if defined(__GNUC__) || defined(__SUNPRO_CC)
88 #define P6I64(v) v##LL
89 #define P6U64(v) v##ULL
90 #else
91 #define P6I64(v) v##i64
92 #define P6U64(v) v##ui64
93 #endif
94 
95 
101 typedef bool P6BOOL;
102 #define P6TRUE 1
103 #define P6FALSE 0
104 
109 typedef P6UINT32 P6ERR;
110 typedef P6SIZE P6ATOM;
130 typedef struct {
134  P6R::P6UINT8 clockNode[8];
137 } P6UUID;
138 #define P6UUID_STR_SIZE 39
139 
140 typedef P6UUID IID;
141 typedef P6UUID CID;
142 typedef P6UUID CATID;
153 typedef struct {
156 } P6BSTR;
157 
167 typedef struct {
170 } P6BCSTR;
171 
183 typedef struct {
186 } P6BWSTR;
187 
199 typedef struct {
202 } P6BWCSTR;
203 
214 typedef struct {
217 } P6NCSTR;
218 
219 
227 typedef P6INT64 P6TIME;
228 
232 typedef struct {
233  P6INT32 useconds;
234  P6INT32 seconds;
235  P6INT32 minutes;
236  P6INT32 hour;
237  P6INT16 month;
238  P6INT16 dayOfMonth;
239  P6INT32 year;
241  P6INT16 dayOfWeek;
242  P6INT16 dayOfYear;
243  P6INT32 tzoff;
244  P6INT32 dstoff;
245 } P6TIMEINFO;
246 
248 
253 typedef P6UINT64 P6INTERVAL;
254 
255 typedef struct {
256  P6R::P6UINT32 hours;
257  P6R::P6UINT32 minutes;
258  P6R::P6UINT32 seconds;
259  P6R::P6UINT32 milliseconds;
260  P6R::P6UINT64 microseconds;
261  P6R::P6UINT64 fractional;
262 } P6EXPANDEDINTERVAL;
263 
264 
265 typedef P6R::P6VOID *P6DLLHANDLE;
266 typedef P6R::P6VOID *P6SYMPROC;
267 
276 typedef P6R::P6UINT8 P6P8BIT;
277 typedef struct {P6R::P6UINT8 c[2];} P6P16BIT;
278 typedef struct {P6R::P6UINT8 c[4];} P6P32BIT;
279 typedef struct {P6R::P6UINT8 c[8];} P6P64BIT;
282 #define P6_NSEC_PER_USEC 1000UL
283 
285 #define P6_NSEC_PER_MSEC 1000000UL
286 
288 #define P6_NSEC_PER_SEC 1000000000UL
289 
291 #define P6_USEC_PER_MSEC 1000UL
292 
294 #define P6_USEC_PER_SEC 1000000UL
295 
297 #define P6_MSEC_PER_SEC 1000UL
298 
299 #define P6_SEC_PER_HOUR 3600UL
300 
301 #define P6_SEC_PER_DAY 86400UL
302 
303 
304 typedef P6SIZE P6THREADID;
305 #define P6INVALID_THREADID 0
306 
312 #define P6MAXTHREADNAME 24
313 
319 #define P6MAXTHREADSTATENAME 24
320 
325 typedef enum {
326  P6TP_LOWEST,
327  P6TP_NORMAL,
328  P6TP_ELAVATED,
329  P6TP_HIGHEST,
330  P6TP_MAX
331 } P6THREADPRIORITY;
332 
339 typedef struct {
340  P6R::P6THREADID hThread;
341  P6R::P6TIME tStart;
342  P6R::P6WCHAR szwName[P6MAXTHREADNAME];
343  P6R::P6WCHAR szwState[P6MAXTHREADSTATENAME];
344  P6R::P6TIME tLastState;
345  P6R::P6THREADPRIORITY priority;
346 } P6THREADINFO;
347 
348 
349 typedef enum {
350  P6AF_INET = 1,
351  P6AF_INET6= 2,
352  P6AF_MAX
353 } P6ADDRFAM;
354 
359 typedef struct {
360  union {
361  P6UINT8 u8[4];
362  P6UINT16 u16[2];
363  P6UINT32 u32;
364  } u;
365 } IPV4ADDR;
366 
371 typedef struct {
372  union {
373  P6UINT8 u8[16];
374  P6UINT16 u16[8];
375  P6UINT32 u32[4];
376  } u;
377 } IPV6ADDR;
378 
383 typedef union {
384  struct {
385  P6ADDRFAM family;
386  P6UINT16 port;
387  IPV4ADDR ip;
388  } inet;
389  struct {
390  P6ADDRFAM family;
391  P6UINT16 port;
392  P6UINT32 flowinfo;
393  IPV6ADDR ip;
394  P6UINT32 scope_id;
395  } inet6;
396 } P6NETADDR;
397 
398 
402 typedef struct {
403  P6R::P6INT32 major;
404  P6R::P6INT32 minor;
405  P6R::P6INT32 patch;
406  P6R::P6INT32 build;
407 } P6VERSION;
408 
409 typedef P6R::P6UINT32 BUILDFLAGS;
410 const BUILDFLAGS P6BF_NONE = 0x00000000;
411 const BUILDFLAGS P6BF_DEBUG = 0x00000001;
412 const BUILDFLAGS P6BF_RETAIL = 0x00000002;
413 const BUILDFLAGS P6BF_ALPHA = 0x00000004;
414 const BUILDFLAGS P6BF_BETA = 0x00000008;
415 const BUILDFLAGS P6BF_RELEASE = 0x00000010;
416 const BUILDFLAGS P6BF_INTERNAL = 0x00000020;
417 const BUILDFLAGS P6BF_LOADER = 0x00000100;
419 const BUILDFLAGS P6BF_BUILDMODE_MASK = 0x00000003;
420 const BUILDFLAGS P6BF_RELEASETYPE_MASK= 0x0000003c;
421 
422 typedef P6R::P6UINT32 VERMAGIC;
423 const VERMAGIC P6VI_MAGIC1 = 0x18436572;
424 const VERMAGIC P6VI_MAGIC2 = 0x011951dc;
425 
426 typedef struct {
427  VERMAGIC magic1;
428  VERMAGIC magic2;
429  P6R::P6VERSION productver;
430  P6R::P6VERSION filever;
431  BUILDFLAGS flags;
432  const P6R::P6CHAR *pcszLocale;
433  const P6R::P6WCHAR *pszwProductName;
434  const P6R::P6WCHAR *pszwCopyright;
435  const P6R::P6WCHAR *pszwModuleDesc;
436  const P6R::P6WCHAR *pszwBuildNotes;
437 } P6VERINFO;
438 
439 typedef enum {
440  VER_PRODUCT,
441  VER_FILE
442 } VERFIELDS;
443 
444 typedef enum {
445  VER_PRODNAME,
446  VER_COPYRIGHT,
447  VER_MODDESC,
448  VER_NOTES
449 } VERSTRFIELDS;
451 
455 #define P6MAX_LOCALE_LEN 64
456 
457 
462 #define P6SAFESTR_MAX_CCH 2147483647
463 
483 typedef enum {
519 } P6ARGTYPE;
520 
521 typedef enum {
531 } P6ARGFMT;
532 
533 typedef P6UINT32 P6ARGFLAGS;
534 static const P6ARGFLAGS P6AFL_NOFLAGS = 0x00000000;
535 static const P6ARGFLAGS P6AFL_LEFTALIGN = 0x00000001;
536 static const P6ARGFLAGS P6AFL_CENTER = 0x00000002;
537 static const P6ARGFLAGS P6AFL_SIGN = 0x00000004;
538 static const P6ARGFLAGS P6AFL_ADDPORT = 0x00000008;
539 static const P6ARGFLAGS P6AFL_ISO860 = 0x00000010;
540 static const P6ARGFLAGS P6AFL_RFC822 = 0x00000020;
541 static const P6ARGFLAGS P6AFL_LOCALTIME = 0x00000040;
542 static const P6ARGFLAGS P6AFL_TRUNCATE = 0x00000080;
543 static const P6ARGFLAGS P6AFL_UPPERCASE = 0x00000100;
544 static const P6ARGFLAGS P6AFL_LOWERCASE = 0x00000200;
549 typedef struct {
551  P6UINT16 m_fieldWidth;
552  P6INT16 m_precision;
553  P6WCHAR m_precisionPad;
554  P6WCHAR m_fieldPad;
556  P6ARGFLAGS m_fFlags;
557  union {
584  P6R::P6INTERVAL m_tInterval;
585  P6R::P6THREADID m_hThread;
588  const P6R::P6NETADDR *m_netAddr;
593  };
594 } P6ARG;
595 
596 
597  #define P6ARGINPLACE_INIT(type,fieldWidth,precision,precisionPad,fieldPad,format,flags,data) \
598  {(type),(fieldWidth),(precision),(precisionPad),(fieldPad),(format),(flags),{(data)}}
599 
600 #define P6ARGINIT(arg,nType,fmt,fieldWidth,precision,flags,fieldPad,precisionPad) \
601 (arg)->m_nType = (nType); \
602 (arg)->m_fieldWidth = (fieldWidth); \
603 (arg)->m_precision = (precision); \
604 (arg)->m_precisionPad = (precisionPad); \
605 (arg)->m_fieldPad = (fieldPad); \
606 (arg)->m_fFlags = (flags); \
607 (arg)->m_nFormat = (fmt); \
608 (arg)->m_uint64 = P6I64(0)
609 
610 #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)
611 #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)
612 #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)
613 #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)
614 #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)
615 #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)
616 #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)
617 #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)
618 #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)
619 #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)
620 #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)
621 #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)
622 #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)
623 #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)
624 #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)
625 #define P6ARGINITSHORTEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_SHORT,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_short = (data)
626 #define P6ARGINITUSHORTEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_USHORT,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_ushort = (data)
627 #define P6ARGINITINTEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_INT,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_int = (data)
628 #define P6ARGINITUINTEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_UINT,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_uint = (data)
629 #define P6ARGINITLONGEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_LONG,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_long = (data)
630 #define P6ARGINITULONGEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_ULONG,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_ulong = (data)
631 #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)
632 #define P6ARGINITTHREADIDEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_THREADID,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_hThread = (data)
633 #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)
634 #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)
635 #define P6ARGINITCATIDEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_CATID,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_catid = (data)
636 #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)
637 #define P6ARGINITTIMEEX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_TIME,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_time = (data)
638 #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)
639 #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)
640 #define P6ARGINITBSTREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_BSTR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_bstr = (data)
641 #define P6ARGINITBWSTREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_BWSTR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_bwstr = (data)
642 #define P6ARGINITBCSTREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_BCSTR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_bcstr = (data)
643 #define P6ARGINITBWCSTREX(arg,data,fmt,precision,fieldWidth,flags,ppad,fpad) P6ARGINIT((arg),P6R::P6AT_BWCSTR,(fmt),(fieldWidth),(precision),(flags),(fpad),(ppad)); (arg)->m_bwcstr = (data)
644 
645 #define P6AI_BOOL(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
646 #define P6AI_BOOL_HEXL(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
647 #define P6AI_BOOL_HEXU(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
648 #define P6AI_BOOL_DEC(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
649 
650 #define P6AI_CHAR(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_NOFLAGS,0,0)
651 #define P6AI_CHAR_HEXL(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
652 #define P6AI_CHAR_HEXU(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
653 #define P6AI_CHAR_DEC(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
654 #define P6AI_CHAR_OCT(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_OCT,0,0,P6R::P6AFL_NOFLAGS,0,0)
655 #define P6AI_CHAR_UPR(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_UPPERCASE,0,0)
656 #define P6AI_CHAR_LWR(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_LOWERCASE,0,0)
657 
658 #define P6AI_CHARPTR(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
659 #define P6AI_CHARPTR_HEXL(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
660 #define P6AI_CHARPTR_HEXU(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
661 #define P6AI_CHARPTR_DEC(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
662 #define P6AI_CHARPTR_UPR(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
663 #define P6AI_CHARPTR_LWR(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
664 #define P6AI_CHARPTR_HEXSTR(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
665 #define P6AI_CHARPTR_HEXDUMP(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
666 
667 #define P6AI_UCHAR(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_NOFLAGS,0,0)
668 #define P6AI_UCHAR_HEXL(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
669 #define P6AI_UCHAR_HEXU(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
670 #define P6AI_UCHAR_DEC(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
671 #define P6AI_UCHAR_OCT(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_OCT,0,0,P6R::P6AFL_NOFLAGS,0,0)
672 #define P6AI_UCHAR_UPR(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_UPPERCASE,0,0)
673 #define P6AI_UCHAR_LWR(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_LOWERCASE,0,0)
674 
675 #define P6AI_WCHAR(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_NOFLAGS,0,0)
676 #define P6AI_WCHAR_HEXL(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
677 #define P6AI_WCHAR_HEXU(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
678 #define P6AI_WCHAR_DEC(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
679 #define P6AI_WCHAR_UPR(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_UPPERCASE,0,0)
680 #define P6AI_WCHAR_LWR(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_LOWERCASE,0,0)
681 
682 #define P6AI_WCHARPTR(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
683 #define P6AI_WCHARPTR_HEXL(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
684 #define P6AI_WCHARPTR_HEXU(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
685 #define P6AI_WCHARPTR_DEC(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
686 #define P6AI_WCHARPTR_UPR(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
687 #define P6AI_WCHARPTR_LWR(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
688 #define P6AI_WCHARPTR_HEXSTR(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
689 #define P6AI_WCHARPTR_HEXDUMP(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
690 
691 #define P6AI_PTR(arg,data) P6ARGINITPTREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
692 #define P6AI_PTR_DEC(arg,data) P6ARGINITPTREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
693 
694 #define P6AI_INT8(arg,data) P6ARGINITINT8EX(atg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
695 #define P6AI_INT8_HEXL(arg,data) P6ARGINITINT8EX(atg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
696 #define P6AI_INT8_HEXU(arg,data) P6ARGINITINT8EX(atg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
697 
698 #define P6AI_UINT8(arg,data) P6ARGINITUINT8EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
699 #define P6AI_UINT8_HEXL(arg,data) P6ARGINITUINT8EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
700 #define P6AI_UINT8_HEXU(arg,data) P6ARGINITUINT8EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
701 
702 #define P6AI_INT16(arg,data) P6ARGINITINT16EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
703 #define P6AI_INT16_HEXL(arg,data) P6ARGINITINT16EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
704 #define P6AI_INT16_HEXU(arg,data) P6ARGINITINT16EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
705 
706 #define P6AI_UINT16(arg,data) P6ARGINITUINT16EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
707 #define P6AI_UINT16_HEXL(arg,data) P6ARGINITUINT16EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
708 #define P6AI_UINT16_HEXU(arg,data) P6ARGINITUINT16EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
709 
710 #define P6AI_INT32(arg,data) P6ARGINITINT32EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
711 #define P6AI_INT32_HEXL(arg,data) P6ARGINITINT32EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
712 #define P6AI_INT32_HEXU(arg,data) P6ARGINITINT32EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
713 
714 #define P6AI_UINT32(arg,data) P6ARGINITUINT32EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
715 #define P6AI_UINT32_HEXL(arg,data) P6ARGINITUINT32EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
716 #define P6AI_UINT32_HEXU(arg,data) P6ARGINITUINT32EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
717 
718 #define P6AI_INT64(arg,data) P6ARGINITINT64EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
719 #define P6AI_INT64_HEXL(arg,data) P6ARGINITINT64EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
720 #define P6AI_INT64_HEXU(arg,data) P6ARGINITINT64EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
721 
722 #define P6AI_UINT64(arg,data) P6ARGINITUINT64EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
723 #define P6AI_UINT64_HEXL(arg,data) P6ARGINITUINT64EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
724 #define P6AI_UINT64_HEXU(arg,data) P6ARGINITUINT64EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
725 
726 #define P6AI_SHORT(arg,data) P6ARGINITSHORTEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
727 #define P6AI_SHORT_HEXL(arg,data) P6ARGINITSHORTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
728 #define P6AI_SHORT_HEXU(arg,data) P6ARGINITSHORTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
729 
730 #define P6AI_USHORT(arg,data) P6ARGINITUSHORTEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
731 #define P6AI_USHORT_HEXL(arg,data) P6ARGINITUSHORTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
732 #define P6AI_USHORT_HEXU(arg,data) P6ARGINITUSHORTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
733 
734 #define P6AI_INT(arg,data) P6ARGINITINTEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
735 #define P6AI_INT_HEXL(arg,data) P6ARGINITINTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
736 #define P6AI_INT_HEXU(arg,data) P6ARGINITINTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
737 
738 #define P6AI_UINT(arg,data) P6ARGINITUINTEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
739 #define P6AI_UINT_HEXL(arg,data) P6ARGINITUINTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
740 #define P6AI_UINT_HEXU(arg,data) P6ARGINITUINTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
741 
742 #define P6AI_LONG(arg,data) P6ARGINITLONGEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
743 #define P6AI_LONG_HEXL(arg,data) P6ARGINITLONGEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
744 #define P6AI_LONG_HEXU(arg,data) P6ARGINITLONGEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
745 
746 #define P6AI_ULONG(arg,data) P6ARGINITULONGEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
747 #define P6AI_ULONG_HEXL(arg,data) P6ARGINITULONGEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
748 #define P6AI_ULONG_HEXU(arg,data) P6ARGINITULONGEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
749 
750 #define P6AI_SIZE(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
751 #define P6AI_SIZE_HEXL(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
752 #define P6AI_SIZE_HEXU(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
753 
754 #define P6AI_THREADID(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
755 #define P6AI_THREADID_HEXL(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
756 #define P6AI_THREADID_HEXU(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
757 
758 #define P6AI_FLOAT(arg,data) P6ARGINITFLOATEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
759 
760 #define P6AI_UUID(arg,data) P6ARGINITUUIDEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
761 #define P6AI_CATID(arg,data) P6ARGINITCATIDEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
762 
763 #define P6AI_ERR(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
764 #define P6AI_ERR_HEXL(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_HEX,0,0,P6AFL_LOWERCASE,0,0)
765 #define P6AI_ERR_HEXU(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_HEX,0,0,P6AFL_UPPERCASE,0,0)
766 #define P6AI_ERR_DEC(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
767 
768 #define P6AI_NETADDR(arg,data) P6ARGINITNETADDREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
769 #define P6AI_NETADDRPORT(arg,data) P6ARGINITNETADDREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ADDPORT,0,0)
770 
771 #define P6AI_INTERVAL(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
772 #define P6AI_INTERVAL_ISO860(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ISO860,0,0)
773 #define P6AI_INTERVAL_DEC(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
774 #define P6AI_INTERVAL_HEXL(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
775 #define P6AI_INTERVAL_HEXU(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
776 
777 #define P6AI_TIME(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
778 #define P6AI_TIME_ISO860(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ISO860,0,0)
779 #define P6AI_TIME_ISO860_LOCAL(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ISO860|P6AFL_LOCALTIME,0,0)
780 #define P6AI_TIME_RFC822(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_RFC822,0,0)
781 #define P6AI_TIME_DEC(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
782 #define P6AI_TIME_HEXL(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
783 #define P6AI_TIME_HEXU(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
784 
785 #define P6AI_BSTR(arg,data) P6ARGINITBSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
786 #define P6AI_BSTR_UPR(arg,data) P6ARGINITBSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
787 #define P6AI_BSTR_LWR(arg,data) P6ARGINITBSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
788 #define P6AI_BSTR_HEXSTR(arg,data) P6ARGINITBSTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
789 #define P6AI_BSTR_HEXDUMP(arg,data) P6ARGINITBSTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
790 
791 #define P6AI_BWSTR(arg,data) P6ARGINITBWSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
792 #define P6AI_BWSTR_UPR(arg,data) P6ARGINITBWSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
793 #define P6AI_BWSTR_LWR(arg,data) P6ARGINITBWSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
794 #define P6AI_BWSTR_HEXSTR(arg,data) P6ARGINITBWSTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
795 #define P6AI_BWSTR_HEXDUMP(arg,data) P6ARGINITBWSTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
796 
797 #define P6AI_BCSTR(arg,data) P6ARGINITBCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
798 #define P6AI_BCSTR_UPR(arg,data) P6ARGINITBCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
799 #define P6AI_BCSTR_LWR(arg,data) P6ARGINITBCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
800 #define P6AI_BCSTR_HEXSTR(arg,data) P6ARGINITBCSTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
801 #define P6AI_BCSTR_HEXDUMP(arg,data) P6ARGINITBCSTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
802 
803 #define P6AI_BWCSTR(arg,data) P6ARGINITBWCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
804 #define P6AI_BWCSTR_UPR(arg,data) P6ARGINITBWCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
805 #define P6AI_BWCSTR_LWR(arg,data) P6ARGINITBWCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
806 #define P6AI_BWCSTR_HEXSTR(arg,data) P6ARGINITBWCSTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
807 #define P6AI_BWCSTR_HEXDUMP(arg,data) P6ARGINITBWCSTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
808 
819 #define P6HEXDUMP_OFFSETSZ 11
820 #define P6HEXDUMP_ASCIISEPSZ 2
821 #define P6HEXDUMP_CHARSPERBYTE 6
826 #ifndef interface
827 # define interface struct
828 #endif
829 
835 #ifndef P6FROZEN
836 # define P6FROZEN
837 #endif
838 
842 #ifndef P6API
843 # define P6API
844 #endif
845 
846 #define P6IIDOF(iface) ((const P6R::IID) IF_##iface)
847 
855 #define P6DECLARE_IID(iface) static const P6R::IID IID_##iface = IF_##iface
856 
857 
862 #define P6DECLARE_CID(component) static const P6R::CID CID_##component = COMP_##component
863 
868 #define P6DECLARE_CATID(category) static const P6R::CATID CATID_##category = CAT_##category
869 
870 #ifdef _WIN32
871 # define xNOEXPORT
872 # define xEXPORT __declspec(dllexport)
873 # define xIMPORT __declspec(dllimport)
874 # define xSTDCALL __stdcall
875 # define xCCALL __cdecl
876 #elif defined(__GNUC__) && ((__GNUC__ ==3) && (__GNUC_MINOR__ >= 4) && (__GNUC_PATCHLEVEL__ >= 4))
877 # define xNOEXPORT __attribute__ ((visibility ("hidden")))
878 # define xEXPORT __attribute__ ((visibility ("default")))
879 # define xIMPORT __attribute__ ((visibility ("default")))
880 # ifdef P6_SOLARIS
881 # define xSTDCALL
882 # else
883 # if BITNESS == 32
884 # define xSTDCALL __attribute__ ((__stdcall__))
885 # else
886 # define xSTDCALL
887 # endif
888 # endif
889 # define xCCALL __attribute__ ((__cdecl__))
890 #elif defined(__GNUC__) && (__GNUC__ ==4)
891 # define xNOEXPORT __attribute__ ((visibility ("hidden")))
892 # define xEXPORT __attribute__ ((visibility ("default")))
893 # define xIMPORT __attribute__ ((visibility ("default")))
894 # if BITNESS == 32
895 # define xSTDCALL __attribute__ ((__stdcall__))
896 # define xCCALL __attribute__ ((__cdecl__))
897 # else
898 # define xSTDCALL
899 # define xCCALL
900 # endif
901 #elif defined(__SUNPRO_CC)
902 # define xNOEXPORT __hidden
903 # define xEXPORT __global
904 # define xIMPORT
905 # define xSTDCALL
906 # define xCCALL
907 #else
908 #error "Unsupported/Unknown platform - unable to define function call and visibility defines"
909 #endif
910 
911 #define P6NOEXPORT xNOEXPORT
912 #define P6EXPORT xEXPORT
913 #define P6IMPORT xIMPORT
914 #define P6STDCALL xSTDCALL
915 #define P6CCALL xCCALL
916 
917 #define P6COMMETHOD virtual P6NOEXPORT P6R::P6ERR P6STDCALL
918 #define P6COMMETHOD_(type) virtual P6NOEXPORT type P6STDCALL
919 #define P6COMMETHODIMPL P6NOEXPORT P6R::P6ERR
920 #define P6COMVAMETHOD virtual P6NOEXPORT P6R::P6ERR P6CCALL
921 #define P6COMVAMETHODIMPL P6NOEXPORT P6R::P6ERR P6CCALL
922 #ifndef PURE
923 # define PURE = 0
924 #endif
925 #define P6CLASSMETHOD P6NOEXPORT P6R::P6ERR P6STDCALL
926 #define P6CLASSMETHODIMPL P6NOEXPORT P6R::P6ERR
927 
928 #define IN
929 #define OUT
930 #define INOUT
931 #define P6DEPRICATED
932 
933 #define P6INVALIDTHREADID ((P6R::P6THREADID)0)
934 
935 #define P6MIN(a,b) (((a) < (b)) ? (a) : (b))
936 #define P6MAX(a,b) (((a) > (b)) ? (a) : (b))
937 
938 #define P6WAITINFINITE (P6R::P6INTERVAL)-1
939 #define P6WAITNONE (P6R::P6INTERVAL)0
940 
941 #define P6MAXPATH 4096
942 #define P6MAXHOSTNAME 1025
943 #define P6MAXOSNAMESTR 128
944 #define P6MAXVERSIONSTR 1024
945 #define P6MAXARCHSTR 64
946 #define P6MAXIPADDR 46
948 #define P6FILE __FILE__
949 #define P6LINE __LINE__
950 #define P6FILEANDLINE __FILE__,__LINE__
951 
952 #ifdef __cplusplus
953 }
954 #endif
955 
956 #ifdef __cplusplus
957 
961 typedef struct P6AUTO_INT32 {
963  P6AUTO_INT32() : value(0) {};
964 } P6AUTO_INT32;
965 
966 #endif
967 
968 } // namespace
969 
970 
971 #ifdef __cplusplus
972 extern "C" {
973 #endif
974 
983 const P6BTFLAGS BT_NOFLAGS = 0x00000000;
984 const P6BTFLAGS BT_ADDPATHS = 0x00000001;
985 const P6BTFLAGS BT_FMTXML = 0x00000002;
986 const P6BTFLAGS BT_FMTCSV = 0x00000004;
987 const P6BTFLAGS BT_NODEMANGLE = 0x00000008;
995 typedef enum {
1005 } P6DIRS;
1006 
1007 
1010 #ifdef __cplusplus
1011 }
1012 #endif
1013 
1014 #endif
1015 
Wide const binary string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:518
const P6BTFLAGS BT_NODEMANGLE
Don&#39;t demangle symbols.
Definition: p6types.h:987
Wide binary string.
Definition: p6types.h:183
size_t P6SIZE
Definition: p6types.h:62
std::ptrdiff_t P6PTRDIFF
Definition: p6types.h:64
P6R::P6INT16 m_int16
Definition: p6types.h:568
P6LONGLONG P6INT64
Definition: p6types.h:50
Format as hex encoded string, converts character values to hex.
Definition: p6types.h:527
Format as a character.
Definition: p6types.h:525
P6INT32 useconds
[0 - 999999] Microseconds past seconds
Definition: p6types.h:233
struct P6R::P6AUTO_INT32 P6AUTO_INT32
Auto initializing INT32.
Const Binary string.
Definition: p6types.h:167
P6INT32 dstoff
Daylight saving time offset in seconds.
Definition: p6types.h:244
Format as a text string (prints a formatted UUID string for UUIDs)
Definition: p6types.h:526
unsigned char P6UCHAR
Definition: p6types.h:74
A convience structure to pass around a narrow string along with its length.
Definition: p6types.h:214
P6R::P6INT8 m_int8
Definition: p6types.h:566
Format as hexadecimal number.
Definition: p6types.h:522
P6INT16 m_precision
Contols precision of numeric output types.
Definition: p6types.h:552
unsigned unsized integer
Definition: p6types.h:503
P6WCHAR m_fieldPad
The character to use to pad out to the width for wide output.
Definition: p6types.h:554
Format as a decimal number.
Definition: p6types.h:523
const P6R::CATID * m_catid
Definition: p6types.h:587
unsigned int P6UINT32
Definition: p6types.h:40
P6UUID IID
An interface ID.
Definition: p6types.h:140
P6R::P6UINT8 m_uint8
Definition: p6types.h:567
P6R::P6INT64 m_int64
Definition: p6types.h:572
P6R::P6UINT32 P6BTFLAGS
Runtime API Types.
Definition: p6types.h:982
Unsigned 64-bit integer.
Definition: p6types.h:499
short P6SHORT
Definition: p6types.h:56
const P6R::P6BSTR * m_bstr
Definition: p6types.h:589
P6R::P6THREADID m_hThread
Definition: p6types.h:585
P6R::P6SHORT m_short
Definition: p6types.h:574
P6R::P6UCHAR m_uchar
Definition: p6types.h:561
I18n files directory (string tables, langtag mappings etc)
Definition: p6types.h:1000
int P6INT
Definition: p6types.h:58
Pointer to a P6NETADDR will print dotted quad by default.
Definition: p6types.h:512
Unsigned 32-bit integer.
Definition: p6types.h:497
bool P6BOOL
Boolean type.
Definition: p6types.h:101
P6INT16 month
[0 - 11] where 0 == January
Definition: p6types.h:237
P6R::P6BOOL m_bool
Definition: p6types.h:559
const P6R::P6UCHAR * pString
Pointer to const data.
Definition: p6types.h:168
P6WCHAR * P6COMSTR
Standard COM length encoded string.
Definition: p6types.h:79
Format a P6THREADID.
Definition: p6types.h:514
Pointer to a wide character string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags...
Definition: p6types.h:490
Wide Const binary string.
Definition: p6types.h:199
const P6R::P6UUID * m_uuid
Definition: p6types.h:586
The application launch directory.
Definition: p6types.h:996
P6R::P6INTERVAL m_tInterval
Definition: p6types.h:584
P6ARGFLAGS m_fFlags
See P6R::P6ARGFLAGS.
Definition: p6types.h:556
The config directory.
Definition: p6types.h:999
Format a P6TIME as an RFC 822 date, only valid for an P6ARGTYPE of P6AT_TIME.
Definition: p6types.h:529
char P6INT8
Definition: p6types.h:31
P6INT32 year
Absolute year.
Definition: p6types.h:239
const P6R::P6UCHAR * m_ucharptr
Definition: p6types.h:562
P6INT32 seconds
[0 - 61] where the values 60 and 61 are for accommodating up to two leap seconds. ...
Definition: p6types.h:234
Signed 16-bit integer.
Definition: p6types.h:494
Pointer to a CATID.
Definition: p6types.h:511
P6UINT32 P6ARGFLAGS
Definition: p6types.h:533
unsigned long P6ULONG
Definition: p6types.h:61
P6UUID CATID
A category ID.
Definition: p6types.h:142
P6SIZE P6ATOM
Atom type see P6R::p6IAtom in p6com.h.
Definition: p6types.h:110
unsigned long integer
Definition: p6types.h:505
signed short integer
Definition: p6types.h:500
unsigned __int64 P6ULONGLONG
Definition: p6platform.h:19
const P6CHAR * P6CSTR
Definition: p6types.h:73
P6R::P6WCHAR m_wchar
Definition: p6types.h:563
P6INT32 tzoff
Offset from GMT in seconds.
Definition: p6types.h:243
Format a P6TIME as mm/dd/yyyy hh:mm:ss.000000000 or an ISO860 or RFC822 date if the P6AFL_ISO860 or P...
Definition: p6types.h:508
Unsigned 8-bit integer.
Definition: p6types.h:493
unsigned char P6UINT8
Definition: p6types.h:30
P6R::P6SIZE length
Length of data in bytes.
Definition: p6types.h:155
Format a P6TIME as an ISO 860 date, only valid for an P6ARGTYPE of P6AT_TIME.
Definition: p6types.h:528
The directory containing log files.
Definition: p6types.h:1003
P6R::P6SIZE length
Length of data in wide characters.
Definition: p6types.h:185
unsigned short P6USHORT
Definition: p6types.h:57
Format as a octal number.
Definition: p6types.h:524
Automatically generated file.
P6R::P6UINT16 timeHighVer
(2*octet) time_high_and_version
Definition: p6types.h:133
const P6BTFLAGS BT_FMTXML
Output format XML (no xml tag)
Definition: p6types.h:985
P6ARGTYPE m_nType
Type of argument (see P6R::P6ARGTYPE)
Definition: p6types.h:550
P6R::P6WCHAR * pString
Pointer to wide string data.
Definition: p6types.h:184
Single byte unsigned character, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags...
Definition: p6types.h:487
P6R::P6ULONG m_ulong
Definition: p6types.h:579
unsigned short int P6UINT16
Definition: p6types.h:34
Single wide character, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:489
P6R::P6UINT32 m_uint32
Definition: p6types.h:571
signed long integer
Definition: p6types.h:504
wchar_t P6WCHAR
Wide character type see p6i18n.h.
Definition: p6types.h:76
Narrow const binary string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:517
const P6R::P6VOID * m_voidptr
Definition: p6types.h:565
unsigned short integer
Definition: p6types.h:501
P6BOOL renders as &#39;true&#39; or &#39;false&#39;.
Definition: p6types.h:484
P6R::P6INT32 value
Definition: p6types.h:962
const P6BTFLAGS BT_NOFLAGS
Definition: p6types.h:983
This defines where the runtime stores license files.
Definition: p6types.h:1002
A structure that is used to describe a specified time.
Definition: p6types.h:232
Signed 32-bit integer.
Definition: p6types.h:496
int P6INT32
Definition: p6types.h:41
P6R::P6SIZE m_sizet
Definition: p6types.h:580
P6R::P6SIZE length
Length of data in characters.
Definition: p6types.h:216
P6SIZET integer.
Definition: p6types.h:506
Signed 64-bit integer.
Definition: p6types.h:498
const P6R::P6NETADDR * m_netAddr
Definition: p6types.h:588
const P6R::P6BWSTR * m_bwstr
Definition: p6types.h:590
Signed 8-bit integer.
Definition: p6types.h:492
const P6R::P6BCSTR * m_bcstr
Definition: p6types.h:591
const P6WCHAR * P6CWSTR
Definition: p6types.h:78
Narrow binary string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:515
unsigned int P6UINT
Definition: p6types.h:59
Format a P6INTERVAL as 00:00:00.000000000 or an ISO860 duration if the P6AFL_ISO860 flag is specified...
Definition: p6types.h:513
Single byte signed character, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:485
Binary string.
Definition: p6types.h:153
const P6R::P6WCHAR * pString
Pointer to wide const string data.
Definition: p6types.h:200
long P6LONG
Definition: p6types.h:60
P6FLOAT.
Definition: p6types.h:507
Pointer to an unsigned char string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags...
Definition: p6types.h:488
P6UUID CID
A component ID.
Definition: p6types.h:141
P6INT32 minutes
[0 - 59]
Definition: p6types.h:235
Format data as a multi-line hex dump, 16 bytes/line with leading offset, hexdata, followed by ascii...
Definition: p6types.h:530
P6R::P6TIME m_time
Definition: p6types.h:582
P6UINT8 P6BYTE
Definition: p6types.h:32
P6ULONGLONG P6UINT64
Definition: p6types.h:49
A universally unique indentifier (UUID).
Definition: p6types.h:130
Auto initializing INT32.
Definition: p6types.h:961
P6R::P6CHAR m_char
Definition: p6types.h:558
Converts the specified P6ERR to it&#39;s string representation.
Definition: p6types.h:509
const P6BTFLAGS BT_FMTCSV
Output format comma separated.
Definition: p6types.h:986
P6WCHAR * P6WSTR
Definition: p6types.h:77
P6INT16 dayOfMonth
[1 - 31]
Definition: p6types.h:238
P6R::P6ERR m_err
Definition: p6types.h:583
P6R::P6UINT16 timeMid
(2*octet) time_mid
Definition: p6types.h:132
P6UINT32 P6ERR
COM err return type see P6ERR.h.
Definition: p6types.h:109
signed unsized integer
Definition: p6types.h:502
short int P6INT16
Definition: p6types.h:35
const P6R::P6WCHAR * m_wcharptr
Definition: p6types.h:564
P6R::P6SIZE length
Length of data in bytes.
Definition: p6types.h:169
P6R::P6UINT32 timeLow
(4*octet) time_low
Definition: p6types.h:131
P6WCHAR m_precisionPad
The character to use to pad out to the width for wide output.
Definition: p6types.h:553
The component directory.
Definition: p6types.h:998
Generic VOID Pointer.
Definition: p6types.h:491
P6CHAR * P6STR
Definition: p6types.h:72
P6R::P6INT m_int
Definition: p6types.h:576
P6INT16 dayOfYear
[0 - 365] days since January 1
Definition: p6types.h:242
P6R::P6UINT m_uint
Definition: p6types.h:577
P6INT32 hour
[0 - 23] 24 hour clock
Definition: p6types.h:236
Pointer to a signed char string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags...
Definition: p6types.h:486
P6R::P6SIZE length
Length of data in wide characters.
Definition: p6types.h:201
This defines which directory data should be written into.
Definition: p6types.h:1001
P6R::P6FLOAT m_float
Definition: p6types.h:581
__int64 P6LONGLONG
Definition: p6platform.h:18
P6INT64 P6TIME
The wallclock time represented as the number of microseconds since midnight January 1 1970 UTC...
Definition: p6types.h:227
const P6R::P6BWCSTR * m_bwcstr
Definition: p6types.h:592
const P6R::P6CHAR * pString
Pointer to narrow const string data.
Definition: p6types.h:215
Unsigned 16-bit integer.
Definition: p6types.h:495
P6R::P6UINT64 m_uint64
Definition: p6types.h:573
Wide binary string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:516
P6UINT16 m_fieldWidth
Controls the minimum width of the regedered argument.
Definition: p6types.h:551
const P6R::P6CHAR * m_charptr
Definition: p6types.h:560
double P6FLOAT
Definition: p6types.h:63
P6ARGFMT
Definition: p6types.h:521
const P6BTFLAGS BT_ADDPATHS
Include module path.
Definition: p6types.h:984
P6ARGFMT m_nFormat
Specified how the argument should be renedered (see P6R::P6ARGFMT)
Definition: p6types.h:555
P6R::P6LONG m_long
Definition: p6types.h:578
The directory in which the executable that started the process is located.
Definition: p6types.h:997
Pointer to a UUID.
Definition: p6types.h:510
void P6VOID
Definition: p6types.h:75
P6ARGTYPE
P6ARG Argument types.
Definition: p6types.h:483
P6R::P6UCHAR * pString
Pointer to data.
Definition: p6types.h:154
P6R::P6USHORT m_ushort
Definition: p6types.h:575
P6R::P6UINT16 m_uint16
Definition: p6types.h:569
Argument definition.
Definition: p6types.h:549
P6DIRS
This enumeration defines the directories which can be retrieved using the p6GetDirectory() API...
Definition: p6types.h:995
P6INT16 dayOfWeek
[0 - 6] where 0 == Sunday
Definition: p6types.h:241
char P6CHAR
Narrow character type.
Definition: p6types.h:71
P6R::P6INT32 m_int32
Definition: p6types.h:570