Main Page
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
datetime.h
Go to the documentation of this file.
1
/* $Id$
2
*
3
* OpenMAMA: The open middleware agnostic messaging API
4
* Copyright (C) 2011 NYSE Technologies, Inc.
5
*
6
* This library is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* This library is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with this library; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
* 02110-1301 USA
20
*/
21
22
#ifndef MamaDateTimeH__
23
#define MamaDateTimeH__
24
25
#include <
mama/config.h
>
26
#include <
mama/status.h
>
27
#include <
mama/types.h
>
28
#include <
mama/timezone.h
>
29
#include "wombat/port.h"
30
31
#include <time.h>
32
33
34
#if defined(__cplusplus)
35
extern
"C"
{
36
#endif
37
38
39
typedef
enum
mamaDateTimePrecision_
40
{
41
MAMA_DATE_TIME_PREC_SECONDS
= 0,
42
MAMA_DATE_TIME_PREC_DECISECONDS
= 1,
43
MAMA_DATE_TIME_PREC_CENTISECONDS
= 2,
44
MAMA_DATE_TIME_PREC_MILLISECONDS
= 3,
45
MAMA_DATE_TIME_PREC_MICROSECONDS
= 6,
46
MAMA_DATE_TIME_PREC_DAYS
= 10,
47
MAMA_DATE_TIME_PREC_MINUTES
= 12,
48
MAMA_DATE_TIME_PREC_UNKNOWN
= 15
49
}
mamaDateTimePrecision
;
50
51
typedef
enum
mamaDayOfWeek_
52
{
53
Sunday
= 0,
Monday
,
Tuesday
,
Wednesday
,
Thursday
,
Friday
,
Saturday
54
}
mamaDayOfWeek
;
55
56
57
typedef
mama_u8_t
mamaDateTimeHints
;
58
#define MAMA_DATE_TIME_HAS_DATE ((mamaDateTimeHints) 0x01)
59
#define MAMA_DATE_TIME_HAS_TIME ((mamaDateTimeHints) 0x02)
60
#define MAMA_DATE_TIME_NO_TIMEZONE ((mamaDateTimeHints) 0x04)
61
62
68
MAMAExpDLL
69
extern
mama_status
70
mamaDateTime_create
(
mamaDateTime
* dateTime);
71
77
MAMAExpDLL
78
extern
mama_status
79
mamaDateTime_destroy
(
mamaDateTime
dateTime);
80
86
MAMAExpDLL
87
extern
mama_status
88
mamaDateTime_clear
(
mamaDateTime
dateTime);
89
95
MAMAExpDLL
96
extern
mama_status
97
mamaDateTime_clearDate
(
mamaDateTime
dateTime);
98
104
MAMAExpDLL
105
extern
mama_status
106
mamaDateTime_clearTime
(
mamaDateTime
dateTime);
107
108
/*
109
* Copy a date/time object. The destination object must have already
110
* been allocated using mamaDateTime_create().
111
*/
112
MAMAExpDLL
113
extern
mama_status
114
mamaDateTime_copy
(
mamaDateTime
dest,
115
const
mamaDateTime
src);
116
117
/*
118
* Check whether the date/time object has been set to anything
119
*/
120
MAMAExpDLL
121
extern
int
122
mamaDateTime_empty
(
const
mamaDateTime
dateTime);
123
124
/*
125
* Check for equality between two date/time objects.
126
*/
127
MAMAExpDLL
128
extern
int
129
mamaDateTime_equal
(
const
mamaDateTime
lhs,
130
const
mamaDateTime
rhs);
131
132
/*
133
* Compare two date/time objects. The return value is negative if lhs
134
* is earlier than rhs, positive if lhs is greater than rhs and zero
135
* if the two are equal.
136
*/
137
MAMAExpDLL
138
extern
int
139
mamaDateTime_compare
(
const
mamaDateTime
lhs,
140
const
mamaDateTime
rhs);
141
152
MAMAExpDLL
153
extern
mama_status
154
mamaDateTime_setEpochTime
(
mamaDateTime
dateTime,
155
mama_u32_t
seconds,
156
mama_u32_t
microseconds,
157
mamaDateTimePrecision
precision);
158
167
MAMAExpDLL
168
extern
mama_status
169
mamaDateTime_setEpochTimeF64
(
mamaDateTime
dateTime,
170
mama_f64_t
seconds);
171
178
MAMAExpDLL
179
extern
mama_status
180
mamaDateTime_setEpochTimeMilliseconds
(
mamaDateTime
dateTime,
181
mama_u64_t
milliseconds);
182
189
MAMAExpDLL
190
extern
mama_status
191
mamaDateTime_setEpochTimeMicroseconds
(
mamaDateTime
dateTime,
192
mama_u64_t
milliseconds);
193
206
MAMAExpDLL
207
extern
mama_status
208
mamaDateTime_setWithHints
(
mamaDateTime
dateTime,
209
mama_u32_t
seconds,
210
mama_u32_t
microseconds,
211
mamaDateTimePrecision
precision,
212
mamaDateTimeHints hints);
213
220
MAMAExpDLL
221
extern
mama_status
222
mamaDateTime_setPrecision
(
mamaDateTime
dateTime,
223
mamaDateTimePrecision
precision);
224
231
MAMAExpDLL
232
extern
mama_status
233
mamaDateTime_setToNow
(
mamaDateTime
dateTime);
234
242
MAMAExpDLL
243
extern
mama_status
244
mamaDateTime_setToMidnightToday
(
mamaDateTime
dateTime,
245
const
mamaTimeZone
tz);
246
263
MAMAExpDLL
264
extern
mama_status
265
mamaDateTime_setWithPrecisionAndTz
(
mamaDateTime
dateTime,
266
mama_u32_t
year,
267
mama_u32_t
month,
268
mama_u32_t
day,
269
mama_u32_t
hour,
270
mama_u32_t
minute,
271
mama_u32_t
second,
272
mama_u32_t
microsecond,
273
mamaDateTimePrecision
precision,
274
const
mamaTimeZone
tz);
275
286
MAMAExpDLL
287
extern
mama_status
288
mamaDateTime_setTime
(
mamaDateTime
dateTime,
289
mama_u32_t
hour,
290
mama_u32_t
minute,
291
mama_u32_t
second,
292
mama_u32_t
microsecond);
293
306
MAMAExpDLL
307
extern
mama_status
308
mamaDateTime_setTimeWithPrecisionAndTz
(
mamaDateTime
dateTime,
309
mama_u32_t
hour,
310
mama_u32_t
minute,
311
mama_u32_t
second,
312
mama_u32_t
microsecond,
313
mamaDateTimePrecision
precision,
314
const
mamaTimeZone
tz);
315
325
MAMAExpDLL
326
extern
mama_status
327
mamaDateTime_setDate
(
mamaDateTime
dateTime,
328
mama_u32_t
year,
329
mama_u32_t
month,
330
mama_u32_t
day);
331
339
MAMAExpDLL
340
extern
mama_status
341
mamaDateTime_copyTime
(
mamaDateTime
dest,
342
const
mamaDateTime
src);
343
351
MAMAExpDLL
352
extern
mama_status
353
mamaDateTime_copyDate
(
mamaDateTime
dest,
354
const
mamaDateTime
src);
355
362
MAMAExpDLL
363
extern
mama_status
364
mamaDateTime_hasTime
(
const
mamaDateTime
dateTime,
365
mama_bool_t
* result);
366
373
MAMAExpDLL
374
extern
mama_status
375
mamaDateTime_hasDate
(
const
mamaDateTime
dateTime,
376
mama_bool_t
* result);
377
384
MAMAExpDLL
385
extern
mama_status
386
mamaDateTime_addSeconds
(
mamaDateTime
dateTime,
387
mama_f64_t
seconds);
388
395
MAMAExpDLL
396
extern
mama_status
397
mamaDateTime_addWholeSeconds
(
mamaDateTime
dateTime,
398
mama_i32_t
seconds);
399
410
MAMAExpDLL
411
extern
mama_status
412
mamaDateTime_addMicroseconds
(
mamaDateTime
dateTime,
413
mama_i64_t
microseconds);
414
424
MAMAExpDLL
425
extern
mama_status
426
mamaDateTime_setFromString
(
mamaDateTime
dateTime,
427
const
char
* str);
428
441
MAMAExpDLL
442
extern
mama_status
443
mamaDateTime_setFromStringWithTz
(
mamaDateTime
dateTime,
444
const
char
* str,
445
const
mamaTimeZone
tz);
446
457
MAMAExpDLL
458
extern
mama_status
459
mamaDateTime_setFromStringBuffer
(
mamaDateTime
dateTime,
460
const
char
* str,
461
mama_size_t
strLen);
462
476
MAMAExpDLL
477
extern
mama_status
478
mamaDateTime_setFromStringBufferWithTz
(
mamaDateTime
dateTime,
479
const
char
* str,
480
mama_size_t
strLen,
481
const
mamaTimeZone
tz);
482
492
MAMAExpDLL
493
extern
mama_status
494
mamaDateTime_getEpochTime
(
const
mamaDateTime
dateTime,
495
mama_u32_t
* seconds,
496
mama_u32_t
* microseconds,
497
mamaDateTimePrecision
* precision);
498
509
MAMAExpDLL
510
extern
mama_status
511
mamaDateTime_getEpochTimeWithTz
(
const
mamaDateTime
dateTime,
512
mama_u32_t
* seconds,
513
mama_u32_t
* microseconds,
514
mamaDateTimePrecision
* precision,
515
const
mamaTimeZone
tz);
516
526
MAMAExpDLL
527
extern
mama_status
528
mamaDateTime_getEpochTimeMicroseconds
(
const
mamaDateTime
dateTime,
529
mama_u64_t
* microseconds);
530
542
MAMAExpDLL
543
extern
mama_status
544
mamaDateTime_getEpochTimeMicrosecondsWithTz
(
const
mamaDateTime
dateTime,
545
mama_u64_t
* microseconds,
546
const
mamaTimeZone
tz);
547
555
MAMAExpDLL
556
extern
mama_status
557
mamaDateTime_getEpochTimeMilliseconds
(
const
mamaDateTime
dateTime,
558
mama_u64_t
* milliseconds);
559
568
MAMAExpDLL
569
extern
mama_status
570
mamaDateTime_getEpochTimeMillisecondsWithTz
(
const
mamaDateTime
dateTime,
571
mama_u64_t
* milliseconds,
572
const
mamaTimeZone
tz);
573
581
MAMAExpDLL
582
extern
mama_status
583
mamaDateTime_getEpochTimeSeconds
(
const
mamaDateTime
dateTime,
584
mama_f64_t
* seconds);
585
599
MAMAExpDLL
600
extern
mama_status
601
mamaDateTime_getEpochTimeSecondsWithCheck
(
const
mamaDateTime
dateTime,
602
mama_f64_t
* seconds);
603
613
MAMAExpDLL
614
extern
mama_status
615
mamaDateTime_getEpochTimeSecondsWithTz
(
const
mamaDateTime
dateTime,
616
mama_f64_t
* seconds,
617
const
mamaTimeZone
tz);
618
631
MAMAExpDLL
632
extern
mama_status
633
mamaDateTime_getWithHints
(
const
mamaDateTime
dateTime,
634
mama_u32_t
* seconds,
635
mama_u32_t
* microseconds,
636
mamaDateTimePrecision
* precision,
637
mama_u8_t
* hints);
638
645
MAMAExpDLL
646
extern
mama_status
647
mamaDateTime_getStructTimeVal
(
const
mamaDateTime
dateTime,
648
struct
timeval* result);
649
657
MAMAExpDLL
658
extern
mama_status
659
mamaDateTime_getStructTimeValWithTz
(
const
mamaDateTime
dateTime,
660
struct
timeval* result,
661
const
mamaTimeZone
tz);
662
669
MAMAExpDLL
670
extern
mama_status
671
mamaDateTime_getStructTm
(
const
mamaDateTime
dateTime,
672
struct
tm* result);
673
682
MAMAExpDLL
683
extern
mama_status
684
mamaDateTime_getStructTmWithTz
(
const
mamaDateTime
dateTime,
685
struct
tm* result,
686
const
mamaTimeZone
tz);
687
700
MAMAExpDLL
701
extern
mama_status
702
mamaDateTime_getAsString
(
const
mamaDateTime
dateTime,
703
char
* str,
704
mama_size_t
maxLen);
705
716
MAMAExpDLL
717
extern
mama_status
718
mamaDateTime_getTimeAsString
(
const
mamaDateTime
dateTime,
719
char
* str,
720
mama_size_t
maxLen);
721
731
MAMAExpDLL
732
extern
mama_status
733
mamaDateTime_getDateAsString
(
const
mamaDateTime
dateTime,
734
char
* str,
735
mama_size_t
maxLen);
736
755
MAMAExpDLL
756
extern
mama_status
757
mamaDateTime_getAsFormattedString
(
const
mamaDateTime
dateTime,
758
char
* str,
759
mama_size_t
maxLen,
760
const
char
*
format
);
761
780
MAMAExpDLL
781
extern
mama_status
782
mamaDateTime_getAsFormattedStringWithTz
(
const
mamaDateTime
dateTime,
783
char
* str,
784
mama_size_t
maxLen,
785
const
char
*
format
,
786
const
mamaTimeZone
tz);
787
794
MAMAExpDLL
795
extern
mama_status
796
mamaDateTime_getYear
(
const
mamaDateTime
dateTime,
797
mama_u32_t
* result);
798
805
MAMAExpDLL
806
extern
mama_status
807
mamaDateTime_getMonth
(
const
mamaDateTime
dateTime,
808
mama_u32_t
* result);
809
816
MAMAExpDLL
817
extern
mama_status
818
mamaDateTime_getDay
(
const
mamaDateTime
dateTime,
819
mama_u32_t
* result);
820
827
MAMAExpDLL
828
extern
mama_status
829
mamaDateTime_getHour
(
const
mamaDateTime
dateTime,
830
mama_u32_t
* result);
831
838
MAMAExpDLL
839
extern
mama_status
840
mamaDateTime_getMinute
(
const
mamaDateTime
dateTime,
841
mama_u32_t
* result);
842
849
MAMAExpDLL
850
extern
mama_status
851
mamaDateTime_getSecond
(
const
mamaDateTime
dateTime,
852
mama_u32_t
* result);
853
860
MAMAExpDLL
861
extern
mama_status
862
mamaDateTime_getMicrosecond
(
const
mamaDateTime
dateTime,
863
mama_u32_t
* result);
864
871
MAMAExpDLL
872
extern
mama_status
873
mamaDateTime_getDayOfWeek
(
const
mamaDateTime
dateTime,
874
mamaDayOfWeek
* result);
875
880
MAMAExpDLL
881
extern
mama_status
882
mamaDateTime_diffSeconds
(
const
mamaDateTime
t1,
883
const
mamaDateTime
t0,
884
mama_f64_t
* result);
885
890
MAMAExpDLL
891
extern
mama_status
892
mamaDateTime_diffSecondsSameDay
(
const
mamaDateTime
t1,
893
const
mamaDateTime
t0,
894
mama_f64_t
* result);
895
899
MAMAExpDLL
900
extern
mama_status
901
mamaDateTime_diffMicroseconds
(
const
mamaDateTime
t1,
902
const
mamaDateTime
t0,
903
mama_i64_t
* result);
904
905
906
#if defined(__cplusplus)
907
}
908
#endif
909
910
#endif
© 2012 Linux Foundation