forked from boostorg/core
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1000 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1000 B
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
Copyright 2019 Glen Joseph Fernandes
 | 
						|
(glenjofe@gmail.com)
 | 
						|
 | 
						|
Distributed under the Boost Software License, Version 1.0.
 | 
						|
(http://www.boost.org/LICENSE_1_0.txt)
 | 
						|
*/
 | 
						|
#ifndef BOOST_CORE_NVP_HPP
 | 
						|
#define BOOST_CORE_NVP_HPP
 | 
						|
 | 
						|
#include <boost/core/addressof.hpp>
 | 
						|
#include <boost/config.hpp>
 | 
						|
 | 
						|
namespace boost {
 | 
						|
namespace serialization {
 | 
						|
 | 
						|
template<class T>
 | 
						|
class nvp {
 | 
						|
public:
 | 
						|
    nvp(const char* n, T& v) BOOST_NOEXCEPT
 | 
						|
        : n_(n)
 | 
						|
        , v_(boost::addressof(v)) { }
 | 
						|
 | 
						|
    const char* name() const BOOST_NOEXCEPT {
 | 
						|
        return n_;
 | 
						|
    }
 | 
						|
 | 
						|
    T& value() const BOOST_NOEXCEPT {
 | 
						|
        return *v_;
 | 
						|
    }
 | 
						|
 | 
						|
    const T& const_value() const BOOST_NOEXCEPT {
 | 
						|
        return *v_;
 | 
						|
    }
 | 
						|
 | 
						|
private:
 | 
						|
    const char* n_;
 | 
						|
    T* v_;
 | 
						|
};
 | 
						|
 | 
						|
template<class T>
 | 
						|
inline const nvp<T>
 | 
						|
make_nvp(const char* n, T& v) BOOST_NOEXCEPT
 | 
						|
{
 | 
						|
    return nvp<T>(n, v);
 | 
						|
}
 | 
						|
 | 
						|
} /* serialization */
 | 
						|
 | 
						|
using serialization::nvp;
 | 
						|
using serialization::make_nvp;
 | 
						|
 | 
						|
} /* boost */
 | 
						|
 | 
						|
#define BOOST_NVP(v) boost::make_nvp(BOOST_STRINGIZE(v), v)
 | 
						|
 | 
						|
#endif
 |