empty.hppGo to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ADOBE_EMPTY_HPP
00010 #define ADOBE_EMPTY_HPP
00011
00012
00013
00014 #include <adobe/config.hpp>
00015
00016 #include <boost/operators.hpp>
00017 #include <boost/mpl/bool.hpp>
00018 #include <boost/type_traits/is_empty.hpp>
00019 #include <boost/type_traits/is_pod.hpp>
00020 #include <boost/type_traits/has_trivial_constructor.hpp>
00021 #include <boost/type_traits/has_trivial_destructor.hpp>
00022
00023 #include <adobe/typeinfo.hpp>
00024
00025 #if defined(ADOBE_STD_SERIALIZATION)
00026 #include <iosfwd>
00027 #endif
00028
00029
00030
00031 namespace adobe {
00032 namespace version_1 {
00033
00034
00035
00049 struct empty_t : private boost::totally_ordered<empty_t>
00050 {
00051 friend inline bool operator == (const empty_t&, const empty_t&) { return true; }
00052 friend inline bool operator < (const empty_t&, const empty_t&) { return false; }
00053 friend inline void swap(empty_t&, empty_t&) { }
00054 };
00055
00056 #if defined(ADOBE_STD_SERIALIZATION)
00058 std::ostream& operator << (std::ostream& stream, const empty_t&);
00059 #endif
00060
00061
00062
00063 }
00064
00065 using version_1::empty_t;
00066
00067
00068
00074
00075 template <typename Derived>
00076 struct empty_base { };
00077
00078
00079
00080 }
00081
00082
00083
00084 namespace boost {
00085
00086 template <> struct is_pod<adobe::version_1::empty_t> : boost::mpl::true_ { };
00087 template <> struct is_empty<adobe::version_1::empty_t> : boost::mpl::true_ { };
00088 template <> struct has_trivial_constructor<adobe::version_1::empty_t> : boost::mpl::true_ { };
00089 template <> struct has_trivial_destructor<adobe::version_1::empty_t> : boost::mpl::true_ { };
00090
00091 }
00092
00093
00094
00095 ADOBE_NAME_TYPE_0("empty_t:version_1:adobe", adobe::version_1::empty_t)
00096 ADOBE_SHORT_NAME_TYPE('e','m','t','y', adobe::version_1::empty_t)
00097
00098
00099
00100 #endif
00101
00102
|