@@ -66,6 +66,8 @@ class Writer {
66
66
void EncodeBool (bool bool_value);
67
67
void EncodeInteger (int64_t integer_value);
68
68
69
+ void EncodeString (const std::string& string_value);
70
+
69
71
private:
70
72
/* *
71
73
* Encodes a "varint" to the output stream.
@@ -167,9 +169,9 @@ int64_t DecodeInteger(pb_istream_t* stream) {
167
169
return DecodeVarint (stream);
168
170
}
169
171
170
- void EncodeString (pb_ostream_t * stream, const std::string& string_value) {
172
+ void Writer:: EncodeString (const std::string& string_value) {
171
173
bool status = pb_encode_string (
172
- stream , reinterpret_cast <const pb_byte_t *>(string_value.c_str ()),
174
+ stream_ , reinterpret_cast <const pb_byte_t *>(string_value.c_str ()),
173
175
string_value.length ());
174
176
if (!status) {
175
177
// TODO(rsgowman): figure out error handling
@@ -238,13 +240,9 @@ void EncodeFieldValueImpl(pb_ostream_t* raw_stream,
238
240
break ;
239
241
240
242
case FieldValue::Type::String:
241
- status = pb_encode_tag (raw_stream, PB_WT_STRING,
242
- google_firestore_v1beta1_Value_string_value_tag);
243
- if (!status) {
244
- // TODO(rsgowman): figure out error handling
245
- abort ();
246
- }
247
- EncodeString (raw_stream, field_value.string_value ());
243
+ stream.EncodeTag (PB_WT_STRING,
244
+ google_firestore_v1beta1_Value_string_value_tag);
245
+ stream.EncodeString (field_value.string_value ());
248
246
break ;
249
247
250
248
case FieldValue::Type::Object:
@@ -423,27 +421,24 @@ FieldValue DecodeNestedFieldValue(pb_istream_t* stream) {
423
421
*
424
422
* @param kv The individual key/value pair to encode.
425
423
*/
426
- void EncodeFieldsEntry (pb_ostream_t * stream ,
424
+ void EncodeFieldsEntry (pb_ostream_t * raw_stream ,
427
425
const std::pair<std::string, FieldValue>& kv) {
426
+ Writer stream (raw_stream);
427
+
428
428
// Encode the key (string)
429
- bool status =
430
- pb_encode_tag (stream, PB_WT_STRING,
431
- google_firestore_v1beta1_MapValue_FieldsEntry_key_tag);
432
- if (!status) {
433
- // TODO(rsgowman): figure out error handling
434
- abort ();
435
- }
436
- EncodeString (stream, kv.first );
429
+ stream.EncodeTag (PB_WT_STRING,
430
+ google_firestore_v1beta1_MapValue_FieldsEntry_key_tag);
431
+ stream.EncodeString (kv.first );
437
432
438
433
// Encode the value (FieldValue)
439
- status =
440
- pb_encode_tag (stream , PB_WT_STRING,
434
+ bool status =
435
+ pb_encode_tag (raw_stream , PB_WT_STRING,
441
436
google_firestore_v1beta1_MapValue_FieldsEntry_value_tag);
442
437
if (!status) {
443
438
// TODO(rsgowman): figure out error handling
444
439
abort ();
445
440
}
446
- EncodeNestedFieldValue (stream , kv.second );
441
+ EncodeNestedFieldValue (raw_stream , kv.second );
447
442
}
448
443
449
444
std::pair<std::string, FieldValue> DecodeFieldsEntry (pb_istream_t * stream) {
0 commit comments