public Token CompleteType(Type type)
{
Token tok = this;
bool save = type != null;
if (tok.IsConst())
{
if (save)
{
type.IsConst = true;
}
tok = tok.Next();
}
if (save)
{
type.Name = tok.Value;
}
tok = tok.Next();
if (tok.IsTemplateBegin())
{
if (save)
{
type.IsTemplate = true;
type.SubType = new Type();
}
tok = tok.Next();
tok = tok.CompleteType(save ? type.SubType : null);
if (!tok.IsTemplateEnd())
{
Program.Log("Not closed template?");
}
tok = tok.Next();
}
//Console.WriteLine("endtok: " + tok.Value);
while (tok.IsTypeSpec())
{
//Console.WriteLine("mod: "+tok.Value);
if (save)
{
type.ModName += tok.Value;
}
tok = tok.Next();
}
return(tok);
}