| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 protoc; | 5 part of protoc; |
| 6 | 6 |
| 7 class MessageGenerator extends ProtobufContainer { | 7 class MessageGenerator extends ProtobufContainer { |
| 8 /// Returns the mixin for this message, or null if none. | 8 /// Returns the mixin for this message, or null if none. |
| 9 /// | 9 /// |
| 10 /// First searches [declaredMixins], then internal mixins declared by | 10 /// First searches [declaredMixins], then internal mixins declared by |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 } | 304 } |
| 305 | 305 |
| 306 void generateFieldsAccessorsMutators(IndentingWriter out) { | 306 void generateFieldsAccessorsMutators(IndentingWriter out) { |
| 307 for (ProtobufField field in _fieldList) { | 307 for (ProtobufField field in _fieldList) { |
| 308 out.println(); | 308 out.println(); |
| 309 | 309 |
| 310 var fieldTypeString = field.getDartType(package); | 310 var fieldTypeString = field.getDartType(package); |
| 311 var defaultExpr = field.getDefaultExpr(); | 311 var defaultExpr = field.getDefaultExpr(); |
| 312 var names = field.memberNames; | 312 var names = field.memberNames; |
| 313 | 313 |
| 314 _emitOverrideIf(field.overridesGetter, out); |
| 314 out.println('${fieldTypeString} get ${names.fieldName}' | 315 out.println('${fieldTypeString} get ${names.fieldName}' |
| 315 ' => \$_get(' | 316 ' => \$_get(' |
| 316 '${field.index}, ${field.number}, $defaultExpr);'); | 317 '${field.index}, ${field.number}, $defaultExpr);'); |
| 317 if (!field.isRepeated) { | 318 if (field.isRepeated) { |
| 319 if (field.overridesSetter) { |
| 320 throw 'Field ${field.fqname} cannot override a setter for ' |
| 321 '${names.fieldName} because it is repeated.'; |
| 322 } |
| 323 if (field.overridesHasMethod) { |
| 324 throw 'Field ${field.fqname} cannot override ' |
| 325 '${names.hasMethodName}() because it is repeated.'; |
| 326 } |
| 327 if (field.overridesClearMethod) { |
| 328 throw 'Field ${field.fqname} cannot override ' |
| 329 '${names.clearMethodName}() because it is repeated.'; |
| 330 } |
| 331 } else { |
| 318 var fastSetter = field.baseType.setter; | 332 var fastSetter = field.baseType.setter; |
| 333 _emitOverrideIf(field.overridesSetter, out); |
| 319 if (fastSetter != null) { | 334 if (fastSetter != null) { |
| 320 out.println('void set ${names.fieldName}' | 335 out.println('void set ${names.fieldName}' |
| 321 '($fieldTypeString v) { ' | 336 '($fieldTypeString v) { ' |
| 322 '$fastSetter(${field.index}, ${field.number}, v);' | 337 '$fastSetter(${field.index}, ${field.number}, v);' |
| 323 ' }'); | 338 ' }'); |
| 324 } else { | 339 } else { |
| 325 out.println('void set ${names.fieldName}' | 340 out.println('void set ${names.fieldName}' |
| 326 '($fieldTypeString v) { ' | 341 '($fieldTypeString v) { ' |
| 327 'setField(${field.number}, v);' | 342 'setField(${field.number}, v);' |
| 328 ' }'); | 343 ' }'); |
| 329 } | 344 } |
| 345 _emitOverrideIf(field.overridesHasMethod, out); |
| 330 out.println('bool ${names.hasMethodName}() =>' | 346 out.println('bool ${names.hasMethodName}() =>' |
| 331 ' \$_has(${field.index}, ${field.number});'); | 347 ' \$_has(${field.index}, ${field.number});'); |
| 348 _emitOverrideIf(field.overridesClearMethod, out); |
| 332 out.println('void ${names.clearMethodName}() =>' | 349 out.println('void ${names.clearMethodName}() =>' |
| 333 ' clearField(${field.number});'); | 350 ' clearField(${field.number});'); |
| 334 } | 351 } |
| 335 } | 352 } |
| 336 } | 353 } |
| 337 | 354 |
| 355 void _emitOverrideIf(bool condition, IndentingWriter out) { |
| 356 if (condition) { |
| 357 out.println('@override'); |
| 358 } |
| 359 } |
| 360 |
| 338 void generateEnums(IndentingWriter out) { | 361 void generateEnums(IndentingWriter out) { |
| 339 for (EnumGenerator e in _enumGenerators) { | 362 for (EnumGenerator e in _enumGenerators) { |
| 340 e.generate(out); | 363 e.generate(out); |
| 341 } | 364 } |
| 342 | 365 |
| 343 for (MessageGenerator m in _messageGenerators) { | 366 for (MessageGenerator m in _messageGenerators) { |
| 344 m.generateEnums(out); | 367 m.generateEnums(out); |
| 345 } | 368 } |
| 346 } | 369 } |
| 347 | 370 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 | 404 |
| 382 for (var m in _messageGenerators) { | 405 for (var m in _messageGenerators) { |
| 383 m.generateConstants(out); | 406 m.generateConstants(out); |
| 384 } | 407 } |
| 385 | 408 |
| 386 for (var e in _enumGenerators) { | 409 for (var e in _enumGenerators) { |
| 387 e.generateConstants(out); | 410 e.generateConstants(out); |
| 388 } | 411 } |
| 389 } | 412 } |
| 390 } | 413 } |
| OLD | NEW |