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

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

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

Powered by Google App Engine
This is Rietveld 408576698