1 //metadoc Duration copyright Steve Dekorte 2002
2 //metadoc Duration license BSD revised
3 
4 #ifndef DURATION_DEFINED
5 #define DURATION_DEFINED 1
6 
7 #include "Common.h"
8 #include "UArray.h"
9 #include "PortableGettimeofday.h"
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 typedef struct
16 {
17 	double seconds;
18 } Duration;
19 
20 BASEKIT_API Duration *Duration_new(void);
21 BASEKIT_API Duration *Duration_newWithSeconds_(double s);
22 BASEKIT_API Duration *Duration_clone(const Duration *self);
23 BASEKIT_API void Duration_copy_(Duration *self, const Duration *other);
24 
25 BASEKIT_API void Duration_free(Duration *self);
26 BASEKIT_API int Duration_compare(const Duration *self, const Duration *other);
27 
28 // components
29 
30 BASEKIT_API int Duration_years(const Duration *self);
31 BASEKIT_API void Duration_setYears_(Duration *self, double y);
32 
33 BASEKIT_API int Duration_days(const Duration *self);
34 BASEKIT_API void Duration_setDays_(Duration *self, double d);
35 
36 BASEKIT_API int Duration_hours(const Duration *self);
37 BASEKIT_API void Duration_setHours_(Duration *self, double m);
38 
39 BASEKIT_API int Duration_minutes(const Duration *self);
40 BASEKIT_API void Duration_setMinutes_(Duration *self, double m);
41 
42 BASEKIT_API double Duration_seconds(const Duration *self);
43 BASEKIT_API void Duration_setSeconds_(Duration *self, double s);
44 
45 // total seconds
46 
47 BASEKIT_API double Duration_asSeconds(const Duration *self);
48 BASEKIT_API void Duration_fromSeconds_(Duration *self, double s);
49 
50 // strings
51 
52 BASEKIT_API UArray *Duration_asUArrayWithFormat_(const Duration *self, const char *format);
53 BASEKIT_API void Duration_print(const Duration *self);
54 
55 // math
56 
57 BASEKIT_API void Duration_add_(Duration *self, const Duration *other);
58 BASEKIT_API void Duration_subtract_(Duration *self, const Duration *other);
59 
60 #ifdef __cplusplus
61 }
62 #endif
63 #endif
64