diff options
author | rsgowman <rgowman@google.com> | 2018-02-22 09:42:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-22 09:42:40 -0500 |
commit | 6ce954a791a73abc8d32765e2695ed153e120c47 (patch) | |
tree | e9fe172b309156e2e4bc147c0452ea712a0102b5 /Firestore/core/src/firebase/firestore/model | |
parent | 41dcd4bd17708779b45982d9547215924f2e5fd5 (diff) |
Serialize (and deserialize) int64 values (#818) (#829)
Diffstat (limited to 'Firestore/core/src/firebase/firestore/model')
-rw-r--r-- | Firestore/core/src/firebase/firestore/model/field_value.cc | 12 | ||||
-rw-r--r-- | Firestore/core/src/firebase/firestore/model/field_value.h | 8 |
2 files changed, 13 insertions, 7 deletions
diff --git a/Firestore/core/src/firebase/firestore/model/field_value.cc b/Firestore/core/src/firebase/firestore/model/field_value.cc index 012a90d..03cf1d4 100644 --- a/Firestore/core/src/firebase/firestore/model/field_value.cc +++ b/Firestore/core/src/firebase/firestore/model/field_value.cc @@ -45,9 +45,9 @@ namespace { */ bool Comparable(Type lhs, Type rhs) { switch (lhs) { - case Type::Long: + case Type::Integer: case Type::Double: - return rhs == Type::Long || rhs == Type::Double; + return rhs == Type::Integer || rhs == Type::Double; case Type::Timestamp: case Type::ServerTimestamp: return rhs == Type::Timestamp || rhs == Type::ServerTimestamp; @@ -78,7 +78,7 @@ FieldValue& FieldValue::operator=(const FieldValue& value) { case Type::Boolean: boolean_value_ = value.boolean_value_; break; - case Type::Long: + case Type::Integer: integer_value_ = value.integer_value_; break; case Type::Double: @@ -179,7 +179,7 @@ const FieldValue& FieldValue::NanValue() { FieldValue FieldValue::IntegerValue(int64_t value) { FieldValue result; - result.SwitchTo(Type::Long); + result.SwitchTo(Type::Integer); result.integer_value_ = value; return result; } @@ -304,8 +304,8 @@ bool operator<(const FieldValue& lhs, const FieldValue& rhs) { return false; case Type::Boolean: return Comparator<bool>()(lhs.boolean_value_, rhs.boolean_value_); - case Type::Long: - if (rhs.type() == Type::Long) { + case Type::Integer: + if (rhs.type() == Type::Integer) { return Comparator<int64_t>()(lhs.integer_value_, rhs.integer_value_); } else { return util::CompareMixedNumber(rhs.double_value_, diff --git a/Firestore/core/src/firebase/firestore/model/field_value.h b/Firestore/core/src/firebase/firestore/model/field_value.h index e547be3..15945b9 100644 --- a/Firestore/core/src/firebase/firestore/model/field_value.h +++ b/Firestore/core/src/firebase/firestore/model/field_value.h @@ -28,6 +28,7 @@ #include "Firestore/core/src/firebase/firestore/model/database_id.h" #include "Firestore/core/src/firebase/firestore/model/document_key.h" #include "Firestore/core/src/firebase/firestore/model/timestamp.h" +#include "Firestore/core/src/firebase/firestore/util/firebase_assert.h" namespace firebase { namespace firestore { @@ -63,7 +64,7 @@ class FieldValue { enum class Type { Null, // Null Boolean, // Boolean - Long, // Number type starts here + Integer, // Number type starts here Double, Timestamp, // Timestamp type starts here ServerTimestamp, @@ -95,6 +96,11 @@ class FieldValue { return tag_; } + int64_t integer_value() const { + FIREBASE_ASSERT(tag_ == Type::Integer); + return integer_value_; + } + /** factory methods. */ static const FieldValue& NullValue(); static const FieldValue& TrueValue(); |