13 #ifndef __PROCESS_OWNED_HPP__
14 #define __PROCESS_OWNED_HPP__
19 #include <glog/logging.h>
42 bool operator<(const Owned<T>& that)
const;
69 std::shared_ptr<Data> data;
81 data.reset(
new Data(t));
89 return data == that.data;
96 return data < that.data;
100 template <
typename T>
103 return *CHECK_NOTNULL(
get());
107 template <
typename T>
110 return CHECK_NOTNULL(
get());
114 template <
typename T>
117 if (data ==
nullptr) {
121 CHECK(data->t != static_cast<T*>(
nullptr))
122 <<
"This owned pointer has already been shared";
129 template <
typename T>
136 template <
typename T>
142 data.reset(
new Data(t));
147 template <
typename T>
150 data.swap(that.data);
154 template <
typename T>
157 if (data ==
nullptr) {
163 T* old = data->t.exchange(
nullptr);
164 if (old ==
nullptr) {
174 template <
typename T>
177 if (data ==
nullptr) {
183 T* old = data->t.exchange(
nullptr);
184 if (old ==
nullptr) {
194 template <
typename T>
196 : t(CHECK_NOTNULL(_t)) {}
199 template <
typename T>
200 Owned<T>::Data::~Data()
207 #endif // __PROCESS_OWNED_HPP__
void reset()
Definition: owned.hpp:130
void reset()
Definition: shared.hpp:134
T * get() const
Definition: owned.hpp:115
bool operator==(const Owned< T > &that) const
Definition: owned.hpp:87
T * operator->() const
Definition: owned.hpp:108
Owned()
Definition: owned.hpp:74
bool operator<(const Owned< T > &that) const
Definition: owned.hpp:94
Shared< T > share()
Definition: owned.hpp:155
Result< Process > process(pid_t pid)
Definition: freebsd.hpp:30
T & operator*() const
Definition: owned.hpp:101
T * release()
Definition: owned.hpp:175
void swap(Owned< T > &that)
Definition: owned.hpp:148