public virtual void Visit(ClassDefinition theClass) { foreach (var xMember in theClass.Members) { xMember.Dispatch(this); } }
public override void Visit(ClassDefinition theClass) { mOutput.WriteLine("class {0}", theClass.Name); mOutput.WriteLine("{{"); mOutput.Indent(); { base.Visit(theClass); } mOutput.Unindent(); mOutput.WriteLine("}}"); }
private void ParseClass(IClassContainer container) { Move(); if (mToken.TagValue != Tag.Identifier) { Error("Identifier expected!"); } var xId = (Word)mToken; var xClass = new ClassDefinition(mResult); xClass.Container = container; xClass.Name = xId.Value; container.Classes.Add(xClass); Move(); Match('{'); while (!IsMatch('}')) { ParseClassMember(xClass); } Move(); // } char was found }
public override void Visit(ClassDefinition theClass) { var xCurNamespace = mNamespaces.Peek(); MCM.TypeDefinition xClass; if (mTypeStack.Count > 0) { var xNestedClass = new MCM.NestedTypeDefinition { ContainingTypeDefinition = mTypeStack.Peek(), InternFactory = mHostEnvironment.InternFactory, IsClass = true, Name = mHostEnvironment.NameTable.GetNameFor(theClass.Name) }; xClass = xNestedClass; mTypeStack.Peek().NestedTypes.Add(xNestedClass); } else { var xNamespaceClass = new MCM.NamespaceTypeDefinition() { ContainingUnitNamespace = xCurNamespace, InternFactory = mHostEnvironment.InternFactory, IsClass = true, Name = mHostEnvironment.NameTable.GetNameFor(theClass.Name) }; xCurNamespace.Members.Add(xNamespaceClass); xClass = xNamespaceClass; } Types.Add(theClass, xClass); mAssembly.AllTypes.Add(xClass); mTypeStack.Push(xClass); try { base.Visit(theClass); } finally { mTypeStack.Pop(); } }