writeClassEncode method
void
writeClassEncode(
- CppOptions generatorOptions,
- Root root,
- Indent indent,
- Class klass,
- Set<
String> customClassNames, - Set<
String> customEnumNames, { - required String dartPackageName,
override
Writes a single class encode method to indent
.
Implementation
@override
void writeClassEncode(
CppOptions generatorOptions,
Root root,
Indent indent,
Class klass,
Set<String> customClassNames,
Set<String> customEnumNames, {
required String dartPackageName,
}) {
_writeFunctionDefinition(indent, 'ToEncodableList',
scope: klass.name,
returnType: 'EncodableList',
isConst: true, body: () {
indent.writeln('EncodableList list;');
indent.writeln('list.reserve(${klass.fields.length});');
for (final NamedType field in getFieldsInSerializationOrder(klass)) {
final HostDatatype hostDatatype = getFieldHostDatatype(field,
root.classes, root.enums, _shortBaseCppTypeForBuiltinDartType);
final String encodableValue = _wrappedHostApiArgumentExpression(
root, _makeInstanceVariableName(field), field.type, hostDatatype,
preSerializeClasses: true);
indent.writeln('list.push_back($encodableValue);');
}
indent.writeln('return list;');
});
}