framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
endian.hpp
Go to the documentation of this file.
1 // Copyright (C) 2012 iwg molw5
2 // For conditions of distribution and use, see copyright notice in COPYING
3 
13 #pragma once
14 
18 
19 namespace framework
20 {
21  namespace serializable
22  {
31  template <typename T>
32  struct little_endian : public mutator_type <T> {};
33 
42  template <typename T>
43  struct big_endian : public mutator_type <T> {};
44 
53  template <typename T>
54  struct pdp_endian : public mutator_type <T> {};
55 
65  template <
66  typename T,
67  typename Input,
68  typename Output>
72  Input& in, Output& out)
73  {
75  if (!dispatch_read <T> (in, value))
76  return false;
77 
78  out = little_to_host(value);
79  return true;
80  }
81 
91  template <
92  typename T,
93  typename Input,
94  typename Output>
98  Input const& in, Output& out)
99  {
100  return !!(dispatch_write <T> (host_to_little(in), out));
101  }
102 
112  template <
113  typename T,
114  typename Input,
115  typename Output>
118  Input& in, Output& out)
119  {
121  if (!dispatch_read <T> (in, value))
122  return false;
123 
124  out = big_to_host(value);
125  return true;
126  }
127 
137  template <
138  typename T,
139  typename Input,
140  typename Output>
143  Input const& in, Output& out)
144  {
145  return !!(dispatch_write <T> (host_to_big(in), out));
146  }
147 
157  template <
158  typename T,
159  typename Input,
160  typename Output>
163  Input& in, Output& out)
164  {
166  if (!dispatch_read <T> (in, value))
167  return false;
168 
169  out = pdp_to_host(value);
170  return true;
171  }
172 
182  template <
183  typename T,
184  typename Input,
185  typename Output>
188  Input const& in, Output& out)
189  {
190  return !!(dispatch_write <T> (host_to_pdp(in), out));
191  }
192  }
193 }