public virtual void VisitConstant(Constant c)
{
if (!c.IsValid)
{
writer.Write("<invalid>");
return;
}
var pt = c.DataType.ResolveAs<PrimitiveType>();
if (pt != null)
{
if (pt.Domain == Domain.Boolean)
{
writer.Write(Convert.ToBoolean(c.GetValue()) ? "true" : "false");
}
else if (pt.Domain == Domain.Real)
{
string sr;
if (pt.Size == 4)
{
sr = c.ToFloat().ToString("g", CultureInfo.InvariantCulture);
}
else
{
sr = c.ToReal64().ToString("g", CultureInfo.InvariantCulture);
}
if (sr.IndexOfAny(nosuffixRequired) < 0)
{
sr += ".0";
}
if (pt.Size == 4)
{
sr += "F";
}
writer.Write(sr);
}
else
{
object v = c.GetValue();
writer.Write(FormatString(pt, v), v);
}
return;
}
StringConstant s = c as StringConstant;
if (s != null)
{
writer.Write("{0}{1}{0}", '"', s.GetValue());
}
}