diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2014-05-12 16:04:46 -0700 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2014-05-12 17:29:01 -0700 |
commit | 794c162c9e92cbcdad73cb82f545876a47afae92 (patch) | |
tree | 3b663d40f96fc32d0848d0ae513185bdd4367a92 /src/mmo/utils.hpp | |
parent | c87b1dc338eadc68accac02563a487d7d8e1c9a0 (diff) | |
download | tmwa-794c162c9e92cbcdad73cb82f545876a47afae92.tar.gz tmwa-794c162c9e92cbcdad73cb82f545876a47afae92.tar.bz2 tmwa-794c162c9e92cbcdad73cb82f545876a47afae92.tar.xz tmwa-794c162c9e92cbcdad73cb82f545876a47afae92.zip |
Implement proto v2
Diffstat (limited to 'src/mmo/utils.hpp')
-rw-r--r-- | src/mmo/utils.hpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/mmo/utils.hpp b/src/mmo/utils.hpp index 9837358..ddfbca6 100644 --- a/src/mmo/utils.hpp +++ b/src/mmo/utils.hpp @@ -27,6 +27,8 @@ # include <type_traits> +# include "../ints/little.hpp" + # include "../strings/fwd.hpp" # include "../strings/vstring.hpp" @@ -107,6 +109,40 @@ long long& convert_for_scanf(TimeT& t) return t.value; } +// 2038 problem +inline __attribute__((warn_unused_result)) +bool native_to_network(Little32 *net, TimeT nat) +{ + time_t tmp = nat; + return native_to_network(net, static_cast<uint32_t>(tmp)); +} + +inline __attribute__((warn_unused_result)) +bool network_to_native(TimeT *nat, Little32 net) +{ + uint32_t tmp; + bool rv = network_to_native(&tmp, net); + *nat = static_cast<time_t>(tmp); + return rv; +} + +inline __attribute__((warn_unused_result)) +bool native_to_network(Little64 *net, TimeT nat) +{ + time_t tmp = nat; + return native_to_network(net, static_cast<uint64_t>(tmp)); +} + +inline __attribute__((warn_unused_result)) +bool network_to_native(TimeT *nat, Little64 net) +{ + uint64_t tmp; + bool rv = network_to_native(&tmp, net); + *nat = static_cast<time_t>(tmp); + return rv; +} + + struct timestamp_seconds_buffer : VString<19> {}; struct timestamp_milliseconds_buffer : VString<23> {}; void stamp_time(timestamp_seconds_buffer&, const TimeT *t=nullptr); |