MACE
1.0.0
|
00001 #ifndef _MACE_REFLECT_VALUE_HPP_ 00002 #define _MACE_REFLECT_VALUE_HPP_ 00003 #include <mace/reflect/value_ref.hpp> 00004 00005 namespace mace { namespace reflect { 00006 00032 class value : public value_base { 00033 public: 00034 value(){} 00035 00036 template<typename T> 00037 value( const T& v ); 00038 00039 value( value&& v ); 00040 00041 template<typename T> 00042 value( typename boost::remove_reference<T>::type&& v ); 00043 00044 value( const value_cref& ); 00045 value( const value_ref& ); 00046 00047 template<typename T> 00048 value& operator=( const T& v ); 00049 00050 template<typename T> 00051 value& operator=( T&& v ); 00052 00053 template<typename T> 00054 value& operator=( value&& v ); 00055 00056 template<typename T> 00057 value& operator=( const value& v ); 00058 00059 template<typename T> 00060 value& operator=( const value_ref& v ); 00061 00062 template<typename T> 00063 value& operator=( const value_cref& v ); 00064 00065 value_cref operator[]( const std::string& field )const; 00066 value_ref operator[]( const std::string& field ); 00067 value_cref operator[]( uint64_t idx )const; 00068 value_ref operator[]( uint64_t idx ); 00069 }; 00070 00071 00072 } } // namespace mace::reflect 00073 00074 #include <mace/reflect/detail/value_cref.ipp> 00075 #include <mace/reflect/detail/value_ref.ipp> 00076 #include <mace/reflect/detail/value.ipp> 00077 #include <mace/reflect/detail/value_base.ipp> 00078 #include <mace/reflect/detail/iterator.ipp> 00079 00080 #endif