Celestia
1// value.cpp
2//
3// Copyright (C) 2001-2019, the Celestia Development Team
4// Original version by Chris Laurel <claurel@gmail.com>
5//
6// This program is free software; you can redistribute it and/or
7// modify it under the terms of the GNU General Public License
8// as published by the Free Software Foundation; either version 2
9// of the License, or (at your option) any later version.
10
11#include "value.h"
12
13/****** Value method implementations *******/
14
15Value::Value(Value&& other) noexcept
16: type(other.type),
17units(other.units),
18data(other.data)
19{
20other.type = ValueType::NullType;
21}
22
23
24Value& Value::operator=(Value&& other) noexcept
25{
26if (this != &other)
27{
28switch (type)
29{
30case ValueType::StringType:
31delete data.s; //NOSONAR
32break;
33case ValueType::ArrayType:
34delete data.a; //NOSONAR
35break;
36case ValueType::HashType:
37delete data.h; //NOSONAR
38break;
39default:
40break;
41}
42type = other.type;
43units = other.units;
44data = other.data;
45other.type = ValueType::NullType;
46}
47
48return *this;
49}
50
51
52Value::~Value()
53{
54switch (type)
55{
56case ValueType::StringType:
57delete data.s;
58break;
59case ValueType::ArrayType:
60delete data.a;
61break;
62case ValueType::HashType:
63delete data.h;
64break;
65default:
66break;
67}
68}
69