DISPLACE  1.0
A spatial model of fisheries to help sustainable fishing and maritime spatial planning
endian.h
Go to the documentation of this file.
1 #ifndef ENDIAN_H_
2 #define ENDIAN_H_
3 
5 
6 #include <cstdint>
7 
8 namespace displace {
9 namespace formats {
10 namespace helpers {
11 
12 // Default are disabled
13 
14 #define DELETED { static_assert(sizeof(T) == 0, "Non specialized functions are deleted"); }
15 
16 template <typename T>
17 T inline toBigEndian (T) DELETED
18 
19 template <typename T>
20 T inline fromBigEndian (T) DELETED
21 
22 template <typename T>
23 T inline toLittleEndian (T) DELETED
24 
25 template <typename T>
26 T inline fromLittleEndian (T) DELETED
27 
28 
29 // Specializations
30 
31 template <>
32 uint16_t inline toBigEndian(uint16_t v) {
33  return htobe16(v);
34 }
35 
36 template <>
37 uint32_t inline toBigEndian(uint32_t v) {
38  return htobe32(v);
39 }
40 
41 template <>
42 uint16_t inline fromBigEndian(uint16_t v) {
43  return be16toh(v);
44 }
45 
46 template <>
47 uint32_t inline fromBigEndian(uint32_t v) {
48  return be32toh(v);
49 }
50 
51 
52 // LE
53 
54 template <>
55 uint16_t inline toLittleEndian(uint16_t v) {
56  return htole16(v);
57 }
58 
59 template <>
60 uint32_t inline toLittleEndian(uint32_t v) {
61  return htole32(v);
62 }
63 
64 template <>
65 uint16_t inline fromLittleEndian(uint16_t v) {
66  return le16toh(v);
67 }
68 
69 template <>
70 uint32_t inline fromLittleEndian(uint32_t v) {
71  return le32toh(v);
72 }
73 
74 
75 }
76 }
77 }
78 
79 #endif // ENDIAN_H
uint16_t fromLittleEndian(uint16_t v)
Definition: endian.h:65
Definition: decisiontreemanager.h:13
uint16_t fromBigEndian(uint16_t v)
Definition: endian.h:42
T toBigEndian(T) DELETED template< typename T > T inline fromBigEndian(T) DELETED template< typename T > T inline toLittleEndian(T) DELETED template< typename T > T inline fromLittleEndian(T) DELETED template<> uint16_t inline toBigEndian(uint16_t v)
Definition: endian.h:17
#define DELETED
Definition: endian.h:14
uint16_t toLittleEndian(uint16_t v)
Definition: endian.h:55