Added is_nonzero and a stream-based read() method to value_t.
This commit is contained in:
parent
2170703310
commit
71e7157a65
2 changed files with 33 additions and 0 deletions
28
src/value.cc
28
src/value.cc
|
|
@ -1747,6 +1747,34 @@ void value_t::print(std::ostream& out, const bool relaxed) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void value_t::read(std::istream& in)
|
||||||
|
{
|
||||||
|
switch (static_cast<value_t::type_t>(binary::read_long<int>(in))) {
|
||||||
|
case BOOLEAN:
|
||||||
|
set_boolean(binary::read_bool(in));
|
||||||
|
break;
|
||||||
|
case INTEGER:
|
||||||
|
set_long(binary::read_long<long>(in));
|
||||||
|
break;
|
||||||
|
case DATETIME:
|
||||||
|
set_datetime(parse_datetime(binary::read_string(in)));
|
||||||
|
break;
|
||||||
|
case DATE:
|
||||||
|
set_date(parse_date(binary::read_string(in)));
|
||||||
|
break;
|
||||||
|
case AMOUNT: {
|
||||||
|
amount_t temp;
|
||||||
|
temp.read(in);
|
||||||
|
set_amount(temp);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw_(value_error, "Cannot read " << label() << " from a stream");
|
||||||
|
}
|
||||||
|
|
||||||
void value_t::read(const char *& data)
|
void value_t::read(const char *& data)
|
||||||
{
|
{
|
||||||
switch (static_cast<value_t::type_t>(binary::read_long<int>(data))) {
|
switch (static_cast<value_t::type_t>(binary::read_long<int>(data))) {
|
||||||
|
|
|
||||||
|
|
@ -429,6 +429,10 @@ public:
|
||||||
*/
|
*/
|
||||||
operator bool() const;
|
operator bool() const;
|
||||||
|
|
||||||
|
bool is_nonzero() const {
|
||||||
|
return ! is_zero();
|
||||||
|
}
|
||||||
|
|
||||||
bool is_realzero() const;
|
bool is_realzero() const;
|
||||||
bool is_zero() const;
|
bool is_zero() const;
|
||||||
bool is_null() const {
|
bool is_null() const {
|
||||||
|
|
@ -892,6 +896,7 @@ public:
|
||||||
* stream or a character pointer, and it may be serialized to an
|
* stream or a character pointer, and it may be serialized to an
|
||||||
* output stream. The methods used are:
|
* output stream. The methods used are:
|
||||||
*/
|
*/
|
||||||
|
void read(std::istream& in);
|
||||||
void read(const char *& data);
|
void read(const char *& data);
|
||||||
void write(std::ostream& out) const;
|
void write(std::ostream& out) const;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue