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;
111 typedef P6SIZE P6THREADID;
131 typedef struct {
135  P6R::P6UINT8 clockNode[8];
138 } P6UUID;
139 #define P6UUID_STR_SIZE 39
140 
141 typedef P6UUID IID;
142 typedef P6UUID CID;
143 typedef P6UUID CATID;
154 typedef struct {
157 } P6BSTR;
158 
168 typedef struct {
171 } P6BCSTR;
172 
184 typedef struct {
187 } P6BWSTR;
188 
200 typedef struct {
203 } P6BWCSTR;
204 
215 typedef struct {
218 } P6NCSTR;
219 
220 
228 typedef P6INT64 P6TIME;
229 
233 typedef struct {
234  P6INT32 useconds;
235  P6INT32 seconds;
236  P6INT32 minutes;
237  P6INT32 hour;
238  P6INT16 month;
239  P6INT16 dayOfMonth;
240  P6INT32 year;
242  P6INT16 dayOfWeek;
243  P6INT16 dayOfYear;
244  P6INT32 tzoff;
245  P6INT32 dstoff;
246 } P6TIMEINFO;
247 
249 
254 typedef P6UINT64 P6INTERVAL;
255 
256 typedef struct {
257  P6R::P6UINT32 hours;
258  P6R::P6UINT32 minutes;
259  P6R::P6UINT32 seconds;
260  P6R::P6UINT32 milliseconds;
261  P6R::P6UINT64 microseconds;
262  P6R::P6UINT64 fractional;
263 } P6EXPANDEDINTERVAL;
264 
265 
266 typedef P6R::P6VOID *P6DLLHANDLE;
267 typedef P6R::P6VOID *P6SYMPROC;
268 
277 typedef P6R::P6UINT8 P6P8BIT;
278 typedef struct {P6R::P6UINT8 c[2];} P6P16BIT;
279 typedef struct {P6R::P6UINT8 c[4];} P6P32BIT;
280 typedef struct {P6R::P6UINT8 c[8];} P6P64BIT;
283 #define P6_NSEC_PER_USEC 1000UL
284 
286 #define P6_NSEC_PER_MSEC 1000000UL
287 
289 #define P6_NSEC_PER_SEC 1000000000UL
290 
292 #define P6_USEC_PER_MSEC 1000UL
293 
295 #define P6_USEC_PER_SEC 1000000UL
296 
298 #define P6_MSEC_PER_SEC 1000UL
299 
300 #define P6_SEC_PER_HOUR 3600UL
301 
302 #define P6_SEC_PER_DAY 86400UL
303 
304 typedef enum {
305  P6AF_INET = 1,
306  P6AF_INET6= 2,
307  P6AF_MAX
308 } P6ADDRFAM;
309 
314 typedef struct {
315  union {
316  P6UINT8 u8[4];
317  P6UINT16 u16[2];
318  P6UINT32 u32;
319  } u;
320 } IPV4ADDR;
321 
326 typedef struct {
327  union {
328  P6UINT8 u8[16];
329  P6UINT16 u16[8];
330  P6UINT32 u32[4];
331  } u;
332 } IPV6ADDR;
333 
338 typedef union {
339  struct {
340  P6ADDRFAM family;
341  P6UINT16 port;
342  IPV4ADDR ip;
343  } inet;
344  struct {
345  P6ADDRFAM family;
346  P6UINT16 port;
347  P6UINT32 flowinfo;
348  IPV6ADDR ip;
349  P6UINT32 scope_id;
350  } inet6;
351 } P6NETADDR;
352 
353 
357 typedef struct {
358  P6R::P6INT32 major;
359  P6R::P6INT32 minor;
360  P6R::P6INT32 patch;
361  P6R::P6INT32 build;
362 } P6VERSION;
363 
364 typedef P6R::P6UINT32 BUILDFLAGS;
365 const BUILDFLAGS P6BF_NONE = 0x00000000;
366 const BUILDFLAGS P6BF_DEBUG = 0x00000001;
367 const BUILDFLAGS P6BF_RETAIL = 0x00000002;
368 const BUILDFLAGS P6BF_ALPHA = 0x00000004;
369 const BUILDFLAGS P6BF_BETA = 0x00000008;
370 const BUILDFLAGS P6BF_RELEASE = 0x00000010;
371 const BUILDFLAGS P6BF_INTERNAL = 0x00000020;
372 const BUILDFLAGS P6BF_LOADER = 0x00000100;
374 const BUILDFLAGS P6BF_BUILDMODE_MASK = 0x00000003;
375 const BUILDFLAGS P6BF_RELEASETYPE_MASK= 0x0000003c;
376 
377 typedef P6R::P6UINT32 VERMAGIC;
378 const VERMAGIC P6VI_MAGIC1 = 0x18436572;
379 const VERMAGIC P6VI_MAGIC2 = 0x011951dc;
380 
381 typedef struct {
382  VERMAGIC magic1;
383  VERMAGIC magic2;
384  P6R::P6VERSION productver;
385  P6R::P6VERSION filever;
386  BUILDFLAGS flags;
387  const P6R::P6CHAR *pcszLocale;
388  const P6R::P6WCHAR *pszwProductName;
389  const P6R::P6WCHAR *pszwCopyright;
390  const P6R::P6WCHAR *pszwModuleDesc;
391  const P6R::P6WCHAR *pszwBuildNotes;
392 } P6VERINFO;
393 
394 typedef enum {
395  VER_PRODUCT,
396  VER_FILE
397 } VERFIELDS;
398 
399 typedef enum {
400  VER_PRODNAME,
401  VER_COPYRIGHT,
402  VER_MODDESC,
403  VER_NOTES
404 } VERSTRFIELDS;
406 
410 #define P6MAX_LOCALE_LEN 64
411 
412 
417 #define P6SAFESTR_MAX_CCH 2147483647
418 
438 typedef enum {
474 } P6ARGTYPE;
475 
476 typedef enum {
486 } P6ARGFMT;
487 
488 typedef P6UINT32 P6ARGFLAGS;
489 static const P6ARGFLAGS P6AFL_NOFLAGS = 0x00000000;
490 static const P6ARGFLAGS P6AFL_LEFTALIGN = 0x00000001;
491 static const P6ARGFLAGS P6AFL_CENTER = 0x00000002;
492 static const P6ARGFLAGS P6AFL_SIGN = 0x00000004;
493 static const P6ARGFLAGS P6AFL_ADDPORT = 0x00000008;
494 static const P6ARGFLAGS P6AFL_ISO860 = 0x00000010;
495 static const P6ARGFLAGS P6AFL_RFC822 = 0x00000020;
496 static const P6ARGFLAGS P6AFL_LOCALTIME = 0x00000040;
497 static const P6ARGFLAGS P6AFL_TRUNCATE = 0x00000080;
498 static const P6ARGFLAGS P6AFL_UPPERCASE = 0x00000100;
499 static const P6ARGFLAGS P6AFL_LOWERCASE = 0x00000200;
504 typedef struct {
506  P6UINT16 m_fieldWidth;
507  P6INT16 m_precision;
508  P6WCHAR m_precisionPad;
509  P6WCHAR m_fieldPad;
511  P6ARGFLAGS m_fFlags;
512  union {
539  P6R::P6INTERVAL m_tInterval;
543  const P6R::P6NETADDR *m_netAddr;
548  };
549 } P6ARG;
550 
551 
552  #define P6ARGINPLACE_INIT(type,fieldWidth,precision,precisionPad,fieldPad,format,flags,data) \
553  {(type),(fieldWidth),(precision),(precisionPad),(fieldPad),(format),(flags),{(data)}}
554 
555 #define P6ARGINIT(arg,nType,fmt,fieldWidth,precision,flags,fieldPad,precisionPad) \
556 (arg)->m_nType = (nType); \
557 (arg)->m_fieldWidth = (fieldWidth); \
558 (arg)->m_precision = (precision); \
559 (arg)->m_precisionPad = (precisionPad); \
560 (arg)->m_fieldPad = (fieldPad); \
561 (arg)->m_fFlags = (flags); \
562 (arg)->m_nFormat = (fmt); \
563 (arg)->m_uint64 = P6I64(0)
564 
565 #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)
566 #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)
567 #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)
568 #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)
569 #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)
570 #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)
571 #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)
572 #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)
573 #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)
574 #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)
575 #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)
576 #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)
577 #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)
578 #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)
579 #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)
580 #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)
581 #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)
582 #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)
583 #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)
584 #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)
585 #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)
586 #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)
587 #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)
588 #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)
589 #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)
590 #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)
591 #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)
592 #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)
593 #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)
594 #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)
595 #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)
596 #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)
597 #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)
598 #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)
599 
600 #define P6AI_BOOL(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
601 #define P6AI_BOOL_HEXL(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
602 #define P6AI_BOOL_HEXU(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
603 #define P6AI_BOOL_DEC(arg,data) P6ARGINITBOOLEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
604 
605 #define P6AI_CHAR(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_NOFLAGS,0,0)
606 #define P6AI_CHAR_HEXL(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
607 #define P6AI_CHAR_HEXU(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
608 #define P6AI_CHAR_DEC(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
609 #define P6AI_CHAR_OCT(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_OCT,0,0,P6R::P6AFL_NOFLAGS,0,0)
610 #define P6AI_CHAR_UPR(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_UPPERCASE,0,0)
611 #define P6AI_CHAR_LWR(arg,data) P6ARGINITCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_LOWERCASE,0,0)
612 
613 #define P6AI_CHARPTR(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
614 #define P6AI_CHARPTR_HEXL(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
615 #define P6AI_CHARPTR_HEXU(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
616 #define P6AI_CHARPTR_DEC(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
617 #define P6AI_CHARPTR_UPR(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
618 #define P6AI_CHARPTR_LWR(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
619 #define P6AI_CHARPTR_HEXSTR(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
620 #define P6AI_CHARPTR_HEXDUMP(arg,data) P6ARGINITCHARPTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
621 
622 #define P6AI_UCHAR(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_NOFLAGS,0,0)
623 #define P6AI_UCHAR_HEXL(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
624 #define P6AI_UCHAR_HEXU(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
625 #define P6AI_UCHAR_DEC(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
626 #define P6AI_UCHAR_OCT(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_OCT,0,0,P6R::P6AFL_NOFLAGS,0,0)
627 #define P6AI_UCHAR_UPR(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_UPPERCASE,0,0)
628 #define P6AI_UCHAR_LWR(arg,data) P6ARGINITUCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_LOWERCASE,0,0)
629 
630 #define P6AI_WCHAR(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_NOFLAGS,0,0)
631 #define P6AI_WCHAR_HEXL(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
632 #define P6AI_WCHAR_HEXU(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
633 #define P6AI_WCHAR_DEC(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
634 #define P6AI_WCHAR_UPR(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_UPPERCASE,0,0)
635 #define P6AI_WCHAR_LWR(arg,data) P6ARGINITWCHAREX(arg,data,P6R::P6AF_CHAR,0,0,P6R::P6AFL_LOWERCASE,0,0)
636 
637 #define P6AI_WCHARPTR(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
638 #define P6AI_WCHARPTR_HEXL(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
639 #define P6AI_WCHARPTR_HEXU(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
640 #define P6AI_WCHARPTR_DEC(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
641 #define P6AI_WCHARPTR_UPR(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
642 #define P6AI_WCHARPTR_LWR(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
643 #define P6AI_WCHARPTR_HEXSTR(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
644 #define P6AI_WCHARPTR_HEXDUMP(arg,data) P6ARGINITWCHARPTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
645 
646 #define P6AI_PTR(arg,data) P6ARGINITPTREX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
647 #define P6AI_PTR_DEC(arg,data) P6ARGINITPTREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
648 
649 #define P6AI_INT8(arg,data) P6ARGINITINT8EX(atg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
650 #define P6AI_INT8_HEXL(arg,data) P6ARGINITINT8EX(atg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
651 #define P6AI_INT8_HEXU(arg,data) P6ARGINITINT8EX(atg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
652 
653 #define P6AI_UINT8(arg,data) P6ARGINITUINT8EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
654 #define P6AI_UINT8_HEXL(arg,data) P6ARGINITUINT8EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
655 #define P6AI_UINT8_HEXU(arg,data) P6ARGINITUINT8EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
656 
657 #define P6AI_INT16(arg,data) P6ARGINITINT16EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
658 #define P6AI_INT16_HEXL(arg,data) P6ARGINITINT16EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
659 #define P6AI_INT16_HEXU(arg,data) P6ARGINITINT16EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
660 
661 #define P6AI_UINT16(arg,data) P6ARGINITUINT16EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
662 #define P6AI_UINT16_HEXL(arg,data) P6ARGINITUINT16EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
663 #define P6AI_UINT16_HEXU(arg,data) P6ARGINITUINT16EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
664 
665 #define P6AI_INT32(arg,data) P6ARGINITINT32EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
666 #define P6AI_INT32_HEXL(arg,data) P6ARGINITINT32EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
667 #define P6AI_INT32_HEXU(arg,data) P6ARGINITINT32EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
668 
669 #define P6AI_UINT32(arg,data) P6ARGINITUINT32EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
670 #define P6AI_UINT32_HEXL(arg,data) P6ARGINITUINT32EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
671 #define P6AI_UINT32_HEXU(arg,data) P6ARGINITUINT32EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
672 
673 #define P6AI_INT64(arg,data) P6ARGINITINT64EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
674 #define P6AI_INT64_HEXL(arg,data) P6ARGINITINT64EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
675 #define P6AI_INT64_HEXU(arg,data) P6ARGINITINT64EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
676 
677 #define P6AI_UINT64(arg,data) P6ARGINITUINT64EX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
678 #define P6AI_UINT64_HEXL(arg,data) P6ARGINITUINT64EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
679 #define P6AI_UINT64_HEXU(arg,data) P6ARGINITUINT64EX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
680 
681 #define P6AI_SHORT(arg,data) P6ARGINITSHORTEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
682 #define P6AI_SHORT_HEXL(arg,data) P6ARGINITSHORTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
683 #define P6AI_SHORT_HEXU(arg,data) P6ARGINITSHORTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
684 
685 #define P6AI_USHORT(arg,data) P6ARGINITUSHORTEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
686 #define P6AI_USHORT_HEXL(arg,data) P6ARGINITUSHORTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
687 #define P6AI_USHORT_HEXU(arg,data) P6ARGINITUSHORTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
688 
689 #define P6AI_INT(arg,data) P6ARGINITINTEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
690 #define P6AI_INT_HEXL(arg,data) P6ARGINITINTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
691 #define P6AI_INT_HEXU(arg,data) P6ARGINITINTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
692 
693 #define P6AI_UINT(arg,data) P6ARGINITUINTEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
694 #define P6AI_UINT_HEXL(arg,data) P6ARGINITUINTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
695 #define P6AI_UINT_HEXU(arg,data) P6ARGINITUINTEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
696 
697 #define P6AI_LONG(arg,data) P6ARGINITLONGEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
698 #define P6AI_LONG_HEXL(arg,data) P6ARGINITLONGEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
699 #define P6AI_LONG_HEXU(arg,data) P6ARGINITLONGEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
700 
701 #define P6AI_ULONG(arg,data) P6ARGINITULONGEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
702 #define P6AI_ULONG_HEXL(arg,data) P6ARGINITULONGEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
703 #define P6AI_ULONG_HEXU(arg,data) P6ARGINITULONGEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
704 
705 #define P6AI_SIZE(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
706 #define P6AI_SIZE_HEXL(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
707 #define P6AI_SIZE_HEXU(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
708 
709 #define P6AI_THREADID(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
710 #define P6AI_THREADID_HEXL(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
711 #define P6AI_THREADID_HEXU(arg,data) P6ARGINITSIZEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
712 
713 #define P6AI_FLOAT(arg,data) P6ARGINITFLOATEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
714 
715 #define P6AI_UUID(arg,data) P6ARGINITUUIDEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
716 #define P6AI_CATID(arg,data) P6ARGINITCATIDEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
717 
718 #define P6AI_ERR(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
719 #define P6AI_ERR_HEXL(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_HEX,0,0,P6AFL_LOWERCASE,0,0)
720 #define P6AI_ERR_HEXU(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_HEX,0,0,P6AFL_UPPERCASE,0,0)
721 #define P6AI_ERR_DEC(arg,data) P6ARGINITERREX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
722 
723 #define P6AI_NETADDR(arg,data) P6ARGINITNETADDREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
724 #define P6AI_NETADDRPORT(arg,data) P6ARGINITNETADDREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ADDPORT,0,0)
725 
726 #define P6AI_INTERVAL(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
727 #define P6AI_INTERVAL_ISO860(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ISO860,0,0)
728 #define P6AI_INTERVAL_DEC(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
729 #define P6AI_INTERVAL_HEXL(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
730 #define P6AI_INTERVAL_HEXU(arg,data) P6ARGINITINTERVALEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
731 
732 #define P6AI_TIME(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
733 #define P6AI_TIME_ISO860(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ISO860,0,0)
734 #define P6AI_TIME_ISO860_LOCAL(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_ISO860|P6AFL_LOCALTIME,0,0)
735 #define P6AI_TIME_RFC822(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_RFC822,0,0)
736 #define P6AI_TIME_DEC(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_DEC,0,0,P6R::P6AFL_NOFLAGS,0,0)
737 #define P6AI_TIME_HEXL(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_LOWERCASE,0,0)
738 #define P6AI_TIME_HEXU(arg,data) P6ARGINITTIMEEX(arg,data,P6R::P6AF_HEX,0,0,P6R::P6AFL_UPPERCASE,0,0)
739 
740 #define P6AI_BSTR(arg,data) P6ARGINITBSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
741 #define P6AI_BSTR_UPR(arg,data) P6ARGINITBSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
742 #define P6AI_BSTR_LWR(arg,data) P6ARGINITBSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
743 #define P6AI_BSTR_HEXSTR(arg,data) P6ARGINITBSTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
744 #define P6AI_BSTR_HEXDUMP(arg,data) P6ARGINITBSTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
745 
746 #define P6AI_BWSTR(arg,data) P6ARGINITBWSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
747 #define P6AI_BWSTR_UPR(arg,data) P6ARGINITBWSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
748 #define P6AI_BWSTR_LWR(arg,data) P6ARGINITBWSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
749 #define P6AI_BWSTR_HEXSTR(arg,data) P6ARGINITBWSTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
750 #define P6AI_BWSTR_HEXDUMP(arg,data) P6ARGINITBWSTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
751 
752 #define P6AI_BCSTR(arg,data) P6ARGINITBCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
753 #define P6AI_BCSTR_UPR(arg,data) P6ARGINITBCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
754 #define P6AI_BCSTR_LWR(arg,data) P6ARGINITBCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
755 #define P6AI_BCSTR_HEXSTR(arg,data) P6ARGINITBCSTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
756 #define P6AI_BCSTR_HEXDUMP(arg,data) P6ARGINITBCSTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
757 
758 #define P6AI_BWCSTR(arg,data) P6ARGINITBWCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_NOFLAGS,0,0)
759 #define P6AI_BWCSTR_UPR(arg,data) P6ARGINITBWCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_UPPERCASE,0,0)
760 #define P6AI_BWCSTR_LWR(arg,data) P6ARGINITBWCSTREX(arg,data,P6R::P6AF_STR,0,0,P6R::P6AFL_LOWERCASE,0,0)
761 #define P6AI_BWCSTR_HEXSTR(arg,data) P6ARGINITBWCSTREX(arg,data,P6R::P6AF_HEXSTR,0,0,P6R::P6AFL_LOWERCASE,0,0)
762 #define P6AI_BWCSTR_HEXDUMP(arg,data) P6ARGINITBWCSTREX(arg,data,P6R::P6AF_HEXDUMP,0,0,P6R::P6AFL_NOFLAGS,0,0)
763 
774 #define P6HEXDUMP_OFFSETSZ 11
775 #define P6HEXDUMP_ASCIISEPSZ 2
776 #define P6HEXDUMP_CHARSPERBYTE 6
781 #ifndef interface
782 # define interface struct
783 #endif
784 
790 #ifndef P6FROZEN
791 # define P6FROZEN
792 #endif
793 
797 #ifndef P6API
798 # define P6API
799 #endif
800 
801 #define P6IIDOF(iface) ((const P6R::IID) IF_##iface)
802 
810 #define P6DECLARE_IID(iface) static const P6R::IID IID_##iface = IF_##iface
811 
812 
817 #define P6DECLARE_CID(component) static const P6R::CID CID_##component = COMP_##component
818 
823 #define P6DECLARE_CATID(category) static const P6R::CATID CATID_##category = CAT_##category
824 
825 #ifdef _WIN32
826 # define xNOEXPORT
827 # define xEXPORT __declspec(dllexport)
828 # define xIMPORT __declspec(dllimport)
829 # define xSTDCALL __stdcall
830 # define xCCALL __cdecl
831 #elif defined(__GNUC__) && ((__GNUC__ ==3) && (__GNUC_MINOR__ >= 4) && (__GNUC_PATCHLEVEL__ >= 4))
832 # define xNOEXPORT __attribute__ ((visibility ("hidden")))
833 # define xEXPORT __attribute__ ((visibility ("default")))
834 # define xIMPORT __attribute__ ((visibility ("default")))
835 # ifdef P6_SOLARIS
836 # define xSTDCALL
837 # else
838 # if BITNESS == 32
839 # define xSTDCALL __attribute__ ((__stdcall__))
840 # else
841 # define xSTDCALL
842 # endif
843 # endif
844 # define xCCALL __attribute__ ((__cdecl__))
845 #elif defined(__GNUC__) && (__GNUC__ ==4)
846 # define xNOEXPORT
847 # define xEXPORT __attribute__ ((visibility ("default")))
848 # define xIMPORT __attribute__ ((visibility ("default")))
849 # if BITNESS == 32
850 # define xSTDCALL __attribute__ ((__stdcall__))
851 # define xCCALL __attribute__ ((__cdecl__))
852 # else
853 # define xSTDCALL
854 # define xCCALL
855 # endif
856 #elif defined(__SUNPRO_CC)
857 # define xNOEXPORT __hidden
858 # define xEXPORT __global
859 # define xIMPORT
860 # define xSTDCALL
861 # define xCCALL
862 #else
863 #error "Unsupported/Unknown platform - unable to define function call and visibility defines"
864 #endif
865 
866 #define P6NOEXPORT xNOEXPORT
867 #define P6EXPORT xEXPORT
868 #define P6IMPORT xIMPORT
869 #define P6STDCALL xSTDCALL
870 #define P6CCALL xCCALL
871 
872 #define P6COMMETHOD virtual P6NOEXPORT P6R::P6ERR P6STDCALL
873 #define P6COMMETHOD_(type) virtual P6NOEXPORT type P6STDCALL
874 #define P6COMMETHODIMPL P6NOEXPORT P6R::P6ERR
875 #define P6COMVAMETHOD virtual P6NOEXPORT P6R::P6ERR P6CCALL
876 #define P6COMVAMETHODIMPL P6NOEXPORT P6R::P6ERR P6CCALL
877 #ifndef PURE
878 # define PURE = 0
879 #endif
880 #define P6CLASSMETHOD P6NOEXPORT P6R::P6ERR P6STDCALL
881 #define P6CLASSMETHODIMPL P6NOEXPORT P6R::P6ERR
882 
883 #define IN
884 #define OUT
885 #define INOUT
886 #define P6DEPRICATED
887 
888 #define P6INVALIDTHREADID ((P6R::P6THREADID)0)
889 
890 #define P6MIN(a,b) (((a) < (b)) ? (a) : (b))
891 #define P6MAX(a,b) (((a) > (b)) ? (a) : (b))
892 
893 #define P6WAITINFINITE (P6R::P6INTERVAL)-1
894 #define P6WAITNONE (P6R::P6INTERVAL)0
895 
896 #define P6MAXPATH 4096
897 #define P6MAXHOSTNAME 1025
898 #define P6MAXOSNAMESTR 128
899 #define P6MAXVERSIONSTR 1024
900 #define P6MAXARCHSTR 64
901 #define P6MAXIPADDR 46
903 #define P6FILE __FILE__
904 #define P6LINE __LINE__
905 #define P6FILEANDLINE __FILE__,__LINE__
906 
907 #ifdef __cplusplus
908 }
909 #endif
910 
911 #ifdef __cplusplus
912 
916 typedef struct P6AUTO_INT32 {
918  P6AUTO_INT32() : value(0) {};
919 } P6AUTO_INT32;
920 
921 #endif
922 
923 } // namespace
924 
925 
926 #ifdef __cplusplus
927 extern "C" {
928 #endif
929 
938 const P6BTFLAGS BT_NOFLAGS = 0x00000000;
939 const P6BTFLAGS BT_ADDPATHS = 0x00000001;
940 const P6BTFLAGS BT_FMTXML = 0x00000002;
941 const P6BTFLAGS BT_FMTCSV = 0x00000004;
942 const P6BTFLAGS BT_NODEMANGLE = 0x00000008;
950 typedef enum {
959 } P6DIRS;
960 
961 
964 #ifdef __cplusplus
965 }
966 #endif
967 
968 #endif
969 
Wide const binary string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:473
const P6BTFLAGS BT_NODEMANGLE
Don&#39;t demangle symbols.
Definition: p6types.h:942
Wide binary string.
Definition: p6types.h:184
size_t P6SIZE
Definition: p6types.h:62
std::ptrdiff_t P6PTRDIFF
Definition: p6types.h:64
P6R::P6INT16 m_int16
Definition: p6types.h:523
P6LONGLONG P6INT64
Definition: p6types.h:50
Format as hex encoded string, converts character values to hex.
Definition: p6types.h:482
Format as a character.
Definition: p6types.h:480
P6INT32 useconds
[0 - 999999] Microseconds past seconds
Definition: p6types.h:234
struct P6R::P6AUTO_INT32 P6AUTO_INT32
Auto initializing INT32.
Const Binary string.
Definition: p6types.h:168
P6INT32 dstoff
Daylight saving time offset in seconds.
Definition: p6types.h:245
Format as a text string (prints a formatted UUID string for UUIDs)
Definition: p6types.h:481
unsigned char P6UCHAR
Definition: p6types.h:74
A convience structure to pass around a narrow string along with its length.
Definition: p6types.h:215
P6R::P6INT8 m_int8
Definition: p6types.h:521
Format as hexadecimal number.
Definition: p6types.h:477
P6INT16 m_precision
Contols precision of numeric output types.
Definition: p6types.h:507
unsigned unsized integer
Definition: p6types.h:458
P6WCHAR m_fieldPad
The character to use to pad out to the width for wide output.
Definition: p6types.h:509
Format as a decimal number.
Definition: p6types.h:478
const P6R::CATID * m_catid
Definition: p6types.h:542
unsigned int P6UINT32
Definition: p6types.h:40
P6UUID IID
An interface ID.
Definition: p6types.h:141
P6R::P6UINT8 m_uint8
Definition: p6types.h:522
P6R::P6INT64 m_int64
Definition: p6types.h:527
P6R::P6UINT32 P6BTFLAGS
Runtime API Types.
Definition: p6types.h:937
Unsigned 64-bit integer.
Definition: p6types.h:454
short P6SHORT
Definition: p6types.h:56
const P6R::P6BSTR * m_bstr
Definition: p6types.h:544
P6R::P6THREADID m_hThread
Definition: p6types.h:540
P6R::P6SHORT m_short
Definition: p6types.h:529
P6R::P6UCHAR m_uchar
Definition: p6types.h:516
I18n files directory (string tables, langtag mappings etc)
Definition: p6types.h:954
int P6INT
Definition: p6types.h:58
Pointer to a P6NETADDR will print dotted quad by default.
Definition: p6types.h:467
Unsigned 32-bit integer.
Definition: p6types.h:452
bool P6BOOL
Boolean type.
Definition: p6types.h:101
P6INT16 month
[0 - 11] where 0 == January
Definition: p6types.h:238
P6R::P6BOOL m_bool
Definition: p6types.h:514
const P6R::P6UCHAR * pString
Pointer to const data.
Definition: p6types.h:169
P6WCHAR * P6COMSTR
Standard COM length encoded string.
Definition: p6types.h:79
Format a P6THREADID.
Definition: p6types.h:469
Pointer to a wide character string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags...
Definition: p6types.h:445
Wide Const binary string.
Definition: p6types.h:200
const P6R::P6UUID * m_uuid
Definition: p6types.h:541
The application launch directory.
Definition: p6types.h:951
P6R::P6INTERVAL m_tInterval
Definition: p6types.h:539
P6ARGFLAGS m_fFlags
See P6R::P6ARGFLAGS.
Definition: p6types.h:511
The config directory.
Definition: p6types.h:953
Format a P6TIME as an RFC 822 date, only valid for an P6ARGTYPE of P6AT_TIME.
Definition: p6types.h:484
char P6INT8
Definition: p6types.h:31
P6INT32 year
Absolute year.
Definition: p6types.h:240
const P6R::P6UCHAR * m_ucharptr
Definition: p6types.h:517
P6INT32 seconds
[0 - 61] where the values 60 and 61 are for accommodating up to two leap seconds. ...
Definition: p6types.h:235
Signed 16-bit integer.
Definition: p6types.h:449
Pointer to a CATID.
Definition: p6types.h:466
P6UINT32 P6ARGFLAGS
Definition: p6types.h:488
unsigned long P6ULONG
Definition: p6types.h:61
P6UUID CATID
A category ID.
Definition: p6types.h:143
P6SIZE P6ATOM
Atom type see P6R::p6IAtom in p6com.h.
Definition: p6types.h:110
unsigned long integer
Definition: p6types.h:460
signed short integer
Definition: p6types.h:455
unsigned __int64 P6ULONGLONG
Definition: p6platform.h:19
const P6CHAR * P6CSTR
Definition: p6types.h:73
P6R::P6WCHAR m_wchar
Definition: p6types.h:518
P6INT32 tzoff
Offset from GMT in seconds.
Definition: p6types.h:244
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:463
Unsigned 8-bit integer.
Definition: p6types.h:448
unsigned char P6UINT8
Definition: p6types.h:30
P6R::P6SIZE length
Length of data in bytes.
Definition: p6types.h:156
Format a P6TIME as an ISO 860 date, only valid for an P6ARGTYPE of P6AT_TIME.
Definition: p6types.h:483
The directory containing log files.
Definition: p6types.h:957
P6R::P6SIZE length
Length of data in wide characters.
Definition: p6types.h:186
unsigned short P6USHORT
Definition: p6types.h:57
Format as a octal number.
Definition: p6types.h:479
Automatically generated file.
P6R::P6UINT16 timeHighVer
(2*octet) time_high_and_version
Definition: p6types.h:134
const P6BTFLAGS BT_FMTXML
Output format XML (no xml tag)
Definition: p6types.h:940
P6ARGTYPE m_nType
Type of argument (see P6R::P6ARGTYPE)
Definition: p6types.h:505
P6R::P6WCHAR * pString
Pointer to wide string data.
Definition: p6types.h:185
Single byte unsigned character, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags...
Definition: p6types.h:442
P6R::P6ULONG m_ulong
Definition: p6types.h:534
unsigned short int P6UINT16
Definition: p6types.h:34
Single wide character, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:444
P6R::P6UINT32 m_uint32
Definition: p6types.h:526
signed long integer
Definition: p6types.h:459
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:472
const P6R::P6VOID * m_voidptr
Definition: p6types.h:520
unsigned short integer
Definition: p6types.h:456
P6BOOL renders as &#39;true&#39; or &#39;false&#39;.
Definition: p6types.h:439
P6R::P6INT32 value
Definition: p6types.h:917
const P6BTFLAGS BT_NOFLAGS
Definition: p6types.h:938
This defines where the runtime stores license files.
Definition: p6types.h:956
A structure that is used to describe a specified time.
Definition: p6types.h:233
Signed 32-bit integer.
Definition: p6types.h:451
int P6INT32
Definition: p6types.h:41
P6R::P6SIZE m_sizet
Definition: p6types.h:535
P6R::P6SIZE length
Length of data in characters.
Definition: p6types.h:217
P6SIZET integer.
Definition: p6types.h:461
Signed 64-bit integer.
Definition: p6types.h:453
const P6R::P6NETADDR * m_netAddr
Definition: p6types.h:543
const P6R::P6BWSTR * m_bwstr
Definition: p6types.h:545
Signed 8-bit integer.
Definition: p6types.h:447
const P6R::P6BCSTR * m_bcstr
Definition: p6types.h:546
const P6WCHAR * P6CWSTR
Definition: p6types.h:78
Narrow binary string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:470
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:468
Single byte signed character, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:440
Binary string.
Definition: p6types.h:154
const P6R::P6WCHAR * pString
Pointer to wide const string data.
Definition: p6types.h:201
long P6LONG
Definition: p6types.h:60
P6FLOAT.
Definition: p6types.h:462
Pointer to an unsigned char string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags...
Definition: p6types.h:443
P6UUID CID
A component ID.
Definition: p6types.h:142
P6INT32 minutes
[0 - 59]
Definition: p6types.h:236
Format data as a multi-line hex dump, 16 bytes/line with leading offset, hexdata, followed by ascii...
Definition: p6types.h:485
P6R::P6TIME m_time
Definition: p6types.h:537
P6UINT8 P6BYTE
Definition: p6types.h:32
P6ULONGLONG P6UINT64
Definition: p6types.h:49
A universally unique indentifier (UUID).
Definition: p6types.h:131
Auto initializing INT32.
Definition: p6types.h:916
P6R::P6CHAR m_char
Definition: p6types.h:513
Converts the specified P6ERR to it&#39;s string representation.
Definition: p6types.h:464
const P6BTFLAGS BT_FMTCSV
Output format comma separated.
Definition: p6types.h:941
P6WCHAR * P6WSTR
Definition: p6types.h:77
P6INT16 dayOfMonth
[1 - 31]
Definition: p6types.h:239
P6R::P6ERR m_err
Definition: p6types.h:538
P6R::P6UINT16 timeMid
(2*octet) time_mid
Definition: p6types.h:133
P6UINT32 P6ERR
COM err return type see P6ERR.h.
Definition: p6types.h:109
signed unsized integer
Definition: p6types.h:457
short int P6INT16
Definition: p6types.h:35
const P6R::P6WCHAR * m_wcharptr
Definition: p6types.h:519
P6R::P6SIZE length
Length of data in bytes.
Definition: p6types.h:170
P6R::P6UINT32 timeLow
(4*octet) time_low
Definition: p6types.h:132
P6WCHAR m_precisionPad
The character to use to pad out to the width for wide output.
Definition: p6types.h:508
The component directory.
Definition: p6types.h:952
Generic VOID Pointer.
Definition: p6types.h:446
P6CHAR * P6STR
Definition: p6types.h:72
P6R::P6INT m_int
Definition: p6types.h:531
P6INT16 dayOfYear
[0 - 365] days since January 1
Definition: p6types.h:243
P6R::P6UINT m_uint
Definition: p6types.h:532
P6INT32 hour
[0 - 23] 24 hour clock
Definition: p6types.h:237
Pointer to a signed char string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags...
Definition: p6types.h:441
P6R::P6SIZE length
Length of data in wide characters.
Definition: p6types.h:202
This defines which directory data should be written into.
Definition: p6types.h:955
P6R::P6FLOAT m_float
Definition: p6types.h:536
__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:228
const P6R::P6BWCSTR * m_bwcstr
Definition: p6types.h:547
const P6R::P6CHAR * pString
Pointer to narrow const string data.
Definition: p6types.h:216
Unsigned 16-bit integer.
Definition: p6types.h:450
P6R::P6UINT64 m_uint64
Definition: p6types.h:528
Wide binary string, transform based on P6AFL_UPPERCASE/P6AFL_LOWERCASE flags.
Definition: p6types.h:471
P6SIZE P6THREADID
Defines a thread identifier.
Definition: p6types.h:111
P6UINT16 m_fieldWidth
Controls the minimum width of the regedered argument.
Definition: p6types.h:506
const P6R::P6CHAR * m_charptr
Definition: p6types.h:515
double P6FLOAT
Definition: p6types.h:63
P6ARGFMT
Definition: p6types.h:476
const P6BTFLAGS BT_ADDPATHS
Include module path.
Definition: p6types.h:939
P6ARGFMT m_nFormat
Specified how the argument should be renedered (see P6R::P6ARGFMT)
Definition: p6types.h:510
P6R::P6LONG m_long
Definition: p6types.h:533
Pointer to a UUID.
Definition: p6types.h:465
void P6VOID
Definition: p6types.h:75
P6ARGTYPE
P6ARG Argument types.
Definition: p6types.h:438
P6R::P6UCHAR * pString
Pointer to data.
Definition: p6types.h:155
P6R::P6USHORT m_ushort
Definition: p6types.h:530
P6R::P6UINT16 m_uint16
Definition: p6types.h:524
Argument definition.
Definition: p6types.h:504
P6DIRS
This enumeration defines the directories which can be retrieved using the p6GetDirectory() API...
Definition: p6types.h:950
P6INT16 dayOfWeek
[0 - 6] where 0 == Sunday
Definition: p6types.h:242
char P6CHAR
Narrow character type.
Definition: p6types.h:71
P6R::P6INT32 m_int32
Definition: p6types.h:525