blob: b1c95f65634f31976caabd535f21f141dc2892d5 [file] [log] [blame]
/** Copyright (C) Conformiq Software Ltd.
* All rights reserved.
*
* Created Wed Aug 27 16:49:21 2008.
*
* @file TTCNTypeName.java
*
* @author Conformiq Software Ltd.
*
*
*/
package com.conformiq.adaptation.ttcn;
import java.util.Queue;
import java.util.Set;
import com.conformiq.qtronic2.QMLArrayType;
import com.conformiq.qtronic2.QMLBooleanType;
import com.conformiq.qtronic2.QMLNumberType;
import com.conformiq.qtronic2.QMLOptionalType;
import com.conformiq.qtronic2.QMLRecordType;
import com.conformiq.qtronic2.QMLStringType;
import com.conformiq.qtronic2.QMLTypeVisitor;
class TTCNTypeName implements QMLTypeVisitor
{
public TTCNTypeName(final Queue<QMLRecordType> workList,
final Set<QMLRecordType> alreadyDumped, final Set<String> arrays)
{
this.workList = workList;
this.alreadyDumped = alreadyDumped;
this.arrays = arrays;
optional = false;
}
public void visit(QMLArrayType a)
{
// We first visit the element type to get the correct name
// for it.
a.getType().accept(this);
// arrays.add(a.getType().getTypeName());
arrays.add(name);
optional = false;
name += "Array";
}
public void visit(QMLBooleanType b)
{
name = "boolean";
}
public void visit(QMLNumberType n)
{
if (n.isFloat() || n.isDouble())
{
name = "float";
}
else
{
name = "integer";
}
}
public void visit(QMLRecordType r)
{
if (!alreadyDumped.contains(r))
{
workList.offer(r);
}
name = r.getTypeName();
}
public void visit(QMLStringType s)
{
name = "charstring";
}
public void visit(QMLOptionalType p)
{
p.getType().accept(this);
optional = true;
}
private boolean optional;
public boolean getOptional()
{
return optional;
}
private String name = "";
public String getName()
{
return name;
}
protected Set<String> arrays;
private final Queue<QMLRecordType> workList;
private final Set<QMLRecordType> alreadyDumped;
};