File DlOptional.hpp

Parent directory (DlSystem)

Definition (DlSystem/DlOptional.hpp)

Includes

  • cstddef

  • type_traits

  • utility

Full File Listing

namespace DlSystem
template<typename T>
class Optional
#include <DlOptional.hpp>

Class to manage a value that may or may not exist. The boolean value of the Optional class is true if the object contains a value and false if it does not contain a value.

The class must be evaluated and confirmed as true (containing a value) before being dereferenced.

Public Types

enum class LIFECYCLE

Values:

enumerator NONE = 0
enumerator REFERENCE_OWNED = 1
enumerator POINTER_OWNED = 2
enumerator POINTER_NOT_OWNED = 3
using U = typename std::remove_pointer<T>::type

Public Functions

Optional()

The default constructor is set to not have any value, and is therefore evaluated as false.

template<typename Q = T>
Optional(const T &v, typename std::enable_if<!std::is_pointer<Q>::value>::type* = 0)

Construct an Optional class using an object.

Parameters
  • Reference[in] to an object v

  • Optional – instance of object v

template<typename Q = T>
Optional(U *v, LIFECYCLE type, typename std::enable_if<std::is_pointer<Q>::value>::type* = 0)

Construct an Optional class using an object.

Parameters
  • Reference[in] to an object v

  • type[in] of object

  • typename[in] of object

  • Optional – instance of object v

Optional(const Optional &other)

Construct an Optional class using an object.

Parameters

Reference[in] to an object other

Optional &operator=(const Optional &other) noexcept

Construct an Optional class using an object.

Parameters
  • Reference[in] to an object v

  • Optional – instance of object v

Optional(Optional &&other) noexcept

Construct an Optional class using an object.

Parameters

Reference[in] to an object other

Optional &operator=(Optional &&other) noexcept

Construct an Optional class using an object.

Parameters
  • Reference[in] to an object v

  • Optional – instance of object v

~Optional()

Destructor of Otional class object.

operator bool() const noexcept

Boolean value of Optional class is only true when there exists a value.

bool operator!() const noexcept

Boolean value of Optional class is only true when there does not exist a value.

const T &operator*()

Get reference of Optional object.

Warning

User must validate Optional has value before.

const T &operator*() const

Get reference of Optional object.

Warning

User must validate Optional has value before.

operator T&()

Get reference of Optional object.

Warning

User must validate Optional has value before.

T operator->()

Get reference of Optional object.

Warning

User must validate Optional has value before.

void release()

Releases the ownership of shared pointer m_Count.

struct ReferenceCount
#include <DlOptional.hpp>

Public Functions

void increment()
size_t decrement()

Public Members

size_t count = 0
namespace zdl
namespace DlSystem

Typedefs

template<typename T>
using Optional = ::DlSystem::Optional<T>