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)
|
||||
{
|
||||
switch (static_cast<value_t::type_t>(binary::read_long<int>(data))) {
|
||||
|
|
|
|||
|
|
@ -429,6 +429,10 @@ public:
|
|||
*/
|
||||
operator bool() const;
|
||||
|
||||
bool is_nonzero() const {
|
||||
return ! is_zero();
|
||||
}
|
||||
|
||||
bool is_realzero() const;
|
||||
bool is_zero() const;
|
||||
bool is_null() const {
|
||||
|
|
@ -892,6 +896,7 @@ public:
|
|||
* stream or a character pointer, and it may be serialized to an
|
||||
* output stream. The methods used are:
|
||||
*/
|
||||
void read(std::istream& in);
|
||||
void read(const char *& data);
|
||||
void write(std::ostream& out) const;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue