mirror of
https://github.com/pocoproject/poco.git
synced 2024-12-12 18:20:26 +01:00
additional move support for Nullable and Optional
This commit is contained in:
parent
8669839833
commit
a31877372e
@ -82,6 +82,14 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
Nullable(C&& value):
|
||||
/// Creates a Nullable by moving the given value.
|
||||
_value(value),
|
||||
_isNull(false),
|
||||
_null()
|
||||
{
|
||||
}
|
||||
|
||||
Nullable(const Nullable& other):
|
||||
/// Creates a Nullable by copying another one.
|
||||
_value(other._value),
|
||||
@ -112,6 +120,14 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
Nullable& assign(C&& value)
|
||||
/// Assigns a value to the Nullable.
|
||||
{
|
||||
_value = value;
|
||||
_isNull = false;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Nullable& assign(const Nullable& other)
|
||||
/// Assigns another Nullable.
|
||||
{
|
||||
@ -133,6 +149,12 @@ public:
|
||||
return assign(value);
|
||||
}
|
||||
|
||||
Nullable& operator = (C&& value)
|
||||
/// Move-assigns a value to the Nullable.
|
||||
{
|
||||
return assign(value);
|
||||
}
|
||||
|
||||
Nullable& operator = (const Nullable& other)
|
||||
/// Assigns another Nullable.
|
||||
{
|
||||
|
@ -32,7 +32,7 @@ class Optional
|
||||
/// that allows to introduce a specified/unspecified state
|
||||
/// to value objects.
|
||||
///
|
||||
/// An Optional can be default constructed. In this case,
|
||||
/// An Optional can be default constructed. In this case,
|
||||
/// the Optional will have a Null value and isSpecified() will
|
||||
/// return false. Calling value()(without default value) on
|
||||
/// a Null object will throw a NullValueException.
|
||||
@ -53,20 +53,27 @@ class Optional
|
||||
/// nillable == true.
|
||||
{
|
||||
public:
|
||||
Optional():
|
||||
Optional():
|
||||
/// Creates an empty Optional.
|
||||
_value(),
|
||||
_isSpecified(false)
|
||||
{
|
||||
}
|
||||
|
||||
Optional(const C& value):
|
||||
Optional(const C& value):
|
||||
/// Creates a Optional with the given value.
|
||||
_value(value),
|
||||
_value(value),
|
||||
_isSpecified(true)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Optional(C&& value):
|
||||
/// Creates a Optional by moving the given value.
|
||||
_value(value),
|
||||
_isSpecified(true)
|
||||
{
|
||||
}
|
||||
|
||||
Optional(const Optional& other):
|
||||
/// Creates a Optional by copying another one.
|
||||
_value(other._value),
|
||||
@ -90,11 +97,19 @@ public:
|
||||
Optional& assign(const C& value)
|
||||
/// Assigns a value to the Optional.
|
||||
{
|
||||
_value = value;
|
||||
_value = value;
|
||||
_isSpecified = true;
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
Optional& assign(C&& value)
|
||||
/// Moves a value into the Optional.
|
||||
{
|
||||
_value = value;
|
||||
_isSpecified = true;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Optional& assign(const Optional& other)
|
||||
/// Assigns another Optional.
|
||||
{
|
||||
@ -102,12 +117,17 @@ public:
|
||||
swap(tmp);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
Optional& operator = (const C& value)
|
||||
{
|
||||
return assign(value);
|
||||
}
|
||||
|
||||
Optional& operator = (C&& value)
|
||||
{
|
||||
return assign(value);
|
||||
}
|
||||
|
||||
Optional& operator = (const Optional& other)
|
||||
{
|
||||
return assign(other);
|
||||
@ -140,7 +160,7 @@ public:
|
||||
|
||||
const C& value(const C& deflt) const
|
||||
/// Returns the Optional's value, or the
|
||||
/// given default value if the Optional's
|
||||
/// given default value if the Optional's
|
||||
/// value has not been specified.
|
||||
{
|
||||
return _isSpecified ? _value : deflt;
|
||||
@ -151,7 +171,7 @@ public:
|
||||
{
|
||||
return _isSpecified;
|
||||
}
|
||||
|
||||
|
||||
void clear()
|
||||
/// Clears the Optional.
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user