MACE  1.0.0
 All Classes Namespaces Files Functions Variables Enumerations Defines
libs/reflect/include/mace/reflect/value.hpp
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