writeClassEncode method

  1. @override
void writeClassEncode(
  1. CppOptions generatorOptions,
  2. Root root,
  3. Indent indent,
  4. Class klass,
  5. Set<String> customClassNames,
  6. Set<String> customEnumNames, {
  7. 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;');
  });
}