aboutsummaryrefslogtreecommitdiff
path: root/odb/pgsql/endian-traits.hxx
diff options
context:
space:
mode:
authorConstantin Michael <constantin@codesynthesis.com>2011-05-30 12:42:50 +0200
committerConstantin Michael <constantin@codesynthesis.com>2011-05-30 12:42:50 +0200
commit7f50d4e53837f5ac87f3c6a0c7cc6eea11c6e89b (patch)
treeddcc49fd0145e8baba8165aa5c889b8ad6d34d4b /odb/pgsql/endian-traits.hxx
parent88fb6802608818b70617340b1ed826c1b8a9f1ea (diff)
Move endian-traits to odb/pgsql/details folder
Diffstat (limited to 'odb/pgsql/endian-traits.hxx')
-rw-r--r--odb/pgsql/endian-traits.hxx138
1 files changed, 0 insertions, 138 deletions
diff --git a/odb/pgsql/endian-traits.hxx b/odb/pgsql/endian-traits.hxx
deleted file mode 100644
index 2dc79f3..0000000
--- a/odb/pgsql/endian-traits.hxx
+++ /dev/null
@@ -1,138 +0,0 @@
-// file : odb/pgsql/endian-traits.hxx
-// author : Constantin Michael <constantin@codesynthesis.com>
-// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
-// license : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef ODB_PGSQL_ENDIAN_TRAITS_HXX
-#define ODB_PGSQL_ENDIAN_TRAITS_HXX
-
-#include <cstddef> // std::size_t
-#include <algorithm> // std::reverse
-
-namespace odb
-{
- namespace pgsql
- {
- namespace details
- {
- template <typename T, std::size_t S = sizeof (T)>
- struct swap_endian;
-
- template <typename T>
- struct swap_endian<T, 2>
- {
- static T
- swap (T x)
- {
- union u2
- {
- T t;
- char c[2];
- };
-
- u2 u;
- u.t = x;
-
- char tmp (u.c[0]);
- u.c[0] = u.c[1];
- u.c[1] = tmp;
-
- return u.t;
- }
- };
-
- template <typename T>
- struct swap_endian<T, 4>
- {
- static T
- swap (T x)
- {
- union u4
- {
- T t;
- char c[4];
- };
-
- u4 u;
- u.t = x;
-
- char tmp (u.c[0]);
- u.c[0] = u.c[3];
- u.c[3] = tmp;
-
- tmp = u.c[1];
- u.c[1] = u.c[2];
- u.c[2] = tmp;
-
- return u.t;
- }
- };
-
- template <typename T>
- struct swap_endian<T, 8>
- {
- static T
- swap (T x)
- {
- union u8
- {
- T t;
- char c[8];
- };
-
- u8 u;
- u.t = x;
-
- char tmp (u.c[0]);
- u.c[0] = u.c[7];
- u.c[7] = tmp;
-
- tmp = u.c[1];
- u.c[1] = u.c[6];
- u.c[6] = tmp;
-
- tmp = u.c[2];
- u.c[2] = u.c[5];
- u.c[5] = tmp;
-
- tmp = u.c[3];
- u.c[3] = u.c[4];
- u.c[4] = tmp;
-
- return u.t;
- }
- };
-
- class endian_traits
- {
- public:
- enum endian
- {
- big,
- little
- };
-
- public:
- static const endian host_endian;
-
- public:
-
- template <typename T>
- static T
- hton (T x)
- {
- return host_endian == big ? x : swap_endian<T>::swap (x);
- }
-
- template <typename T>
- static T
- ntoh (T x)
- {
- return host_endian == big ? x : swap_endian<T>::swap (x);
- }
- };
- }
- }
-}
-
-#endif // ODB_PGSQL_ENDIAN_TRAITS_HXX