Jidai - compilation time stamps

OP #5633862
Lesenswert?

Grüß euch

Jidai ist eine Mini-Lib (single header) die aus den Präprozessor Defines 
DATE und TIME (inkl. double underscores) einen sinnvollen Zeitstempel 
der Compile Zeit bestehend aus Datum und Uhrzeit erzeugt.

Im wesentlichen beschränkt sich das ganze auf 2 Optionen:

1.) Die Erzeugung folgenden structs
1
struct CompilationTime {
2
  uint8_t day;
3
  uint8_t month;
4
  uint16_t year;
5
  uint8_t hour;
6
  uint8_t minute;
7
  uint8_t second;
8
};

durch die Funktion
1
constexpr CompilationTime make_compilation_time();


2.) Die Erzeugung eines unix time stamps zu einer gewissen Epoch.

Der Rückgabewert ist in diesem Fall ein Template, sollte man ein 
spezielles Format brauchen. (z.B. lediglich 4-byte signed, wie es recht 
häufig zu sehen ist)
1
template<typename T = time_t>
2
constexpr T make_unix_compilation_time(CompilationTime const epoch = default_epoch);

default_epoch entspricht der klassischen Unix Epoch 1.1.1970.
1
inline constexpr CompilationTime default_epoch{.day = 1, .month = 1, .year = 1970};

Interessante Randnotiz: Sowohl unter GCC als auch unter Clang beginnt 
die Unix Epoche erst um 1 Uhr und nicht mit Mitternacht... ;)


Header inkl. Test gibts hier:
https://gitlab.com/higaski/Jidai
OP #5637049
Lesenswert?

Hab für ein Projekt in der Arbeit einen Unix Timestamp benötigt. Zuerst 
hoffte ich drauf dass <chrono> da was passendes hat... aber da gibts 
leider nix constexpr taugliches.

Nach "constexpr compile time" oder ähnlichem googlen war dann auch nicht 
wirklich erfolgreich. :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren