Report 'Delphi' '{ From MetaEdit+, graph: '; id; '}'; newline; '{ Type declarations, pas files }'; newline;newline; foreach .Class-&-Object; { 'unit '; :Class name;'Unit;'; newline; newline; 'interface'; newline; newline; if ~Specialization; then 'uses '; else if ~Whole; then 'uses '; endif; endif; if ~Specialization; then ~Specialization>Gen-spec structure~Generalization.():Class name; if ~Whole; then ', '; endif; endif; dowhile ~Whole>Whole-part structure~Part.(); { :Class name; ', '; }; if ~Specialization; then ';'; newline; newline; else if ~Whole; then ';'; newline; newline; endif; endif; 'type'; newline; :Class name; ' = class '; if ~Specialization; then '( '; ~Specialization>Gen-spec structure~Generalization.():Class name; ' )'; else '( TObject )'; endif; newline; if :Documentation <> ''; then '{ '; :Documentation; ' }'; newline; endif; 'private'; newline; dowhile :Attributes { if :Access level = 'private' then ' '; id; ' : '; if :Data type = ''; then ' { please specify data type }'; else :Data type; endif; ';'; if :Documentation <> ''; then ' { '; :Documentation; ' }'; endif; newline; endif; } dowhile :Services { if :Access level = 'private'; then if :Parameter list <> ''; then ' procedure '; id; '( '; :Parameter list; ' )'; else ' function '; id; ' : '; if :Return type <> ''; then :Return type; else '{ please add return type for function }'; endif; endif; ';'; newline; if :Documentation <> ''; then ' { '; :Documentation; ' }'; newline; endif; endif; }; 'protected'; newline; dowhile :Attributes { if :Access level = 'protected' then ' '; id;' : '; if :Data type = ''; then ' { please specify data type }'; else :Data type; endif; ';'; if :Documentation <> ''; then ' { '; :Documentation; ' }'; endif; newline; endif; } dowhile :Services { if :Access level = 'protected'; then if :Parameter list <> ''; then ' procedure '; id; '( '; :Parameter list; ' )'; else ' function '; id; ' : '; if :Return type <> ''; then :Return type; else '{ please add return type for function }'; endif; endif; ';'; newline; if :Documentation <> ''; then ' { '; :Documentation; ' }'; newline; endif; endif; }; 'public'; newline; dowhile :Attributes { if :Access level = 'public' then ' '; id;' : '; if :Data type = ''; then ' { please specify data type }'; else :Data type; endif; ';'; if :Documentation <> ''; then ' { '; :Documentation; ' }'; endif; newline; endif; } dowhile :Attributes { if :Access level = '' then ' '; id;' : '; if :Data type = ''; then ' { please specify data type }'; else :Data type; endif; ';'; if :Documentation <> ''; then ' { '; :Documentation; ' }'; endif; newline; endif; } do ~Whole>Whole-part structure~Part.(); { ' '; :Class name; ' : my'; :Class name; ';'; ' { aggregation based data }'; newline; }; dowhile :Services { if :Access level = 'public'; then if :Parameter list <> ''; then ' procedure '; id; '( '; :Parameter list; ' )'; else ' function '; id; ' : '; if :Return type <> ''; then :Return type; else '{ please add return type for function }'; endif; endif; ';'; newline; if :Documentation <> ''; then ' { '; :Documentation; ' }'; newline; endif; endif; }; dowhile :Services { if :Access level = ''; then if :Parameter list <> ''; then ' procedure '; id; '( '; :Parameter list; ' )'; else ' function '; id; ' : '; if :Return type <> ''; then :Return type; else '{ please add return type for function }'; endif; endif; ';'; newline; if :Documentation <> ''; then ' { '; :Documentation; ' }'; newline; endif; endif; }; 'end;'; newline; newline; 'implementation'; newline; newline; dowhile :Services { if :Access level = 'private'; then if :Parameter list <> ''; then ' procedure '; id; '( '; :Parameter list; ' )'; else ' function '; id; ' : '; if :Return type <> ''; then :Return type; else '{ please add return type for function }'; endif; endif; ';'; newline; if :Documentation <> ''; then ' { '; :Documentation; ' }'; newline; endif; ' begin'; newline; ' ';:Method body; newline; ' end;'; newline; newline; endif; }; dowhile :Services { if :Access level = 'protected'; then if :Parameter list <> ''; then ' procedure '; id; '( '; :Parameter list; ' )'; else ' function '; id; ' : '; if :Return type <> ''; then :Return type; else '{ please add return type for function }'; endif; endif; ';'; newline; if :Documentation <> ''; then ' { '; :Documentation; ' }'; newline; endif; ' begin'; newline; ' ';:Method body; newline; ' end;'; newline; newline; endif; }; dowhile :Services { if :Access level = 'public'; then if :Parameter list <> ''; then ' procedure '; id; '( '; :Parameter list; ' )'; else ' function '; id; ' : '; if :Return type <> ''; then :Return type; else '{ please add return type for function }'; endif; endif; ';'; newline; if :Documentation <> ''; then ' { '; :Documentation; ' }'; newline; endif; ' begin'; newline; ' ';:Method body; newline; ' end;'; newline; newline; endif; }; dowhile :Services { if :Access level = ''; then if :Parameter list <> ''; then ' procedure '; id; '( '; :Parameter list; ' )'; else ' function '; id; ' : '; if :Return type <> ''; then :Return type; else '{ please add return type for function }'; endif; endif; ';'; newline; if :Documentation <> ''; then ' { '; :Documentation; ' }'; newline; endif; ' begin'; newline; ' ';:Method body; newline; ' end;'; newline; newline; endif; }; 'end.'; ' { End of unit'; :Class name; ' }'; newline; newline; newline; newline; }; endreport