Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
p6time.h
Go to the documentation of this file.
1 
9 #ifndef P6TIME_H__
10 #define P6TIME_H__ 1
11 
12 #include "p6err.h" // Error and type definitions
13 #include "p6comdef.h" // [p6]COM definitions
14 #include "p6errorinfo.h" // Definition only, not supported by p6Loader
15 #include "p6runtimeapi.h" // Platform runtime API definitions
16 #include "p6comhlpr.h" // [p6]COM helper macros
17 
18 
19 #ifdef __cplusplus
20 namespace P6R {
21 extern "C" {
22 #endif
23 
28  #define P6RFC822DATESZ 35
29  #define P6ISO8601DATESZ 26
30 
31  #define P6INRVLINFINITE ((P6INTERVAL)-1)
32  #define P6INRVLNOTIMEOUT ((P6INTERVAL)0)
33 
40  #undef INTERFACE
41  #define INTERFACE p6ITime
43  {
55  P6DECLCOMMETHOD(initialize)(P6THIS) P6PURE;
56 
70  P6DECLCOMMETHOD(now)(P6THIS_ P6TIME *pTime) P6PURE;
71 
85  P6DECLCOMMETHOD(getTimezoneOffset)(P6THIS_ P6INT32 *pTzOffset) P6PURE;
86 
106  P6DECLCOMMETHOD(expand)(P6THIS_ const P6TIME *pTime,P6TIMEINFO *pExpandedTime,P6BOOL bLocalTime) P6PURE;
107 
123  P6DECLCOMMETHOD(collapse)(P6THIS_ P6TIMEINFO *pExpandedTime,P6TIME *pTime) P6PURE;
124 
144  P6DECLCOMMETHOD(adjust)(P6THIS_ P6TIMEINFO *pExpandedTime,P6INT32 tzOffset) P6PURE;
145 
146 
160  P6DECLCOMMETHOD(addMillseconds)(P6THIS_ P6TIME *pTime,P6INT32 nMilliseconds) P6PURE;
161 
175  P6DECLCOMMETHOD(addSeconds)(P6THIS_ P6TIME *pTime,P6INT32 nSeconds) P6PURE;
176 
190  P6DECLCOMMETHOD(addMinutes)(P6THIS_ P6TIME *pTime,P6INT32 nMinutes) P6PURE;
191 
205  P6DECLCOMMETHOD(addHours)(P6THIS_ P6TIME *pTime,P6INT32 nHours) P6PURE;
206 
207 
217  P6DECLCOMMETHOD(addP6Interval)(P6THIS_ P6TIME *pTime,const P6INTERVAL *pInterval) P6PURE;
218 
219 
231  P6DECLCOMMETHOD(diffP6Time)(P6THIS_ const P6TIME *pTime1,const P6TIME *pTime2,P6INTERVAL *pIntervalDifference) P6PURE;
232 
246  P6DECLCOMMETHOD(unixTimeToP6Time)(P6THIS_ P6INT32 unixTime,P6TIME *pTimeOut) P6PURE;
247 
261  P6DECLCOMMETHOD(p6TimeToUnixTime)(P6THIS_ const P6TIME *pTime,P6INT32 *pUnixTime) P6PURE;
262 
286  P6DECLCOMMETHOD(createRfc822DateW)(P6THIS_ const P6TIME *pTime,P6WCHAR *pBuffer,P6SIZE cBuffer,P6SIZE *pcWritten) P6PURE;
287 
312  P6DECLCOMMETHOD(createRfc822DateA)(P6THIS_ const P6TIME *pTime,P6CHAR *pBuffer,P6SIZE cBuffer,P6SIZE *pcWritten) P6PURE;
313 
340  P6DECLCOMMETHOD(parseRfc822DateW)(P6THIS_ const P6WCHAR *pwszDate,P6TIME *pOutTime,P6INT32* pDeltaFromGMT) P6PURE;
341 
370  P6DECLCOMMETHOD(parseRfc822DateA)(P6THIS_ const P6CHAR *pszDate,P6TIME *pOutTime,P6INT32* pDeltaFromGMT) P6PURE;
371 
398  P6DECLCOMMETHOD(createISO8601DateW)(P6THIS_ const P6TIME *pTime,P6INT32 deltaFromGMT,P6UINT8 degree,P6WCHAR *pBuffer,P6SIZE cBuffer,P6SIZE *pcWritten) P6PURE;
399 
426  P6DECLCOMMETHOD(createISO8601DateA)(P6THIS_ const P6TIME *pTime,P6INT32 deltaFromGMT,P6UINT8 degree,P6CHAR *pBuffer,P6SIZE cBuffer,P6SIZE *pcWritten) P6PURE;
427 
452  P6DECLCOMMETHOD(parseISO8601DateW)(P6THIS_ const P6WCHAR *pwszDate,P6TIME *pOutTime,P6INT32* pDeltaFromGMT) P6PURE;
453 
479  P6DECLCOMMETHOD(parseISO8601DateA)(P6THIS_ const P6CHAR *pszDate,P6TIME *pOutTime,P6INT32* pDeltaFromGMT) P6PURE;
480 
481 
494  P6DECLCOMMETHOD(getLocalTimezoneOffset)(P6THIS_ P6INT32 *pOffset) P6PURE;
495  };
496 
497  // {C44DC7E7-23BD-45dc-881C-5ACB28897E87}
498  #define IF_p6ITime {0xC44DC7E7,0x23BD,0x45dc,{0x88,0x1C,0x5A,0xCB,0x28,0x89,0x7E,0x87}}
499 
500  // {9A30C203-A82C-46b3-9307-8CB1F59AC0BB}
501  #define COMP_p6Time {0x9A30C203,0xA82C,0x46b3,{0x93,0x07,0x8C,0xB1,0xF5,0x9A,0xC0,0xBB}}
502 
516  #undef INTERFACE
517  #define INTERFACE p6IIntervalTime
519  {
531  P6DECLCOMMETHOD(initialize)(P6THIS) P6PURE;
532 
543  P6DECLCOMMETHOD(get)(P6THIS_ P6INTERVAL *pInterval) P6PURE;
544 
545  P6DECLCOMMETHOD(addMicroSeconds)(P6THIS_ P6INTERVAL *pInterval,P6INT64 uSeconds) P6PURE;
546  P6DECLCOMMETHOD(addMilliSeconds)(P6THIS_ P6INTERVAL *pInterval,P6INT32 mSeconds) P6PURE;
547  P6DECLCOMMETHOD(addSeconds)(P6THIS_ P6INTERVAL *pInterval,P6INT32 seconds) P6PURE;
548  P6DECLCOMMETHOD(addMinutes)(P6THIS_ P6INTERVAL *pInterval,P6INT32 minutes) P6PURE;
549  P6DECLCOMMETHOD(addHours)(P6THIS_ P6INTERVAL *pInterval,P6INT32 hours) P6PURE;
550 
563  P6DECLCOMMETHOD(secondsToInterval)(P6THIS_ P6UINT32 nSeconds,P6INTERVAL *pInterval) P6PURE;
564 
578  P6DECLCOMMETHOD(milliSecondsToInterval)(P6THIS_ P6UINT32 nMilliSeconds,P6INTERVAL *pInterval) P6PURE;
579 
593  P6DECLCOMMETHOD(microSecondsToInterval)(P6THIS_ P6UINT64 nMicroSeconds,P6INTERVAL *pInterval) P6PURE;
594 
607  P6DECLCOMMETHOD(intervalToSeconds)(P6THIS_ P6INTERVAL *pInterval,P6UINT32 *pnSeconds) P6PURE;
608 
621  P6DECLCOMMETHOD(intervalToMilliSeconds)(P6THIS_ P6INTERVAL *pInterval,P6UINT32 *pnMilliSeconds) P6PURE;
622 
635  P6DECLCOMMETHOD(intervalToMicroSeconds)(P6THIS_ P6INTERVAL *pInterval,P6UINT64 *pnMicroSeconds) P6PURE;
636 
637  P6DECLCOMMETHOD(getFractionalSeconds)(P6THIS_ const P6INTERVAL *pInterval,P6UINT64 *pnFractionalSeconds) P6PURE;
638 
653  P6DECLCOMMETHOD(expandInterval)(P6THIS_ const P6INTERVAL *pInterval,P6EXPANDEDINTERVAL *pExpanded) P6PURE;
654 
668  P6DECLCOMMETHOD(getFrequency)(P6THIS_ P6UINT64 *pFrequency) P6PURE;
669  };
670 
671  // {4AB989F9-4310-4DDB-B614-EB7F8CF5958C}
672  #define IF_p6IIntervalTime {0x4AB989F9,0x4310,0x4DDB,{0xB6,0x14,0xEB,0x7F,0x8C,0xF5,0x95,0x8C}}
673 
674  // {FAB4E452-CBD8-488E-B796-CA78AE9270E6}
675  #define COMP_p6IntervalTime {0xFAB4E452,0xCBD8,0x488E,{0xB7,0x96,0xCA,0x78,0xAE,0x92,0x70,0xE6}}
676 
677  #define GLOBAL_TIMEZONES_INTERFACE "P6R::p6Time::GlobalTimezonesConfig"
678 
679  #define P6MSECPERSEC 1000
680  #define P6USECPERSEC 1000000
681  #define P6NANOSECPERSEC 1000000000
682 
683 #ifdef __cplusplus
684 } /* extern "C" */
685 } // namespace
686 #endif
687 
688 
689 #endif
690 
size_t P6SIZE
Definition: p6types.h:90
uint64_t P6UINT64
Definition: p6types.h:79
uint32_t P6UINT32
Definition: p6types.h:77
#define P6DECLAREICOM
Definition: p6defs.h:191
#define P6PURE
Definition: p6defs.h:192
Standard error codes.
unsigned char P6BOOL
Boolean type.
Definition: p6types.h:133
Provides an interface to the system wallclock time.
Definition: p6time.h:42
unsigned char P6UINT8
Definition: p6types.h:71
P6COM runtime interfaces definitions.
wchar_t P6WCHAR
Wide character type see p6i18n.h.
Definition: p6types.h:111
A structure that is used to describe a specified time.
Definition: p6types.h:264
The base interface all [p6]COM components must derive from and implement.
Definition: p6comdef.h:97
int64_t P6INT64
Definition: p6types.h:78
P6COM base interface definitions.
p6IErrorInfo interface definition
Get and translate interval times.
Definition: p6time.h:518
#define P6DECLCOMMETHOD(method)
Definition: p6defs.h:189
P6INT64 P6TIME
The wallclock time represented as the number of microseconds since midnight January 1 1970 UTC...
Definition: p6types.h:259
#define P6THIS_
Definition: p6defs.h:193
int32_t P6INT32
Definition: p6types.h:76
P6R Component runtime helper macros, templated, etc.
#define P6THIS
Definition: p6defs.h:194
char P6CHAR
Narrow character type.
Definition: p6types.h:105
#define P6DECLAREIF_(iface, baseif)
Definition: p6defs.h:188