Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: third_party/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.h

Issue 2590803003: Revert "third_party/protobuf: Update to HEAD (83d681ee2c)" (Closed)
Patch Set: Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 StringPiece value); 115 StringPiece value);
116 virtual DefaultValueObjectWriter* RenderBytes(StringPiece name, 116 virtual DefaultValueObjectWriter* RenderBytes(StringPiece name,
117 StringPiece value); 117 StringPiece value);
118 118
119 virtual DefaultValueObjectWriter* RenderNull(StringPiece name); 119 virtual DefaultValueObjectWriter* RenderNull(StringPiece name);
120 120
121 // Register the callback for scrubbing of fields. Owership of 121 // Register the callback for scrubbing of fields. Owership of
122 // field_scrub_callback pointer is also transferred to this class 122 // field_scrub_callback pointer is also transferred to this class
123 void RegisterFieldScrubCallBack(FieldScrubCallBackPtr field_scrub_callback); 123 void RegisterFieldScrubCallBack(FieldScrubCallBackPtr field_scrub_callback);
124 124
125 // If set to true, empty lists are suppressed from output when default values
126 // are written.
127 void set_suppress_empty_list(bool value) { suppress_empty_list_ = value; }
128
129 private: 125 private:
130 enum NodeKind { 126 enum NodeKind {
131 PRIMITIVE = 0, 127 PRIMITIVE = 0,
132 OBJECT = 1, 128 OBJECT = 1,
133 LIST = 2, 129 LIST = 2,
134 MAP = 3, 130 MAP = 3,
135 }; 131 };
136 132
137 // "Node" represents a node in the tree that holds the input of 133 // "Node" represents a node in the tree that holds the input of
138 // DefaultValueObjectWriter. 134 // DefaultValueObjectWriter.
139 class LIBPROTOBUF_EXPORT Node { 135 class LIBPROTOBUF_EXPORT Node {
140 public: 136 public:
141 Node(const string& name, const google::protobuf::Type* type, NodeKind kind, 137 Node(const string& name, const google::protobuf::Type* type, NodeKind kind,
142 const DataPiece& data, bool is_placeholder, 138 const DataPiece& data, bool is_placeholder, const vector<string>& path,
143 const std::vector<string>& path, bool suppress_empty_list,
144 FieldScrubCallBack* field_scrub_callback); 139 FieldScrubCallBack* field_scrub_callback);
145 virtual ~Node() { 140 virtual ~Node() {
146 for (int i = 0; i < children_.size(); ++i) { 141 for (int i = 0; i < children_.size(); ++i) {
147 delete children_[i]; 142 delete children_[i];
148 } 143 }
149 } 144 }
150 145
151 // Adds a child to this node. Takes ownership of this child. 146 // Adds a child to this node. Takes ownership of this child.
152 void AddChild(Node* child) { children_.push_back(child); } 147 void AddChild(Node* child) { children_.push_back(child); }
153 148
154 // Finds the child given its name. 149 // Finds the child given its name.
155 Node* FindChild(StringPiece name); 150 Node* FindChild(StringPiece name);
156 151
157 // Populates children of this Node based on its type. If there are already 152 // Populates children of this Node based on its type. If there are already
158 // children created, they will be merged to the result. Caller should pass 153 // children created, they will be merged to the result. Caller should pass
159 // in TypeInfo for looking up types of the children. 154 // in TypeInfo for looking up types of the children.
160 void PopulateChildren(const TypeInfo* typeinfo); 155 void PopulateChildren(const TypeInfo* typeinfo);
161 156
162 // If this node is a leaf (has data), writes the current node to the 157 // If this node is a leaf (has data), writes the current node to the
163 // ObjectWriter; if not, then recursively writes the children to the 158 // ObjectWriter; if not, then recursively writes the children to the
164 // ObjectWriter. 159 // ObjectWriter.
165 void WriteTo(ObjectWriter* ow); 160 void WriteTo(ObjectWriter* ow);
166 161
167 // Accessors 162 // Accessors
168 const string& name() const { return name_; } 163 const string& name() const { return name_; }
169 164
170 const std::vector<string>& path() const { return path_; } 165 const vector<string>& path() const { return path_; }
171 166
172 const google::protobuf::Type* type() const { return type_; } 167 const google::protobuf::Type* type() const { return type_; }
173 168
174 void set_type(const google::protobuf::Type* type) { type_ = type; } 169 void set_type(const google::protobuf::Type* type) { type_ = type; }
175 170
176 NodeKind kind() const { return kind_; } 171 NodeKind kind() const { return kind_; }
177 172
178 int number_of_children() const { return children_.size(); } 173 int number_of_children() const { return children_.size(); }
179 174
180 void set_data(const DataPiece& data) { data_ = data; } 175 void set_data(const DataPiece& data) { data_ = data; }
(...skipping 29 matching lines...) Expand all
210 std::vector<Node*> children_; 205 std::vector<Node*> children_;
211 // Whether this node is a placeholder for an object or list automatically 206 // Whether this node is a placeholder for an object or list automatically
212 // generated when creating the parent node. Should be set to false after 207 // generated when creating the parent node. Should be set to false after
213 // the parent node's StartObject()/StartList() method is called with this 208 // the parent node's StartObject()/StartList() method is called with this
214 // node's name. 209 // node's name.
215 bool is_placeholder_; 210 bool is_placeholder_;
216 211
217 // Path of the field of this node 212 // Path of the field of this node
218 std::vector<string> path_; 213 std::vector<string> path_;
219 214
220 // Whether to suppress empty list output.
221 bool suppress_empty_list_;
222
223 // Pointer to function for determining whether a field needs to be scrubbed 215 // Pointer to function for determining whether a field needs to be scrubbed
224 // or not. This callback is owned by the creator of this node. 216 // or not. This callback is owned by the creator of this node.
225 FieldScrubCallBack* field_scrub_callback_; 217 FieldScrubCallBack* field_scrub_callback_;
226 218
227 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Node); 219 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Node);
228 }; 220 };
229 221
230 // Populates children of "node" if it is an "any" Node and its real type has 222 // Populates children of "node" if it is an "any" Node and its real type has
231 // been given. 223 // been given.
232 void MaybePopulateChildrenOfAny(Node* node); 224 void MaybePopulateChildrenOfAny(Node* node);
(...skipping 16 matching lines...) Expand all
249 const TypeInfo* typeinfo); 241 const TypeInfo* typeinfo);
250 242
251 // Type information for all the types used in the descriptor. Used to find 243 // Type information for all the types used in the descriptor. Used to find
252 // google::protobuf::Type of nested messages/enums. 244 // google::protobuf::Type of nested messages/enums.
253 const TypeInfo* typeinfo_; 245 const TypeInfo* typeinfo_;
254 // Whether the TypeInfo object is owned by this class. 246 // Whether the TypeInfo object is owned by this class.
255 bool own_typeinfo_; 247 bool own_typeinfo_;
256 // google::protobuf::Type of the root message type. 248 // google::protobuf::Type of the root message type.
257 const google::protobuf::Type& type_; 249 const google::protobuf::Type& type_;
258 // Holds copies of strings passed to RenderString. 250 // Holds copies of strings passed to RenderString.
259 std::vector<string*> string_values_; 251 vector<string*> string_values_;
260 252
261 // The current Node. Owned by its parents. 253 // The current Node. Owned by its parents.
262 Node* current_; 254 Node* current_;
263 // The root Node. 255 // The root Node.
264 google::protobuf::scoped_ptr<Node> root_; 256 google::protobuf::scoped_ptr<Node> root_;
265 // The stack to hold the path of Nodes from current_ to root_; 257 // The stack to hold the path of Nodes from current_ to root_;
266 std::stack<Node*> stack_; 258 std::stack<Node*> stack_;
267 259
268 // Whether to suppress output of empty lists.
269 bool suppress_empty_list_;
270
271 // Unique Pointer to function for determining whether a field needs to be 260 // Unique Pointer to function for determining whether a field needs to be
272 // scrubbed or not. 261 // scrubbed or not.
273 FieldScrubCallBackPtr field_scrub_callback_; 262 FieldScrubCallBackPtr field_scrub_callback_;
274 263
275 ObjectWriter* ow_; 264 ObjectWriter* ow_;
276 265
277 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(DefaultValueObjectWriter); 266 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(DefaultValueObjectWriter);
278 }; 267 };
279 268
280 } // namespace converter 269 } // namespace converter
281 } // namespace util 270 } // namespace util
282 } // namespace protobuf 271 } // namespace protobuf
283 272
284 } // namespace google 273 } // namespace google
285 #endif // GOOGLE_PROTOBUF_UTIL_CONVERTER_DEFAULT_VALUE_OBJECTWRITER_H__ 274 #endif // GOOGLE_PROTOBUF_UTIL_CONVERTER_DEFAULT_VALUE_OBJECTWRITER_H__
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698