void Formatter::visit(VariableReference &var)
{
- append(var.name);
- r_empty_name = false;
-}
-
-void Formatter::visit(InterfaceBlockReference &iface)
-{
- r_empty_name = iface.declaration->instance_name.empty();
+ r_empty_name = var.name.find(' ')!=string::npos;
if(!r_empty_name)
- append(iface.declaration->instance_name);
+ append(var.name);
}
void Formatter::visit(MemberAccess &memacc)
void Formatter::visit(StructDeclaration &strct)
{
+ if(!strct.block_name.empty())
+ return;
+
append(format("struct %s\n", strct.name));
strct.members.visit(*this);
append(';');
}
if(!var.precision.empty())
append(format("%s ", var.precision));
- string type_name = var.type_declaration->name;
- if(var.array)
- type_name = type_name.substr(0, type_name.find('['));
- append(format("%s %s", type_name, var.name));
+
+ if(var.block_declaration)
+ {
+ append(format("%s\n", var.block_declaration->block_name));
+ var.block_declaration->members.visit(*this);
+ if(var.name.find(' ')==string::npos)
+ append(format(" %s", var.name));
+ }
+ else
+ {
+ string type_name = var.type_declaration->name;
+ if(var.array)
+ type_name = type_name.substr(0, type_name.find('['));
+ append(format("%s %s", type_name, var.name));
+ }
+
if(var.array)
{
append('[');
append(';');
}
-void Formatter::visit(InterfaceBlock &iface)
-{
- if(iface.layout)
- {
- iface.layout->visit(*this);
- append(' ');
- }
- append(format("%s %s\n", iface.interface, iface.block_name));
- if(iface.struct_declaration)
- iface.struct_declaration->members.visit(*this);
- if(!iface.instance_name.empty())
- {
- append(' ');
- append(iface.instance_name);
- if(iface.array)
- append("[]");
- }
- append(';');
-}
-
void Formatter::visit(FunctionDeclaration &func)
{
append(format("%s %s(", func.return_type_declaration->name, func.name));