public Constructor(IClass declaringType, NCC.IMethod tinfo) { this.declaringType = declaringType; ModifierEnum mod = (ModifierEnum)0; if ((tinfo.Attributes & NCC.NemerleAttributes.Private) != 0) { mod |= ModifierEnum.Private; } if ((tinfo.Attributes & NCC.NemerleAttributes.Internal) != 0) { mod |= ModifierEnum.Internal; } if ((tinfo.Attributes & NCC.NemerleAttributes.Protected) != 0) { mod |= ModifierEnum.Protected; } if ((tinfo.Attributes & NCC.NemerleAttributes.Public) != 0) { mod |= ModifierEnum.Public; } if ((tinfo.Attributes & NCC.NemerleAttributes.Abstract) != 0) { mod |= ModifierEnum.Abstract; } if ((tinfo.Attributes & NCC.NemerleAttributes.Sealed) != 0) { mod |= ModifierEnum.Sealed; } if ((tinfo.Attributes & NCC.NemerleAttributes.Static) != 0) { mod |= ModifierEnum.Static; } if ((tinfo.Attributes & NCC.NemerleAttributes.Override) != 0) { mod |= ModifierEnum.Override; } if ((tinfo.Attributes & NCC.NemerleAttributes.Virtual) != 0) { mod |= ModifierEnum.Virtual; } if ((tinfo.Attributes & NCC.NemerleAttributes.New) != 0) { mod |= ModifierEnum.New; } if ((tinfo.Attributes & NCC.NemerleAttributes.Extern) != 0) { mod |= ModifierEnum.Extern; } modifiers = mod; this.FullyQualifiedName = "this"; returnType = new ReturnType((NCC.MType)tinfo.ReturnType); this.region = Class.GetRegion(tinfo.Location); if (tinfo is NCC.MemberBuilder) { this.bodyRegion = Class.GetRegion(((NCC.MemberBuilder)tinfo).BodyLocation); } else { this.bodyRegion = Class.GetRegion(tinfo.Location); } this._member = tinfo; // Add parameters foreach (Fun_parm pinfo in tinfo.GetParameters()) { parameters.Add(new Parameter(this, pinfo, null)); } }
XmlNode FindMatch(XmlNodeList nodes, NCC.IMethod methodBase) { Nemerle.Core.list <Fun_parm> p = methodBase.GetParameters(); foreach (XmlNode node in nodes) { XmlNodeList paramList = node.SelectNodes("Parameters/*"); if (p.Length == 0 && paramList.Count == 0) { return(node); } if (p.Length != paramList.Count) { continue; } try { bool matched = true; for (int i = 0; i < paramList.Count; i++) { Fun_parm k = p.Nth(i); if (k.ty is NCC.MType.Class) { string pname = ((NCC.MType.Class)k.ty).tycon.FrameworkTypeName; if (pname != paramList[i].Attributes["Type"].Value) { matched = false; break; } } else if (k.ty is NCC.MType.Array) { NCC.MType.Array zas = (NCC.MType.Array)k.ty; if (zas.t is NCC.MType.Class) { string pname = ((NCC.MType.Class)zas.t).tycon.FrameworkTypeName + "[]"; if (pname != paramList[i].Attributes["Type"].Value) { matched = false; break; } } } else if (k.ty is NCC.MType.Ref) { NCC.MType.Ref zas = (NCC.MType.Ref)k.ty; if (zas.t is NCC.MType.Class) { string pname = ((NCC.MType.Class)zas.t).tycon.FrameworkTypeName + "&"; if (pname != paramList[i].Attributes["Type"].Value) { matched = false; break; } } } else { matched = false; break; } } if (matched) { return(node); } } catch { } } return(null); }
public Method(Class declaringType, NCC.IMethod tinfo) { this.declaringType = declaringType; ModifierEnum mod = (ModifierEnum)0; if ((tinfo.Attributes & NCC.NemerleAttributes.Private) != 0) { mod |= ModifierEnum.Private; } if ((tinfo.Attributes & NCC.NemerleAttributes.Internal) != 0) { mod |= ModifierEnum.Internal; } if ((tinfo.Attributes & NCC.NemerleAttributes.Protected) != 0) { mod |= ModifierEnum.Protected; } if ((tinfo.Attributes & NCC.NemerleAttributes.Public) != 0) { mod |= ModifierEnum.Public; } if ((tinfo.Attributes & NCC.NemerleAttributes.Abstract) != 0) { mod |= ModifierEnum.Abstract; } if ((tinfo.Attributes & NCC.NemerleAttributes.Sealed) != 0) { mod |= ModifierEnum.Sealed; } if ((tinfo.Attributes & NCC.NemerleAttributes.Static) != 0) { mod |= ModifierEnum.Static; } if ((tinfo.Attributes & NCC.NemerleAttributes.Override) != 0) { mod |= ModifierEnum.Override; } if ((tinfo.Attributes & NCC.NemerleAttributes.Virtual) != 0) { mod |= ModifierEnum.Virtual; } if ((tinfo.Attributes & NCC.NemerleAttributes.New) != 0) { mod |= ModifierEnum.New; } if ((tinfo.Attributes & NCC.NemerleAttributes.Extern) != 0) { mod |= ModifierEnum.Extern; } modifiers = mod; this.FullyQualifiedName = tinfo.Name; if (tinfo.GetHeader().typarms.Length > 0) { this.genericParameters = new GenericParameterList(); foreach (NCC.StaticTyVar typarm in tinfo.GetHeader().typarms) { genericParameters.Add(Class.GetGenericParameter(typarm)); } } if (tinfo.Name == "op_Addition") { this.FullyQualifiedName = "@+"; } else if (tinfo.Name == "op_Subtraction") { this.FullyQualifiedName = "@-"; } else if (tinfo.Name == "op_Multiply") { this.FullyQualifiedName = "@*"; } else if (tinfo.Name == "op_Division") { this.FullyQualifiedName = "@/"; } else if (tinfo.Name == "op_Modulus") { this.FullyQualifiedName = "@%"; } else if (tinfo.Name == "op_ExclusiveOr") { this.FullyQualifiedName = "@^"; } else if (tinfo.Name == "op_BitwiseAnd") { this.FullyQualifiedName = "@&"; } else if (tinfo.Name == "op_BitwiseOr") { this.FullyQualifiedName = "@|"; } else if (tinfo.Name == "op_LogicalAnd") { this.FullyQualifiedName = "@&&"; } else if (tinfo.Name == "op_LogicalOr") { this.FullyQualifiedName = "@||"; } else if (tinfo.Name == "op_Assign") { this.FullyQualifiedName = "@="; } else if (tinfo.Name == "op_LeftShift") { this.FullyQualifiedName = "@<<"; } else if (tinfo.Name == "op_RightShift") { this.FullyQualifiedName = "@>>"; } else if (tinfo.Name == "op_Equality") { this.FullyQualifiedName = "@=="; } else if (tinfo.Name == "op_GreaterThan") { this.FullyQualifiedName = "@>"; } else if (tinfo.Name == "op_LessThan") { this.FullyQualifiedName = "@<"; } else if (tinfo.Name == "op_Inequality") { this.FullyQualifiedName = "@!="; } else if (tinfo.Name == "op_GreaterThanOrEqual") { this.FullyQualifiedName = "@>="; } else if (tinfo.Name == "op_LessThanOrEqual") { this.FullyQualifiedName = "@<="; } else if (tinfo.Name == "op_MultiplicationAssignment") { this.FullyQualifiedName = "@*="; } else if (tinfo.Name == "op_SubtractionAssignment") { this.FullyQualifiedName = "@-="; } else if (tinfo.Name == "op_ExclusiveOrAssignment") { this.FullyQualifiedName = "@^="; } else if (tinfo.Name == "op_LeftShiftAssignment") { this.FullyQualifiedName = "@<<="; } else if (tinfo.Name == "op_ModulusAssignment") { this.FullyQualifiedName = "@%="; } else if (tinfo.Name == "op_AdditionAssignment") { this.FullyQualifiedName = "@+="; } else if (tinfo.Name == "op_BitwiseAndAssignment") { this.FullyQualifiedName = "@&="; } else if (tinfo.Name == "op_BitwiseOrAssignment") { this.FullyQualifiedName = "@|="; } else if (tinfo.Name == "op_Comma") { this.FullyQualifiedName = "@,"; } else if (tinfo.Name == "op_DivisionAssignment") { this.FullyQualifiedName = "@/="; } else if (tinfo.Name == "op_Implicit") { this.FullyQualifiedName = "@:"; } else if (tinfo.Name == "op_Explicit") { this.FullyQualifiedName = "@:>"; } else if (tinfo.Name == "op_UnaryPlus") { this.FullyQualifiedName = "@+"; } else if (tinfo.Name == "op_UnaryNegation") { this.FullyQualifiedName = "@-"; } else if (tinfo.Name == "op_Decrement") { this.FullyQualifiedName = "@--"; } else if (tinfo.Name == "op_Increment") { this.FullyQualifiedName = "@++"; } else if (tinfo.Name == "op_OnesComplement") { this.FullyQualifiedName = "@~"; } else if (tinfo.Name == "op_LogicalNot") { this.FullyQualifiedName = "@!"; } returnType = new ReturnType((NCC.MType)tinfo.ReturnType); this.region = Class.GetRegion(tinfo.Location); if (tinfo is NCC.MemberBuilder) { this.bodyRegion = Class.GetRegion(((NCC.MemberBuilder)tinfo).BodyLocation); } else { this.bodyRegion = Class.GetRegion(tinfo.Location); } this._member = tinfo; LoadXml(declaringType, tinfo); // Add parameters foreach (Fun_parm pinfo in tinfo.GetParameters()) { try { parameters.Add(new Parameter(this, pinfo, node)); } catch { } } }
public Indexer(Class declaringType, NCC.IProperty tinfo) { this.declaringType = declaringType; ModifierEnum mod = (ModifierEnum)0; if ((tinfo.Attributes & NCC.NemerleAttributes.Private) != 0) { mod |= ModifierEnum.Private; } if ((tinfo.Attributes & NCC.NemerleAttributes.Internal) != 0) { mod |= ModifierEnum.Internal; } if ((tinfo.Attributes & NCC.NemerleAttributes.Protected) != 0) { mod |= ModifierEnum.Protected; } if ((tinfo.Attributes & NCC.NemerleAttributes.Public) != 0) { mod |= ModifierEnum.Public; } if ((tinfo.Attributes & NCC.NemerleAttributes.Abstract) != 0) { mod |= ModifierEnum.Abstract; } if ((tinfo.Attributes & NCC.NemerleAttributes.Sealed) != 0) { mod |= ModifierEnum.Sealed; } if ((tinfo.Attributes & NCC.NemerleAttributes.Static) != 0) { mod |= ModifierEnum.Static; } if ((tinfo.Attributes & NCC.NemerleAttributes.Override) != 0) { mod |= ModifierEnum.Override; } if ((tinfo.Attributes & NCC.NemerleAttributes.Virtual) != 0) { mod |= ModifierEnum.Virtual; } if ((tinfo.Attributes & NCC.NemerleAttributes.New) != 0) { mod |= ModifierEnum.New; } if ((tinfo.Attributes & NCC.NemerleAttributes.Extern) != 0) { mod |= ModifierEnum.Extern; } modifiers = mod; this.FullyQualifiedName = tinfo.Name; returnType = new ReturnType(tinfo.GetMemType()); this.region = Class.GetRegion(tinfo.Location); if (tinfo is NCC.MemberBuilder) { this.bodyRegion = Class.GetRegion(((NCC.MemberBuilder)tinfo).BodyLocation); } else { this.bodyRegion = Class.GetRegion(tinfo.Location); } NCC.IMethod getter = tinfo.GetGetter(); NCC.IMethod setter = tinfo.GetSetter(); if (getter != null) { this.Getter = new Method(declaringType, getter); if (getter is NCC.MemberBuilder) { getterRegion = Class.GetRegion(((NCC.MemberBuilder)getter).BodyLocation); } else { getterRegion = Class.GetRegion(getter.Location); } } if (setter != null) { this.Setter = new Method(declaringType, setter); if (setter is NCC.MemberBuilder) { setterRegion = Class.GetRegion(((NCC.MemberBuilder)setter).BodyLocation); } else { setterRegion = Class.GetRegion(setter.Location); } } LoadXml(declaringType); // Add parameters if (getter != null) { foreach (Fun_parm pinfo in getter.GetParameters()) { parameters.Add(new Parameter(this, pinfo, node)); } } }