| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of protobuf; | 5 part of protobuf; |
| 6 | 6 |
| 7 typedef GeneratedMessage CreateBuilderFunc(); | 7 typedef GeneratedMessage CreateBuilderFunc(); |
| 8 typedef Object MakeDefaultFunc(); | 8 typedef Object MakeDefaultFunc(); |
| 9 typedef ProtobufEnum ValueOfFunc(int value); | 9 typedef ProtobufEnum ValueOfFunc(int value); |
| 10 | 10 |
| (...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 867 var value = extension.makeDefault(); | 867 var value = extension.makeDefault(); |
| 868 if (value is List) { | 868 if (value is List) { |
| 869 _setExtension(extension, value); | 869 _setExtension(extension, value); |
| 870 } else { | 870 } else { |
| 871 _extensions.remove(extension.tagNumber); | 871 _extensions.remove(extension.tagNumber); |
| 872 } | 872 } |
| 873 } | 873 } |
| 874 | 874 |
| 875 void clearField(int tagNumber) { | 875 void clearField(int tagNumber) { |
| 876 _fieldValues.remove(tagNumber); | 876 _fieldValues.remove(tagNumber); |
| 877 // Restore the default value for the field. | |
| 878 // For repeated fields, the default is an empty list. | |
| 879 // For required/optional fields, the BuilderInfo contains the initializer. | |
| 880 int fieldType = _getFieldType(tagNumber); | |
| 881 if ((fieldType & _REPEATED_BIT) != 0) { | |
| 882 _fieldValues[tagNumber] = new PbList(); | |
| 883 } else { | |
| 884 var defaultValue = info_.defaultValue(tagNumber); | |
| 885 if (defaultValue != null) { | |
| 886 _fieldValues[tagNumber] = defaultValue; | |
| 887 } | |
| 888 } | |
| 889 } | 877 } |
| 890 | 878 |
| 891 bool extensionsAreInitialized() { | 879 bool extensionsAreInitialized() { |
| 892 return _extensions.keys.every((int tagNumber) { | 880 return _extensions.keys.every((int tagNumber) { |
| 893 return info_._isFieldInitialized(_fieldValues, tagNumber, | 881 return info_._isFieldInitialized(_fieldValues, tagNumber, |
| 894 _extensions[tagNumber].type); | 882 _extensions[tagNumber].type); |
| 895 }); | 883 }); |
| 896 } | 884 } |
| 897 | 885 |
| 898 /** | 886 /** |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1236 _generateMessage(tagNumber, value, 'not a GeneratedMessage')); | 1224 _generateMessage(tagNumber, value, 'not a GeneratedMessage')); |
| 1237 } | 1225 } |
| 1238 break; | 1226 break; |
| 1239 default: | 1227 default: |
| 1240 throw new ArgumentError( | 1228 throw new ArgumentError( |
| 1241 _generateMessage(tagNumber, value, 'field has unknown type ' | 1229 _generateMessage(tagNumber, value, 'field has unknown type ' |
| 1242 '$fieldType')); | 1230 '$fieldType')); |
| 1243 } | 1231 } |
| 1244 } | 1232 } |
| 1245 } | 1233 } |
| OLD | NEW |