Class VarValue

Class Documentation

class URI::Template::VarValue

URI-template variable value.

This class represent type-safe union for value instances. The value can hold either std::string or std::vector<std::string> or std::unordered_map<std::string, std::string> instance.

Public Functions

VarValue(VarType var_type = VarType::UNDEFINED)

Parametrized constructor.

Creates an empty variable value of desired type.

Parameters

[in] var_type – Type of value to create. Default is VarType::UNDEFINED.

VarValue(std::string &&str_value)

Parametrized constructor.

Creates a VarType::STRING variable from a str_value.

Parameters

[in] str_value – std::string to hold as value.

VarValue(std::vector<std::string> &&list_value)

Parametrized constructor.

Creates a VarType::LIST variable from a list_value.

Parameters

[in] list_value – std::vector to hold as value.

VarValue(std::unordered_map<std::string, std::string> &&dict_value)

Parametrized constructor.

Creates a VarType::DICT variable from a dict_value.

Parameters

[in] dict_value – std::unordered_map to hold as value.

VarValue(const VarValue&) = default

Copy constructor.

VarValue &operator=(const VarValue&) = default

Copy assignment.

VarValue(VarValue&&) noexcept = default

Move constructor.

VarValue &operator=(VarValue&&) noexcept = default

Move assignment.

~VarValue() = default

Destructor.

template<class T>
inline T &Get()

Get specific representation.

Template Parameters

T – Type of the representation to get. Either:

  • std::string or

  • std::vector<std::string> or

  • std::unordered_map<std::string, std::string>

Throws

std::bad_variant_access – if type mismatch.

Returns

A reference of T to stored value.

template<class T>
inline const T &Get() const

Get specific representation.

Template Parameters

T – Type of the representation to get. Either:

  • std::string or

  • std::vector<std::string> or

  • std::unordered_map<std::string, std::string>

Throws

std::bad_variant_access – if type mismatch.

Returns

A const reference of T to stored value.

VarType Type() const

Get type of the value.

std::string Print() const

Produce printable value image.

Stored value printed as follows:

  • VarType::UNDEFINED -> undefined

  • VarType::STRING -> string

  • VarType::LIST -> [‘string’, ‘string’, …]

  • VarType::DICT -> {‘key’: ‘value’, ‘key’: ‘value’, …} Where ‘undefined’ is literal constant, and ‘string’, ‘key’, ‘value’ are contents of vector or unordered_map respectively.

Returns

A string representing stored value.

bool operator==(const VarValue &rhs) const

Compares two values.

bool operator!=(const VarValue &rhs) const

Compares two values.