diff options
author | Constantin Michael <constantin@codesynthesis.com> | 2011-05-30 12:42:50 +0200 |
---|---|---|
committer | Constantin Michael <constantin@codesynthesis.com> | 2011-05-30 12:42:50 +0200 |
commit | 7f50d4e53837f5ac87f3c6a0c7cc6eea11c6e89b (patch) | |
tree | ddcc49fd0145e8baba8165aa5c889b8ad6d34d4b /odb/pgsql/endian-traits.hxx | |
parent | 88fb6802608818b70617340b1ed826c1b8a9f1ea (diff) |
Move endian-traits to odb/pgsql/details folder
Diffstat (limited to 'odb/pgsql/endian-traits.hxx')
-rw-r--r-- | odb/pgsql/endian-traits.hxx | 138 |
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 |