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 |