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