module bamboo.codegen.field_declarations.parameter; import std.format; import bamboo.codegen.field_declarations; private enum parameterFieldStubbed = q{ private %2$s _%1$s; void %1$s (%2$s value) @FieldId(%3$s) %4$-(@%s %) @property { _%1$s = value; } inout(%2$s) %1$s() inout @FieldId(%3$s) @property { return _%1$s; } }; private enum parameterFieldAbstract = q{ abstract void %1$s(%2$s value) @FieldId(%3$s) %4$-(@%s %) @property; abstract %2$s %1$s() @FieldId(%3$s) @property; }; string generateParameterField(ParameterField field, bool stub) { string def = generateDefinition(field.parameter); string type = def.split(' ')[0]; string name = def.split(' ')[1]; if (!stub) { return parameterFieldAbstract.format(name, type, field.id, field.keywords.keywords); } return parameterFieldStubbed.format(name, type, field.id, field.keywords.keywords); }