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