107 lines
1.9 KiB
C
107 lines
1.9 KiB
C
/*
|
|
* Copyright 2009-2012, Ingo Weinhold, ingo_weinhold@gmx.de.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef TIME_UTILS_H
|
|
#define TIME_UTILS_H
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
struct decomposed_bigtime {
|
|
nanotime_t hours;
|
|
int minutes;
|
|
int seconds;
|
|
int micros;
|
|
};
|
|
|
|
|
|
struct decomposed_nanotime {
|
|
nanotime_t hours;
|
|
int minutes;
|
|
int seconds;
|
|
int nanos;
|
|
};
|
|
|
|
|
|
static void
|
|
decompose_time(bigtime_t time, decomposed_bigtime& decomposed)
|
|
{
|
|
// nanosecs
|
|
decomposed.micros = time % 1000000;
|
|
time /= 1000000;
|
|
// secs
|
|
decomposed.seconds = time % 60;
|
|
time /= 60;
|
|
// mins
|
|
decomposed.minutes = time % 60;
|
|
time /= 60;
|
|
// hours
|
|
decomposed.hours = time;
|
|
}
|
|
|
|
|
|
static void
|
|
decompose_time(nanotime_t time, decomposed_nanotime& decomposed)
|
|
{
|
|
// nanosecs
|
|
decomposed.nanos = time % 1000000000;
|
|
time /= 1000000000;
|
|
// secs
|
|
decomposed.seconds = time % 60;
|
|
time /= 60;
|
|
// mins
|
|
decomposed.minutes = time % 60;
|
|
time /= 60;
|
|
// hours
|
|
decomposed.hours = time;
|
|
}
|
|
|
|
|
|
static inline const char*
|
|
format_bigtime(bigtime_t time, char* buffer, size_t bufferSize)
|
|
{
|
|
decomposed_bigtime decomposed;
|
|
decompose_time(time, decomposed);
|
|
|
|
snprintf(buffer, bufferSize, "%02" B_PRId64 ":%02d:%02d:%06d",
|
|
decomposed.hours, decomposed.minutes, decomposed.seconds,
|
|
decomposed.micros);
|
|
return buffer;
|
|
}
|
|
|
|
|
|
static inline BString
|
|
format_bigtime(bigtime_t time)
|
|
{
|
|
char buffer[64];
|
|
format_bigtime(time, buffer, sizeof(buffer));
|
|
return BString(buffer);
|
|
}
|
|
|
|
|
|
static inline const char*
|
|
format_nanotime(nanotime_t time, char* buffer, size_t bufferSize)
|
|
{
|
|
decomposed_nanotime decomposed;
|
|
decompose_time(time, decomposed);
|
|
|
|
snprintf(buffer, bufferSize, "%02" B_PRId64 ":%02d:%02d:%09d",
|
|
decomposed.hours, decomposed.minutes, decomposed.seconds,
|
|
decomposed.nanos);
|
|
return buffer;
|
|
}
|
|
|
|
|
|
static inline BString
|
|
format_nanotime(nanotime_t time)
|
|
{
|
|
char buffer[64];
|
|
format_nanotime(time, buffer, sizeof(buffer));
|
|
return BString(buffer);
|
|
}
|
|
|
|
|
|
#endif // TIME_UTILS_H
|