15#ifndef _FASTCDR_XCDR_EXTERNAL_HPP_
16#define _FASTCDR_XCDR_EXTERNAL_HPP_
20#include "../exceptions/LockedExternalAccessException.hpp"
41 bool locked =
false) noexcept
49 std::shared_ptr<T> pointer) noexcept
57 : locked_ {other.locked_}
61 pointer_ = std::make_shared<T>(*other.pointer_);
65 pointer_ = other.pointer_;
83 else if (other.locked_)
87 pointer_ = std::make_shared<T>(*other.pointer_);
91 *pointer_ = *other.pointer_;
96 pointer_ = other.pointer_;
120 return pointer_.get();
124 const T*
get() const noexcept
126 return pointer_.get();
138 return pointer_.get();
144 return pointer_.get();
151 return pointer_.get() == other.pointer_.get();
158 return !(*
this == other);
162 operator bool() const noexcept
164 return nullptr != pointer_.get();
181 std::shared_ptr<T> pointer_;
183 bool locked_ {
false};
This class is thrown as an exception when accessing to set the value of a locked external.
Definition LockedExternalAccessException.hpp:28
static const char *const LOCKED_EXTERNAL_ACCESS_MESSAGE_DEFAULT
Default message used in the library.
Definition LockedExternalAccessException.hpp:78
This class template manages an external member, a member declared to be external to the storage of a ...
Definition external.hpp:30
~external()=default
Destructor.
bool operator==(const external< T > &other) const
Compares they manage the same object or empty both.
Definition external.hpp:148
bool operator!=(const external< T > &other) const
Compares they don't manages the same object.
Definition external.hpp:155
bool is_locked() const noexcept
Checks if locked.
Definition external.hpp:168
T * get() noexcept
Get pointer.
Definition external.hpp:118
void lock() noexcept
Locks the managed object.
Definition external.hpp:174
external< T > & operator=(const external< T > &other)
Assignment.
Definition external.hpp:70
const T * get() const noexcept
Get pointer.
Definition external.hpp:124
T type
Definition external.hpp:33
external(const external< T > &other) noexcept
Copy constructor.
Definition external.hpp:55
external(std::shared_ptr< T > pointer) noexcept
Constructor from a shared pointer.
Definition external.hpp:48
std::shared_ptr< T > get_shared_ptr() noexcept
Get shared pointer.
Definition external.hpp:130
T * operator->() noexcept
Dereference object member.
Definition external.hpp:136
external()=default
Default constructor.
T & operator*() noexcept
Dereference object.
Definition external.hpp:106
external(T *pointer, bool locked=false) noexcept
Constructor from a pointer.
Definition external.hpp:39