module uim.json.classes.number; import uim.json; class DJSONNumber : DJSONValue { private: double _value = 0; public: this() { } this(double value) { this.value = value; } this(string value) { this.value = value; } this(DJSONNumber value) { this.value = value; } alias value this; @property override size_t length() { return 1; } @property void value(int newValue) { _value = newValue; } @property void value(double newValue) { _value = newValue; } @property void value(string newValue) { import std.conv; value = to!double(newValue); } @property void value(DJSONNumber newValue) { value = newValue.value; } @property void value(DJSONValue newValue) { value = newValue.toString; } @property double value() { return _value; } @property double get() { return _value; } override DJSONValue dup() { return JSONNumber(_value); } override string toString() { import std.conv; return to!string(_value); } } auto JSONNumber() { return new DJSONNumber(); } auto JSONNumber(T)(T value) { return new DJSONNumber(value); }