add some 'noexcept's
This commit is contained in:
parent
fa3e98e3e4
commit
bd176f24e1
@ -123,7 +123,7 @@ namespace dv {
|
|||||||
return *val.object;
|
return *val.object;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t value::size() const {
|
size_t value::size() const noexcept {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case value_type::list:
|
case value_type::list:
|
||||||
return val.list->size();
|
return val.list->size();
|
||||||
|
|||||||
@ -64,17 +64,17 @@ namespace dv {
|
|||||||
struct optionalvalue {
|
struct optionalvalue {
|
||||||
value* ptr;
|
value* ptr;
|
||||||
|
|
||||||
optionalvalue(value* ptr) : ptr(ptr) {}
|
optionalvalue(value* ptr) noexcept : ptr(ptr) {}
|
||||||
|
|
||||||
inline operator bool() const {
|
inline operator bool() const noexcept {
|
||||||
return ptr != nullptr;
|
return ptr != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline value& operator*() {
|
inline value& operator*() noexcept {
|
||||||
return *ptr;
|
return *ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const value& operator*() const {
|
inline const value& operator*() const noexcept {
|
||||||
return *ptr;
|
return *ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,82 +118,82 @@ namespace dv {
|
|||||||
std::shared_ptr<objects::Object> object;
|
std::shared_ptr<objects::Object> object;
|
||||||
std::shared_ptr<objects::List> list;
|
std::shared_ptr<objects::List> list;
|
||||||
std::shared_ptr<objects::Bytes> bytes;
|
std::shared_ptr<objects::Bytes> bytes;
|
||||||
value_u() {}
|
value_u() noexcept {}
|
||||||
~value_u() {}
|
~value_u() noexcept {}
|
||||||
} val;
|
} val;
|
||||||
|
|
||||||
inline value& setBoolean(boolean_t v) {
|
inline value& setBoolean(boolean_t v) noexcept {
|
||||||
this->~value();
|
this->~value();
|
||||||
type = value_type::boolean;
|
type = value_type::boolean;
|
||||||
val.boolean = v;
|
val.boolean = v;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
inline value& setInteger(integer_t v) {
|
inline value& setInteger(integer_t v) noexcept {
|
||||||
this->~value();
|
this->~value();
|
||||||
type = value_type::integer;
|
type = value_type::integer;
|
||||||
val.integer = v;
|
val.integer = v;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
inline value& setNumber(number_t v) {
|
inline value& setNumber(number_t v) noexcept {
|
||||||
this->~value();
|
this->~value();
|
||||||
type = value_type::number;
|
type = value_type::number;
|
||||||
val.number = v;
|
val.number = v;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
inline value& setNone() {
|
inline value& setNone() noexcept {
|
||||||
this->~value();
|
this->~value();
|
||||||
type = value_type::none;
|
type = value_type::none;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
inline value& setString(std::string v) {
|
inline value& setString(std::string v) noexcept {
|
||||||
this->~value();
|
this->~value();
|
||||||
new(&val.string)std::unique_ptr<std::string>(
|
new(&val.string)std::unique_ptr<std::string>(
|
||||||
std::make_unique<std::string>(std::move(v)));
|
std::make_unique<std::string>(std::move(v)));
|
||||||
type = value_type::string;
|
type = value_type::string;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
inline value& setString(std::unique_ptr<std::string> v) {
|
inline value& setString(std::unique_ptr<std::string> v) noexcept {
|
||||||
this->~value();
|
this->~value();
|
||||||
new(&val.string)std::unique_ptr<std::string>(std::move(v));
|
new(&val.string)std::unique_ptr<std::string>(std::move(v));
|
||||||
type = value_type::string;
|
type = value_type::string;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
inline value& setList(std::shared_ptr<objects::List> ptr) {
|
inline value& setList(std::shared_ptr<objects::List> ptr) noexcept {
|
||||||
this->~value();
|
this->~value();
|
||||||
new(&val.list)std::shared_ptr<objects::List>(std::move(ptr));
|
new(&val.list)std::shared_ptr<objects::List>(std::move(ptr));
|
||||||
type = value_type::list;
|
type = value_type::list;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
inline value& setObject(std::shared_ptr<objects::Object> ptr) {
|
inline value& setObject(std::shared_ptr<objects::Object> ptr) noexcept {
|
||||||
this->~value();
|
this->~value();
|
||||||
new(&val.object)std::shared_ptr<objects::Object>(std::move(ptr));
|
new(&val.object)std::shared_ptr<objects::Object>(std::move(ptr));
|
||||||
type = value_type::object;
|
type = value_type::object;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
inline value& setBytes(std::shared_ptr<objects::Bytes> ptr) {
|
inline value& setBytes(std::shared_ptr<objects::Bytes> ptr) noexcept {
|
||||||
this->~value();
|
this->~value();
|
||||||
new(&val.bytes)std::shared_ptr<objects::Bytes>(std::move(ptr));
|
new(&val.bytes)std::shared_ptr<objects::Bytes>(std::move(ptr));
|
||||||
type = value_type::bytes;
|
type = value_type::bytes;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
value() : type(value_type::none) {}
|
value() noexcept : type(value_type::none) {}
|
||||||
|
|
||||||
/// @brief Constructor for fundamental types
|
/// @brief Constructor for fundamental types
|
||||||
template<typename T>
|
template<typename T>
|
||||||
value(T v, std::enable_if_t<std::is_fundamental<T>::value, int> = 0) {
|
value(T v, std::enable_if_t<std::is_fundamental<T>::value, int> = 0) noexcept {
|
||||||
this->operator=(v);
|
this->operator=(v);
|
||||||
}
|
}
|
||||||
value(std::string v) {
|
value(std::string v) noexcept {
|
||||||
this->operator=(std::move(v));
|
this->operator=(std::move(v));
|
||||||
}
|
}
|
||||||
value(std::shared_ptr<objects::Object> v) {
|
value(std::shared_ptr<objects::Object> v) noexcept {
|
||||||
this->operator=(std::move(v));
|
this->operator=(std::move(v));
|
||||||
}
|
}
|
||||||
value(std::shared_ptr<objects::List> v) {
|
value(std::shared_ptr<objects::List> v) noexcept {
|
||||||
this->operator=(std::move(v));
|
this->operator=(std::move(v));
|
||||||
}
|
}
|
||||||
value(std::shared_ptr<objects::Bytes> v) {
|
value(std::shared_ptr<objects::Bytes> v) noexcept {
|
||||||
this->operator=(std::move(v));
|
this->operator=(std::move(v));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,7 +205,7 @@ namespace dv {
|
|||||||
this->operator=(std::move(v));
|
this->operator=(std::move(v));
|
||||||
}
|
}
|
||||||
|
|
||||||
~value() {
|
~value() noexcept {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case value_type::object:
|
case value_type::object:
|
||||||
val.object.reset();
|
val.object.reset();
|
||||||
@ -478,28 +478,28 @@ namespace dv {
|
|||||||
|
|
||||||
bool has(const key_t& k) const;
|
bool has(const key_t& k) const;
|
||||||
|
|
||||||
size_t size() const;
|
size_t size() const noexcept;
|
||||||
|
|
||||||
size_t length() const {
|
size_t length() const noexcept {
|
||||||
return size();
|
return size();
|
||||||
}
|
}
|
||||||
inline bool empty() const {
|
inline bool empty() const noexcept {
|
||||||
return size() == 0;
|
return size() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool isString() const {
|
inline bool isString() const noexcept {
|
||||||
return type == value_type::string;
|
return type == value_type::string;
|
||||||
}
|
}
|
||||||
inline bool isObject() const {
|
inline bool isObject() const noexcept {
|
||||||
return type == value_type::object;
|
return type == value_type::object;
|
||||||
}
|
}
|
||||||
inline bool isList() const {
|
inline bool isList() const noexcept {
|
||||||
return type == value_type::list;
|
return type == value_type::list;
|
||||||
}
|
}
|
||||||
inline bool isInteger() const {
|
inline bool isInteger() const noexcept {
|
||||||
return type == value_type::integer;
|
return type == value_type::integer;
|
||||||
}
|
}
|
||||||
inline bool isNumber() const {
|
inline bool isNumber() const noexcept {
|
||||||
return type == value_type::number;
|
return type == value_type::number;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user