15#ifndef _FASTCDR_XCDR_EXTERNAL_HPP_
16#define _FASTCDR_XCDR_EXTERNAL_HPP_
20#include "../exceptions/LockedExternalAccessException.hpp"
41 bool locked =
false) noexcept
61 pointer_ = std::make_shared<T>(*other.pointer_);
124 const T*
get() const noexcept
158 return !(*
this == other);
162 operator bool() const noexcept
This class is thrown as an exception when accessing to set the value of a locked external.
static Cdr_DllAPI const char *const LOCKED_EXTERNAL_ACCESS_MESSAGE_DEFAULT
Default message used in the library.
This class template manages an external member, a member declared to be external to the storage of a ...
bool operator==(const external< T > &other) const
Compares they manage the same object or empty both.
bool is_locked() const noexcept
Checks if locked.
external(std::shared_ptr< T > pointer) noexcept
Constructor from a shared pointer.
std::shared_ptr< T > get_shared_ptr() noexcept
Get shared pointer.
external(T *pointer, bool locked=false) noexcept
Constructor from a pointer.
T * get() noexcept
Get pointer.
~external()=default
Destructor.
external< T > & operator=(const external< T > &other)
Assignment.
const T * get() const noexcept
Get pointer.
bool operator!=(const external< T > &other) const
Compares they don't manages the same object.
external()=default
Default constructor.
std::shared_ptr< T > pointer_
T * operator->() noexcept
Dereference object member.
void lock() noexcept
Locks the managed object.
external(const external< T > &other) noexcept
Copy constructor.
T & operator*() noexcept
Dereference object.