Report 'IDL' '// From MetaEdit+, graph: '; id; ''; newline; '// Class interfaces (.idl files)'; newline; newline; foreach .Class [UML]; { if :Stereotype<>'interface' then else 'interface '; id; if ~Specialization; then; ' : '; endif; dowhile ~Specialization>Inheritance [UML]~Generalization [UML].(); { :Class name; ', '; }; ' {'; newline; if :Documentation <> ''; then '// '; :Documentation; newline; endif; dowhile :Attributes { if :Data type = ''; then ' // Please specify data type '; else ' '; endif; if :Stereotype='constant' then 'const '; else if :Access= 'readonly' then 'readonly '; endif; if :Data type <> 'enum' then 'attribute '; endif; endif; :Data type; ' '; id; if :Data type = 'enum'; then ' {'; :Initial value; '}'; else if :Stereotype='constant' then ' = '; :Initial value; endif; endif; ';'; if :Constraints <> ''; then ' // '; :Constraints; endif; newline; } if :Attributes <> '' then newline; endif; dowhile :Operations [UML] { if :Stereotype = 'oneway'; then ' oneway '; else ' '; endif; if :Stereotype = 'exception'; then 'exception'; else if :Return type = ''; then 'void'; else :Return type; endif; endif; ' '; id; if :Stereotype = 'exception'; then ' { '; :Parameter list; ' };'; else ' ( '; :Parameter list; ' );'; endif; if :Constraints <> ''; then ' // '; :Constraints; endif; newline; }; newline; ' };'; newline; newline; newline; endif; }; foreach .Package; { 'module '; :Package name; ' {';newline; dowhile explosions { foreach .Class [UML]; { if :Stereotype<>'interface' then else ' interface '; id; if ~Specialization; then; ' : '; endif; dowhile ~Specialization>Inheritance [UML]~Generalization [UML].(); { :Class name; ', '; }; ' {'; newline; if :Documentation <> ''; then ' // '; :Documentation; newline; endif; dowhile :Attributes { if :Data type = ''; then ' // Please specify data type '; else ' '; endif; if :Stereotype='constant' then 'const '; else if :Access= 'readonly' then 'readonly '; endif; if :Data type <> 'enum' then 'attribute '; endif; endif; :Data type; ' '; id; if :Data type = 'enum'; then ' {'; :Initial value; '}'; else if :Stereotype='constant' then ' = '; :Initial value; endif; endif; ';'; if :Constraints <> ''; then ' // '; :Constraints; endif; newline; } if :Attributes <> '' then newline; endif; dowhile :Operations [UML] { if :Stereotype = 'oneway'; then ' oneway '; else ' '; endif; if :Stereotype = 'exception'; then 'exception'; else if :Return type = ''; then 'void'; else :Return type; endif; endif; ' '; id; if :Stereotype = 'exception'; then ' { '; :Parameter list; ' };'; else ' ( '; :Parameter list; ' );'; endif; if :Constraints <> ''; then ' // '; :Constraints; endif; newline; }; newline; ' };'; newline; newline; endif; }; }; '};'; }; endreport