ActiveLib
Loading...
Searching...
No Matches
NullValue.h
1
6#ifndef ACTIVE_SETTING_NULL_VALUE
7#define ACTIVE_SETTING_NULL_VALUE
8
9#include "Active/Setting/Values/Value.h"
10
11namespace active::setting {
12
19 class NullValue : public Value {
20 public:
21
26
31 virtual Value* clonePtr() const override { return new NullValue(); }
32
33 // MARK: - Operators
34
40 virtual bool operator==(const Value& ref) const override { return ref.isNull(); }
46 virtual bool operator<(const Value& ref) const override { return !ref.isNull(); } //Null is less than anything except another null
52 virtual Value& operator=(const Value& val) override { return *this; }
58 virtual Value& operator=(bool val) override { return *this; }
64 virtual Value& operator=(int32_t val) override { return *this; }
70 virtual Value& operator=(uint32_t val) override { return *this; }
76 virtual Value& operator=(int64_t val) override { return *this; }
82 virtual Value& operator=(double val) override { return *this; }
88 virtual Value& operator=(const active::utility::String& val) override { return *this; }
94 virtual Value& operator=(const active::utility::Guid& val) override { return *this; }
100 virtual Value& operator=(const active::utility::Time& val) override { return *this; }
101
102 // MARK: - Conversion operators
103
108 virtual operator bool() const override { return false; }
113 virtual operator int32_t() const override { return 0; }
118 virtual operator uint32_t() const override { return 0; }
123 virtual operator int64_t() const override { return 0; }
128 virtual operator double() const override { return 0.0; }
133 virtual operator active::utility::String() const override { return utility::String(); }
138 virtual operator active::utility::Guid() const override { return utility::Guid(); }
143 virtual operator active::utility::Time() const override { return utility::Time(); }
144
145 // MARK: - Functions (const)
146
151 virtual bool isNull() const override { return true; }
156 virtual Type getType() const override { return null; }
157
158 // MARK: - Functions (mutating)
159
161 virtual void setDefault() override {}
162 };
163
164}
165
166#endif //ACTIVE_SETTING_NULL_VALUE
Definition NullValue.h:19
virtual Value & operator=(uint32_t val) override
Definition NullValue.h:70
NullValue()
Definition NullValue.h:25
virtual Value & operator=(const active::utility::Time &val) override
Definition NullValue.h:100
virtual Value & operator=(int64_t val) override
Definition NullValue.h:76
virtual Value & operator=(const Value &val) override
Definition NullValue.h:52
virtual bool operator==(const Value &ref) const override
Definition NullValue.h:40
virtual Value & operator=(bool val) override
Definition NullValue.h:58
virtual Value & operator=(double val) override
Definition NullValue.h:82
virtual Type getType() const override
Definition NullValue.h:156
virtual void setDefault() override
Definition NullValue.h:161
virtual Value * clonePtr() const override
Definition NullValue.h:31
virtual Value & operator=(const active::utility::String &val) override
Definition NullValue.h:88
virtual Value & operator=(const active::utility::Guid &val) override
Definition NullValue.h:94
virtual bool isNull() const override
Definition NullValue.h:151
virtual bool operator<(const Value &ref) const override
Definition NullValue.h:46
virtual Value & operator=(int32_t val) override
Definition NullValue.h:64
Definition Value.h:31
Type
Supported value types (broad groups, e.g. int32_t and int64_t are both intType)
Definition Value.h:51
virtual bool isNull() const =0
Definition Guid.h:16
A Unicode-aware string class.
Definition String.h:51
A class to represent a date/time.
Definition Time.h:19
Definition Transportable.h:13