Clean-ups to types.
[invirt/third/libt4.git] / rpc / marshall.cc
1 #include "types.h"
2 #include "marshall.h"
3
4 MARSHALL_RAW_NETWORK_ORDER_AS(bool, uint8_t)
5 MARSHALL_RAW_NETWORK_ORDER(uint8_t)
6 MARSHALL_RAW_NETWORK_ORDER(int8_t)
7 MARSHALL_RAW_NETWORK_ORDER(uint16_t)
8 MARSHALL_RAW_NETWORK_ORDER(int16_t)
9 MARSHALL_RAW_NETWORK_ORDER(uint32_t)
10 MARSHALL_RAW_NETWORK_ORDER(int32_t)
11 MARSHALL_RAW_NETWORK_ORDER_AS(size_t, uint32_t)
12 MARSHALL_RAW_NETWORK_ORDER(uint64_t)
13 MARSHALL_RAW_NETWORK_ORDER(int64_t)
14
15 marshall & operator<<(marshall &m, const string &s) {
16     m << (uint32_t)s.size();
17     m.rawbytes(s.data(), s.size());
18     return m;
19 }
20
21 unmarshall & operator>>(unmarshall &u, string &s) {
22     uint32_t sz = u.grab<uint32_t>();
23     if (u.ok()) {
24         s.resize(sz);
25         u.rawbytes(&s[0], sz);
26     }
27     return u;
28 }