libebml_ng
datetime.h
Go to the documentation of this file.
1 #ifndef EBML_NG_DATETIME_H
2 #define EBML_NG_DATETIME_H
3 
4 #include <chrono>
5 
6 #include "../struct.h"
7 #include "ll.h"
8 
9 namespace ebml {
10  typedef std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> timepoint_t;
11  extern const timepoint_t epoch;
12 
14  long long N = std::chrono::duration_cast<std::chrono::nanoseconds>(value - epoch).count();
15  return size(N);
16  }
17 
19  long long N = std::chrono::duration_cast<std::chrono::nanoseconds>(value - epoch).count();
20  return pack(N, size, dest);
21  }
22 
24  long long N = unpack<long long>(src, size);
25  return timepoint_t(epoch.time_since_epoch() + std::chrono::duration<long long, std::nano>(N));
26  }
27 }
28 #endif
DEF_SIZE(long long)
Definition: ll.h:7
DEF_UNPACK(float)
Definition: double.h:30
size_t size(const std::string &value)
Definition: binary.h:8
Definition: basictypes.h:40
std::chrono::time_point< std::chrono::system_clock, std::chrono::nanoseconds > timepoint_t
Definition: datetime.h:10
size_t pack(const std::string &value, size_t size, char *dest)
Definition: binary.h:12
const timepoint_t epoch
Definition: datetime.cpp:10
DEF_PACK(long long)
Definition: ll.h:22