summaryrefslogtreecommitdiff
path: root/libs/protoutil/src/ProtoOutputStream.cpp
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2018-10-26 13:04:41 -0700
committerColin Cross <ccross@android.com>2018-11-02 11:35:48 -0700
commitfa6bc27df0820a362e0ceae7f9ea73e8a058fe47 (patch)
treecbd6120259c6661d9fbefb32b8a69a46e6ad6096 /libs/protoutil/src/ProtoOutputStream.cpp
parente7908d7b624591c4cae55e66f5e603d061addd8f (diff)
Adapt to google::protobuf::uint64 type change
Protobuf 3.5.2 redefines google::protobuf::uint64 from unsigned long long to uint64_t, which is sometimes unsigned long and sometimes unsigned long long. Use PRIu64 to print it, and add an implementation of ProtoOutputStream::write for long. Bug: 117607748 Test: m checkbuild Change-Id: I48912f58e2f63f4a98c3aefaa4f78cc2c719bb68
Diffstat (limited to 'libs/protoutil/src/ProtoOutputStream.cpp')
-rw-r--r--libs/protoutil/src/ProtoOutputStream.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/libs/protoutil/src/ProtoOutputStream.cpp b/libs/protoutil/src/ProtoOutputStream.cpp
index 22b9709ef066..fec20bf8061a 100644
--- a/libs/protoutil/src/ProtoOutputStream.cpp
+++ b/libs/protoutil/src/ProtoOutputStream.cpp
@@ -131,6 +131,34 @@ ProtoOutputStream::write(uint64_t fieldId, int val)
}
bool
+ProtoOutputStream::write(uint64_t fieldId, long val)
+{
+ if (mCompact) return false;
+ const uint32_t id = (uint32_t)fieldId;
+ switch (fieldId & FIELD_TYPE_MASK) {
+ case FIELD_TYPE_DOUBLE: writeDoubleImpl(id, (double)val); break;
+ case FIELD_TYPE_FLOAT: writeFloatImpl(id, (float)val); break;
+ case FIELD_TYPE_INT64: writeInt64Impl(id, (long long)val); break;
+ case FIELD_TYPE_UINT64: writeUint64Impl(id, (uint64_t)val); break;
+ case FIELD_TYPE_INT32: writeInt32Impl(id, (int)val); break;
+ case FIELD_TYPE_FIXED64: writeFixed64Impl(id, (uint64_t)val); break;
+ case FIELD_TYPE_FIXED32: writeFixed32Impl(id, (uint32_t)val); break;
+ case FIELD_TYPE_UINT32: writeUint32Impl(id, (uint32_t)val); break;
+ case FIELD_TYPE_SFIXED32: writeSFixed32Impl(id, (int)val); break;
+ case FIELD_TYPE_SFIXED64: writeSFixed64Impl(id, (long long)val); break;
+ case FIELD_TYPE_SINT32: writeZigzagInt32Impl(id, (int)val); break;
+ case FIELD_TYPE_SINT64: writeZigzagInt64Impl(id, (long long)val); break;
+ case FIELD_TYPE_ENUM: writeEnumImpl(id, (int)val); break;
+ case FIELD_TYPE_BOOL: writeBoolImpl(id, val != 0); break;
+ default:
+ ALOGW("Field type %d is not supported when writing long val.",
+ (int)((fieldId & FIELD_TYPE_MASK) >> FIELD_TYPE_SHIFT));
+ return false;
+ }
+ return true;
+}
+
+bool
ProtoOutputStream::write(uint64_t fieldId, long long val)
{
if (mCompact) return false;