| OLD | NEW |
| 1 // Protocol Buffers - Google's data interchange format | 1 // Protocol Buffers - Google's data interchange format |
| 2 // Copyright 2008 Google Inc. All rights reserved. | 2 // Copyright 2008 Google Inc. All rights reserved. |
| 3 // https://developers.google.com/protocol-buffers/ | 3 // https://developers.google.com/protocol-buffers/ |
| 4 // | 4 // |
| 5 // Redistribution and use in source and binary forms, with or without | 5 // Redistribution and use in source and binary forms, with or without |
| 6 // modification, are permitted provided that the following conditions are | 6 // modification, are permitted provided that the following conditions are |
| 7 // met: | 7 // met: |
| 8 // | 8 // |
| 9 // * Redistributions of source code must retain the above copyright | 9 // * Redistributions of source code must retain the above copyright |
| 10 // notice, this list of conditions and the following disclaimer. | 10 // notice, this list of conditions and the following disclaimer. |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 #include <google/protobuf/stubs/logging.h> | 45 #include <google/protobuf/stubs/logging.h> |
| 46 | 46 |
| 47 namespace google { | 47 namespace google { |
| 48 namespace protobuf { | 48 namespace protobuf { |
| 49 namespace io { | 49 namespace io { |
| 50 class CodedInputStream; // coded_stream.h | 50 class CodedInputStream; // coded_stream.h |
| 51 class CodedOutputStream; // coded_stream.h | 51 class CodedOutputStream; // coded_stream.h |
| 52 class ZeroCopyInputStream; // zero_copy_stream.h | 52 class ZeroCopyInputStream; // zero_copy_stream.h |
| 53 } | 53 } |
| 54 namespace internal { | 54 namespace internal { |
| 55 class InternalMetadataWithArena; // metadata.h | |
| 56 class WireFormat; // wire_format.h | 55 class WireFormat; // wire_format.h |
| 57 class MessageSetFieldSkipperUsingCord; | 56 class MessageSetFieldSkipperUsingCord; |
| 58 // extension_set_heavy.cc | 57 // extension_set_heavy.cc |
| 59 } | 58 } |
| 60 | 59 |
| 61 class Message; // message.h | 60 class Message; // message.h |
| 62 class UnknownField; // below | 61 class UnknownField; // below |
| 63 | 62 |
| 64 // An UnknownFieldSet contains fields that were encountered while parsing a | 63 // An UnknownFieldSet contains fields that were encountered while parsing a |
| 65 // message but were not defined by its type. Keeping track of these can be | 64 // message but were not defined by its type. Keeping track of these can be |
| (...skipping 20 matching lines...) Expand all Loading... |
| 86 | 85 |
| 87 // Is this set empty? | 86 // Is this set empty? |
| 88 inline bool empty() const; | 87 inline bool empty() const; |
| 89 | 88 |
| 90 // Merge the contents of some other UnknownFieldSet with this one. | 89 // Merge the contents of some other UnknownFieldSet with this one. |
| 91 void MergeFrom(const UnknownFieldSet& other); | 90 void MergeFrom(const UnknownFieldSet& other); |
| 92 | 91 |
| 93 // Similar to above, but this function will destroy the contents of other. | 92 // Similar to above, but this function will destroy the contents of other. |
| 94 void MergeFromAndDestroy(UnknownFieldSet* other); | 93 void MergeFromAndDestroy(UnknownFieldSet* other); |
| 95 | 94 |
| 96 // Merge the contents an UnknownFieldSet with the UnknownFieldSet in | |
| 97 // *metadata, if there is one. If *metadata doesn't have an UnknownFieldSet | |
| 98 // then add one to it and make it be a copy of the first arg. | |
| 99 static void MergeToInternalMetdata( | |
| 100 const UnknownFieldSet& other, | |
| 101 internal::InternalMetadataWithArena* metadata); | |
| 102 | |
| 103 // Swaps the contents of some other UnknownFieldSet with this one. | 95 // Swaps the contents of some other UnknownFieldSet with this one. |
| 104 inline void Swap(UnknownFieldSet* x); | 96 inline void Swap(UnknownFieldSet* x); |
| 105 | 97 |
| 106 // Computes (an estimate of) the total number of bytes currently used for | 98 // Computes (an estimate of) the total number of bytes currently used for |
| 107 // storing the unknown fields in memory. Does NOT include | 99 // storing the unknown fields in memory. Does NOT include |
| 108 // sizeof(*this) in the calculation. | 100 // sizeof(*this) in the calculation. |
| 109 int SpaceUsedExcludingSelf() const; | 101 int SpaceUsedExcludingSelf() const; |
| 110 | 102 |
| 111 // Version of SpaceUsed() including sizeof(*this). | 103 // Version of SpaceUsed() including sizeof(*this). |
| 112 int SpaceUsed() const; | 104 int SpaceUsed() const; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 class LIBPROTOBUF_EXPORT UnknownField { | 168 class LIBPROTOBUF_EXPORT UnknownField { |
| 177 public: | 169 public: |
| 178 enum Type { | 170 enum Type { |
| 179 TYPE_VARINT, | 171 TYPE_VARINT, |
| 180 TYPE_FIXED32, | 172 TYPE_FIXED32, |
| 181 TYPE_FIXED64, | 173 TYPE_FIXED64, |
| 182 TYPE_LENGTH_DELIMITED, | 174 TYPE_LENGTH_DELIMITED, |
| 183 TYPE_GROUP | 175 TYPE_GROUP |
| 184 }; | 176 }; |
| 185 | 177 |
| 186 // The field's field number, as seen on the wire. | 178 // The field's tag number, as seen on the wire. |
| 187 inline int number() const; | 179 inline int number() const; |
| 188 | 180 |
| 189 // The field type. | 181 // The field type. |
| 190 inline Type type() const; | 182 inline Type type() const; |
| 191 | 183 |
| 192 // Accessors ------------------------------------------------------- | 184 // Accessors ------------------------------------------------------- |
| 193 // Each method works only for UnknownFields of the corresponding type. | 185 // Each method works only for UnknownFields of the corresponding type. |
| 194 | 186 |
| 195 inline uint64 varint() const; | 187 inline uint64 varint() const; |
| 196 inline uint32 fixed32() const; | 188 inline uint32 fixed32() const; |
| 197 inline uint64 fixed64() const; | 189 inline uint64 fixed64() const; |
| 198 inline const string& length_delimited() const; | 190 inline const string& length_delimited() const; |
| 199 inline const UnknownFieldSet& group() const; | 191 inline const UnknownFieldSet& group() const; |
| 200 | 192 |
| 201 inline void set_varint(uint64 value); | 193 inline void set_varint(uint64 value); |
| 202 inline void set_fixed32(uint32 value); | 194 inline void set_fixed32(uint32 value); |
| 203 inline void set_fixed64(uint64 value); | 195 inline void set_fixed64(uint64 value); |
| 204 inline void set_length_delimited(const string& value); | 196 inline void set_length_delimited(const string& value); |
| 205 inline string* mutable_length_delimited(); | 197 inline string* mutable_length_delimited(); |
| 206 inline UnknownFieldSet* mutable_group(); | 198 inline UnknownFieldSet* mutable_group(); |
| 207 | 199 |
| 208 // Serialization API. | 200 // Serialization API. |
| 209 // These methods can take advantage of the underlying implementation and may | 201 // These methods can take advantage of the underlying implementation and may |
| 210 // archieve a better performance than using getters to retrieve the data and | 202 // archieve a better performance than using getters to retrieve the data and |
| 211 // do the serialization yourself. | 203 // do the serialization yourself. |
| 212 void SerializeLengthDelimitedNoTag(io::CodedOutputStream* output) const; | 204 void SerializeLengthDelimitedNoTag(io::CodedOutputStream* output) const; |
| 213 uint8* SerializeLengthDelimitedNoTagToArray(uint8* target) const; | 205 uint8* SerializeLengthDelimitedNoTagToArray(uint8* target) const; |
| 214 | 206 |
| 215 inline size_t GetLengthDelimitedSize() const; | 207 inline int GetLengthDelimitedSize() const; |
| 216 | 208 |
| 217 private: | 209 private: |
| 218 friend class UnknownFieldSet; | 210 friend class UnknownFieldSet; |
| 219 | 211 |
| 220 // If this UnknownField contains a pointer, delete it. | 212 // If this UnknownField contains a pointer, delete it. |
| 221 void Delete(); | 213 void Delete(); |
| 222 | 214 |
| 223 // Reset all the underlying pointers to NULL. A special function to be only | 215 // Reset all the underlying pointers to NULL. A special function to be only |
| 224 // used while merging from a temporary UFS. | 216 // used while merging from a temporary UFS. |
| 225 void Reset(); | 217 void Reset(); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 242 uint32 fixed32_; | 234 uint32 fixed32_; |
| 243 uint64 fixed64_; | 235 uint64 fixed64_; |
| 244 mutable union LengthDelimited length_delimited_; | 236 mutable union LengthDelimited length_delimited_; |
| 245 UnknownFieldSet* group_; | 237 UnknownFieldSet* group_; |
| 246 }; | 238 }; |
| 247 }; | 239 }; |
| 248 | 240 |
| 249 // =================================================================== | 241 // =================================================================== |
| 250 // inline implementations | 242 // inline implementations |
| 251 | 243 |
| 252 inline UnknownFieldSet::UnknownFieldSet() : fields_(NULL) {} | |
| 253 | |
| 254 inline UnknownFieldSet::~UnknownFieldSet() { Clear(); } | |
| 255 | |
| 256 inline void UnknownFieldSet::ClearAndFreeMemory() { Clear(); } | |
| 257 | |
| 258 inline void UnknownFieldSet::Clear() { | 244 inline void UnknownFieldSet::Clear() { |
| 259 if (fields_ != NULL) { | 245 if (fields_) { |
| 260 ClearFallback(); | 246 ClearFallback(); |
| 261 } | 247 } |
| 262 } | 248 } |
| 263 | 249 |
| 264 inline bool UnknownFieldSet::empty() const { | 250 inline bool UnknownFieldSet::empty() const { |
| 265 // Invariant: fields_ is never empty if present. | 251 // Invariant: fields_ is never empty if present. |
| 266 return !fields_; | 252 return !fields_; |
| 267 } | 253 } |
| 268 | 254 |
| 269 inline void UnknownFieldSet::Swap(UnknownFieldSet* x) { | 255 inline void UnknownFieldSet::Swap(UnknownFieldSet* x) { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 331 } | 317 } |
| 332 inline string* UnknownField::mutable_length_delimited() { | 318 inline string* UnknownField::mutable_length_delimited() { |
| 333 assert(type() == TYPE_LENGTH_DELIMITED); | 319 assert(type() == TYPE_LENGTH_DELIMITED); |
| 334 return length_delimited_.string_value_; | 320 return length_delimited_.string_value_; |
| 335 } | 321 } |
| 336 inline UnknownFieldSet* UnknownField::mutable_group() { | 322 inline UnknownFieldSet* UnknownField::mutable_group() { |
| 337 assert(type() == TYPE_GROUP); | 323 assert(type() == TYPE_GROUP); |
| 338 return group_; | 324 return group_; |
| 339 } | 325 } |
| 340 | 326 |
| 341 inline size_t UnknownField::GetLengthDelimitedSize() const { | 327 inline int UnknownField::GetLengthDelimitedSize() const { |
| 342 GOOGLE_DCHECK_EQ(TYPE_LENGTH_DELIMITED, type()); | 328 GOOGLE_DCHECK_EQ(TYPE_LENGTH_DELIMITED, type()); |
| 343 return length_delimited_.string_value_->size(); | 329 return static_cast<int>(length_delimited_.string_value_->size()); |
| 344 } | 330 } |
| 345 | 331 |
| 346 inline void UnknownField::SetType(Type type) { | 332 inline void UnknownField::SetType(Type type) { |
| 347 type_ = type; | 333 type_ = type; |
| 348 } | 334 } |
| 349 | 335 |
| 350 | 336 |
| 351 } // namespace protobuf | 337 } // namespace protobuf |
| 352 | 338 |
| 353 } // namespace google | 339 } // namespace google |
| 354 #endif // GOOGLE_PROTOBUF_UNKNOWN_FIELD_SET_H__ | 340 #endif // GOOGLE_PROTOBUF_UNKNOWN_FIELD_SET_H__ |
| OLD | NEW |