private void GenerateStructure(Model.Structure s, uint indent) { List <Model.Field> static_fields; List <Model.Field> dynamic_fields; AnalyzeFields(s, out static_fields, out dynamic_fields); bool dynamic_size = dynamic_fields.Count > 0; write_indented(indent, String.Format("class {0}", s.Name)); write_indented(indent, "{"); write_indented(indent, "public:"); if (!dynamic_size) { WriteDeletedConstructor(s.Name, indent + 1); WriteDeletedCopyConstructor(s.Name, indent + 1); WriteDeletedAssignmentOperator(s.Name, indent + 1); foreach (var field in s.Fields) { GenerateField(field, indent + 1); } } else { WriteConstructor(s.Name, indent + 1, dynamic_fields); } if (dynamic_size) { write_indented(indent, "private:"); // TODO: Add milepost members } write_indented(indent, "};"); }
private void AnalyzeFields(Model.Structure structure, out List <Model.Field> static_fields, out List <Model.Field> dynamic_fields) { static_fields = new List <Model.Field>(); dynamic_fields = new List <Model.Field>(); foreach (var field in structure.Fields) { if (field.HasStaticSize()) { static_fields.Add(field); } else { static_fields.Add(field); } } }
private String type_to_cpp_type(Model.Structure s) { return(s.Name); }