Index: lib/message_generator.dart |
diff --git a/lib/message_generator.dart b/lib/message_generator.dart |
index 72aced89bba86cf523e2fcb9fd848937c6247454..fce3a39cc2aa937ec7a517efd3f65541576be9a8 100644 |
--- a/lib/message_generator.dart |
+++ b/lib/message_generator.dart |
@@ -23,6 +23,7 @@ class MessageGenerator implements ProtobufContainer { |
final String classname; |
final String fqname; |
+ final ProtobufContainer _parent; |
final GenerationContext _context; |
final DescriptorProto _descriptor; |
final List<EnumGenerator> _enumGenerators = <EnumGenerator>[]; |
@@ -31,10 +32,11 @@ class MessageGenerator implements ProtobufContainer { |
final List<ExtensionGenerator> _extensionGenerators = <ExtensionGenerator>[]; |
final Set<String> _methodNames = new Set<String>(); |
- MessageGenerator(DescriptorProto descriptor, ProtobufContainer parent, |
- this._context) |
+ MessageGenerator( |
+ DescriptorProto descriptor, ProtobufContainer parent, this._context) |
: _descriptor = descriptor, |
- classname = (parent == null || parent.classname == '') ? |
+ _parent = parent, |
+ classname = (parent.classname == '') ? |
descriptor.name : '${parent.classname}_${descriptor.name}', |
fqname = (parent == null || parent.fqname == null) ? descriptor.name : |
(parent.fqname == '.' ? |
@@ -54,6 +56,8 @@ class MessageGenerator implements ProtobufContainer { |
} |
} |
+ String get package => _parent.package; |
+ |
void initializeFields() { |
_fieldList.clear(); |
for (FieldDescriptorProto field in _descriptor.field) { |
@@ -84,24 +88,25 @@ class MessageGenerator implements ProtobufContainer { |
';', () { |
for (ProtobufField field in _fieldList) { |
String type = field.shortTypeName; |
+ String fieldType = field.baseTypeForPackage(package); |
String makeDefault = null; |
if (field.hasInitialization) { |
- makeDefault = '${field.initialization}'; |
+ makeDefault = field.initializationForPackage(package); |
} |
String subBuilder = null; |
if (field.message || field.group) { |
- subBuilder = '()${SP}=>${SP}new ${field.baseType}()'; |
+ subBuilder = '()${SP}=>${SP}new ${fieldType}()'; |
} |
String valueOf = null; |
if (field.enm) { |
- valueOf = '(var v)${SP}=>${SP}${field.baseType}.valueOf(v)'; |
+ valueOf = '(var v)${SP}=>${SP}${fieldType}.valueOf(v)'; |
} |
if ('PM' == type) { |
// Repeated message: default is an empty list |
out.println('..m(${field.number},${SP}' |
'\'${field.externalFieldName}\',${SP}$subBuilder,' |
- '${SP}()${SP}=>${SP}new PbList<${field.baseType}>())'); |
+ '${SP}()${SP}=>${SP}new PbList<${fieldType}>())'); |
} else if (type[0] == 'P' && type != 'PG' && type != 'PE') { |
// Repeated, not a message or enum: default is an empty list, |
// subBuilder is null, valueOf is null. |
@@ -227,11 +232,12 @@ class MessageGenerator implements ProtobufContainer { |
} |
_methodNames.add(identifier); |
} |
- out.println('${field.typeString} get ${identifier}' |
+ var fieldTypeString = field.typeStringForPackage(package); |
+ out.println('${fieldTypeString} get ${identifier}' |
'${SP}=>${SP}getField(${field.number});'); |
if (field.single) { |
out.println('void set ${identifier}' |
- '(${field.typeString} v)${SP}' |
+ '(${fieldTypeString} v)${SP}' |
'{${SP}setField(${field.number},${SP}v);${SP}}'); |
out.println('bool $hasIdentifier()${SP}=>' |
'${SP}hasField(${field.number});'); |