summaryrefslogtreecommitdiff
path: root/girepository/cmph/cmph_time.h
diff options
context:
space:
mode:
Diffstat (limited to 'girepository/cmph/cmph_time.h')
-rw-r--r--girepository/cmph/cmph_time.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/girepository/cmph/cmph_time.h b/girepository/cmph/cmph_time.h
new file mode 100644
index 00000000..d8018090
--- /dev/null
+++ b/girepository/cmph/cmph_time.h
@@ -0,0 +1,62 @@
+#ifdef ELAPSED_TIME_IN_SECONDS
+#undef ELAPSED_TIME_IN_SECONDS
+#endif
+
+#ifdef ELAPSED_TIME_IN_uSECONDS
+#undef ELAPSED_TIME_IN_uSECONDS
+#endif
+
+#ifdef WIN32
+// include headers to use gettimeofday
+#else
+ #ifdef __GNUC__
+ #include <sys/time.h>
+ #include <sys/resource.h>
+ #endif
+#endif
+
+#ifdef __GNUC__
+ #ifndef __CMPH_TIME_H__
+ #define __CMPH_TIME_H__
+ static inline void elapsed_time_in_seconds(double * elapsed_time)
+ {
+ struct timeval e_time;
+ if (gettimeofday(&e_time, NULL) < 0) {
+ return;
+ }
+ *elapsed_time = (double)e_time.tv_sec + ((double)e_time.tv_usec/1000000.0);
+ }
+ static inline void dummy_elapsed_time_in_seconds()
+ {
+ }
+ static inline void elapsed_time_in_useconds(cmph_uint64 * elapsed_time)
+ {
+ struct timeval e_time;
+ if (gettimeofday(&e_time, NULL) < 0) {
+ return;
+ }
+ *elapsed_time = (cmph_uint64)(e_time.tv_sec*1000000 + e_time.tv_usec);
+ }
+ static inline void dummy_elapsed_time_in_useconds()
+ {
+ }
+ #endif
+#endif
+
+#ifdef CMPH_TIMING
+ #ifdef __GNUC__
+ #define ELAPSED_TIME_IN_SECONDS elapsed_time_in_seconds
+ #define ELAPSED_TIME_IN_uSECONDS elapsed_time_in_useconds
+ #else
+ #define ELAPSED_TIME_IN_SECONDS dummy_elapsed_time_in_seconds
+ #define ELAPSED_TIME_IN_uSECONDS dummy_elapsed_time_in_useconds
+ #endif
+#else
+ #ifdef __GNUC__
+ #define ELAPSED_TIME_IN_SECONDS
+ #define ELAPSED_TIME_IN_uSECONDS
+ #else
+ #define ELAPSED_TIME_IN_SECONDS dummy_elapsed_time_in_seconds
+ #define ELAPSED_TIME_IN_uSECONDS dummy_elapsed_time_in_useconds
+ #endif
+#endif