summaryrefslogtreecommitdiff
path: root/libxsd/xsd/cxx/tree/ostream.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'libxsd/xsd/cxx/tree/ostream.hxx')
-rw-r--r--libxsd/xsd/cxx/tree/ostream.hxx290
1 files changed, 0 insertions, 290 deletions
diff --git a/libxsd/xsd/cxx/tree/ostream.hxx b/libxsd/xsd/cxx/tree/ostream.hxx
deleted file mode 100644
index 179dba0..0000000
--- a/libxsd/xsd/cxx/tree/ostream.hxx
+++ /dev/null
@@ -1,290 +0,0 @@
-// file : xsd/cxx/tree/ostream.hxx
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef XSD_CXX_TREE_OSTREAM_HXX
-#define XSD_CXX_TREE_OSTREAM_HXX
-
-#include <map>
-#include <string>
-#include <memory> // std::auto_ptr/unique_ptr
-#include <cstddef> // std::size_t
-
-#include <xsd/cxx/config.hxx> // XSD_AUTO_PTR
-
-namespace xsd
-{
- namespace cxx
- {
- namespace tree
- {
- class ostream_common
- {
- public:
- template <typename T>
- struct as_size
- {
- explicit as_size (T x) : x_ (x) {}
- T x_;
- };
-
-
- // 8-bit
- //
- template <typename T>
- struct as_int8
- {
- explicit as_int8 (T x) : x_ (x) {}
- T x_;
- };
-
- template <typename T>
- struct as_uint8
- {
- explicit as_uint8 (T x) : x_ (x) {}
- T x_;
- };
-
-
- // 16-bit
- //
- template <typename T>
- struct as_int16
- {
- explicit as_int16 (T x) : x_ (x) {}
- T x_;
- };
-
- template <typename T>
- struct as_uint16
- {
- explicit as_uint16 (T x) : x_ (x) {}
- T x_;
- };
-
-
- // 32-bit
- //
- template <typename T>
- struct as_int32
- {
- explicit as_int32 (T x) : x_ (x) {}
- T x_;
- };
-
- template <typename T>
- struct as_uint32
- {
- explicit as_uint32 (T x) : x_ (x) {}
- T x_;
- };
-
-
- // 64-bit
- //
- template <typename T>
- struct as_int64
- {
- explicit as_int64 (T x) : x_ (x) {}
- T x_;
- };
-
- template <typename T>
- struct as_uint64
- {
- explicit as_uint64 (T x) : x_ (x) {}
- T x_;
- };
-
-
- // Boolean
- //
- template <typename T>
- struct as_bool
- {
- explicit as_bool (T x) : x_ (x) {}
- T x_;
- };
-
-
- // Floating-point
- //
- template <typename T>
- struct as_float32
- {
- explicit as_float32 (T x) : x_ (x) {}
- T x_;
- };
-
- template <typename T>
- struct as_float64
- {
- explicit as_float64 (T x) : x_ (x) {}
- T x_;
- };
- };
-
- template<typename S>
- class ostream: public ostream_common
- {
- public:
- explicit
- ostream (S& s)
- : s_ (s), seq_ (1)
- {
- }
-
- S&
- impl ()
- {
- return s_;
- }
-
- // If the string is not in the pool, add it and return 0. Otherwise
- // return the string's pool id. In the former case the application
- // should serialize the original string.
- //
- // The returned ids are sequential and start with 1. 0 is reserved
- // as a special marker to be used by the application for the first
- // encounter of the string.
- //
- template <typename C>
- std::size_t
- pool_string (const std::basic_string<C>& s)
- {
- typedef pool_impl<C> pool_type;
-
- if (pool_.get () == 0)
- pool_.reset (new pool_type);
-
- pool_type& p (*static_cast<pool_type*> (pool_.get ()));
-
- std::pair<typename pool_type::iterator, bool> r (
- p.insert (std::pair<std::basic_string<C>, std::size_t> (s, seq_)));
-
- if (!r.second)
- return r.first->second;
-
- seq_++;
- return 0;
- }
-
- private:
- ostream (const ostream&);
- ostream&
- operator= (const ostream&);
-
- private:
- struct pool
- {
- virtual
- ~pool () {}
- };
-
- template <typename C>
- struct pool_impl: pool, std::map<std::basic_string<C>, std::size_t>
- {
- };
-
- S& s_;
- std::size_t seq_;
- XSD_AUTO_PTR<pool> pool_;
- };
-
-
- // 8-bit
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, signed char x)
- {
- return s << ostream_common::as_int8<signed char> (x);
- }
-
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, unsigned char x)
- {
- return s << ostream_common::as_uint8<unsigned char> (x);
- }
-
-
- // 16-bit
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, short x)
- {
- return s << ostream_common::as_int16<short> (x);
- }
-
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, unsigned short x)
- {
- return s << ostream_common::as_uint16<unsigned short> (x);
- }
-
-
- // 32-bit
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, int x)
- {
- return s << ostream_common::as_int32<int> (x);
- }
-
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, unsigned int x)
- {
- return s << ostream_common::as_uint32<unsigned int> (x);
- }
-
-
- // 64-bit
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, long long x)
- {
- return s << ostream_common::as_int64<long long> (x);
- }
-
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, unsigned long long x)
- {
- return s << ostream_common::as_uint64<unsigned long long> (x);
- }
-
- // Boolean
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, bool x)
- {
- return s << ostream_common::as_bool<bool> (x);
- }
-
-
- // Floating-point
- //
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, float x)
- {
- return s << ostream_common::as_float32<float> (x);
- }
-
- template <typename S>
- inline ostream<S>&
- operator<< (ostream<S>& s, double x)
- {
- return s << ostream_common::as_float64<double> (x);
- }
- }
- }
-}
-
-#endif // XSD_CXX_TREE_OSTREAM_HXX