/*
|
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
|