//
//
//
//
// $Revision$
//
using System;
using System.Collections.Generic;
namespace NRefactoryASTGenerator.Ast
{
[CustomImplementation, HasChildren]
class CompilationUnit : AbstractNode {}
[HasChildren]
class NamespaceDeclaration : AbstractNode
{
string name;
public NamespaceDeclaration(string name) {}
}
class TemplateDefinition : AttributedNode
{
[QuestionMarkDefault]
string name;
List bases;
public TemplateDefinition(string name, List attributes) : base(attributes) {}
}
class DelegateDeclaration : AttributedNode
{
[QuestionMarkDefault]
string name;
TypeReference returnType;
List parameters;
List templates;
public DelegateDeclaration(Modifiers modifier, List attributes) : base(modifier, attributes) {}
}
enum ClassType { Class }
[HasChildren]
class TypeDeclaration : AttributedNode
{
// Children of Struct: FieldDeclaration, MethodDeclaration, EventDeclaration, ConstructorDeclaration,
// OperatorDeclaration, TypeDeclaration, IndexerDeclaration, PropertyDeclaration, in VB: DeclareDeclaration
// Childrean of class: children of struct, DestructorDeclaration
// Children of Interface: MethodDeclaration, PropertyDeclaration, IndexerDeclaration, EventDeclaration, in VB: TypeDeclaration(Enum) too
// Children of Enum: FieldDeclaration
string name;
ClassType type;
List baseTypes;
List templates;
Location bodyStartLocation;
public TypeDeclaration(Modifiers modifier, List attributes) : base(modifier, attributes) {}
}
[IncludeBoolProperty("IsAlias", "return !alias.IsNull;")]
class Using : AbstractNode
{
[QuestionMarkDefault]
string name;
TypeReference alias;
public Using(string name) {}
public Using(string name, TypeReference alias) {}
}
[IncludeMember("public UsingDeclaration(string @namespace) : this(@namespace, null) {}")]
[IncludeMember("public UsingDeclaration(string @namespace, TypeReference alias) {" +
" usings = new List(1);" +
" usings.Add(new Using(@namespace, alias)); " +
"}")]
class UsingDeclaration : AbstractNode
{
List usings;
public UsingDeclaration(List usings) {}
}
enum OptionType { None }
class OptionDeclaration : AbstractNode
{
OptionType optionType;
bool optionValue;
public OptionDeclaration(OptionType optionType, bool optionValue) {}
}
}