Mercurial > hg > vamp-build-and-test
annotate DEPENDENCIES/generic/include/boost/variant/detail/backup_holder.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children | c530137014c0 |
rev | line source |
---|---|
Chris@16 | 1 //----------------------------------------------------------------------------- |
Chris@16 | 2 // boost variant/detail/backup_holder.hpp header file |
Chris@16 | 3 // See http://www.boost.org for updates, documentation, and revision history. |
Chris@16 | 4 //----------------------------------------------------------------------------- |
Chris@16 | 5 // |
Chris@16 | 6 // Copyright (c) 2003 |
Chris@16 | 7 // Eric Friedman |
Chris@16 | 8 // |
Chris@16 | 9 // Distributed under the Boost Software License, Version 1.0. (See |
Chris@16 | 10 // accompanying file LICENSE_1_0.txt or copy at |
Chris@16 | 11 // http://www.boost.org/LICENSE_1_0.txt) |
Chris@16 | 12 |
Chris@16 | 13 #ifndef BOOST_VARIANT_DETAIL_BACKUP_HOLDER_HPP |
Chris@16 | 14 #define BOOST_VARIANT_DETAIL_BACKUP_HOLDER_HPP |
Chris@16 | 15 |
Chris@16 | 16 #include "boost/config.hpp" |
Chris@16 | 17 #include "boost/assert.hpp" |
Chris@16 | 18 |
Chris@16 | 19 namespace boost { |
Chris@16 | 20 namespace detail { namespace variant { |
Chris@16 | 21 |
Chris@16 | 22 template <typename T> |
Chris@16 | 23 class backup_holder |
Chris@16 | 24 { |
Chris@16 | 25 private: // representation |
Chris@16 | 26 |
Chris@16 | 27 T* backup_; |
Chris@16 | 28 |
Chris@16 | 29 public: // structors |
Chris@16 | 30 |
Chris@16 | 31 ~backup_holder() |
Chris@16 | 32 { |
Chris@16 | 33 delete backup_; |
Chris@16 | 34 } |
Chris@16 | 35 |
Chris@16 | 36 explicit backup_holder(T* backup) BOOST_NOEXCEPT |
Chris@16 | 37 : backup_(backup) |
Chris@16 | 38 { |
Chris@16 | 39 } |
Chris@16 | 40 |
Chris@16 | 41 backup_holder(const backup_holder&); |
Chris@16 | 42 |
Chris@16 | 43 public: // modifiers |
Chris@16 | 44 |
Chris@16 | 45 backup_holder& operator=(const backup_holder& rhs) |
Chris@16 | 46 { |
Chris@16 | 47 *backup_ = rhs.get(); |
Chris@16 | 48 return *this; |
Chris@16 | 49 } |
Chris@16 | 50 |
Chris@16 | 51 backup_holder& operator=(const T& rhs) |
Chris@16 | 52 { |
Chris@16 | 53 *backup_ = rhs; |
Chris@16 | 54 return *this; |
Chris@16 | 55 } |
Chris@16 | 56 |
Chris@16 | 57 void swap(backup_holder& rhs) BOOST_NOEXCEPT |
Chris@16 | 58 { |
Chris@16 | 59 T* tmp = rhs.backup_; |
Chris@16 | 60 rhs.backup_ = this->backup_; |
Chris@16 | 61 this->backup_ = tmp; |
Chris@16 | 62 } |
Chris@16 | 63 |
Chris@16 | 64 public: // queries |
Chris@16 | 65 |
Chris@16 | 66 T& get() |
Chris@16 | 67 { |
Chris@16 | 68 return *backup_; |
Chris@16 | 69 } |
Chris@16 | 70 |
Chris@16 | 71 const T& get() const |
Chris@16 | 72 { |
Chris@16 | 73 return *backup_; |
Chris@16 | 74 } |
Chris@16 | 75 |
Chris@16 | 76 }; |
Chris@16 | 77 |
Chris@16 | 78 template <typename T> |
Chris@16 | 79 backup_holder<T>::backup_holder(const backup_holder&) |
Chris@16 | 80 : backup_(0) |
Chris@16 | 81 { |
Chris@16 | 82 // not intended for copy, but do not want to prohibit syntactically |
Chris@16 | 83 BOOST_ASSERT(false); |
Chris@16 | 84 } |
Chris@16 | 85 |
Chris@16 | 86 template <typename T> |
Chris@16 | 87 void swap(backup_holder<T>& lhs, backup_holder<T>& rhs) BOOST_NOEXCEPT |
Chris@16 | 88 { |
Chris@16 | 89 lhs.swap(rhs); |
Chris@16 | 90 } |
Chris@16 | 91 |
Chris@16 | 92 }} // namespace detail::variant |
Chris@16 | 93 } // namespace boost |
Chris@16 | 94 |
Chris@16 | 95 #endif // BOOST_VARIANT_DETAIL_BACKUP_HOLDER_HPP |