public static DefaultClass GetDummyClassForTypeParameter(ITypeParameter p) { DefaultClass c = new DefaultClass(p.Class.CompilationUnit, p.Name); if (p.Method != null) { c.Region = new DomRegion(p.Method.Region.BeginLine, p.Method.Region.BeginColumn); } else { c.Region = new DomRegion(p.Class.Region.BeginLine, p.Class.Region.BeginColumn); } c.Modifiers = ModifierEnum.Public; if (p.HasValueTypeConstraint) { c.ClassType = ClassType.Struct; } else if (p.HasConstructableConstraint) { c.ClassType = ClassType.Class; } else { c.ClassType = ClassType.Interface; } return(c); }
private bool ReadClasses() { int classCount = _reader.ReadInt32(); int externalTypeCount = _reader.ReadInt32(); _types = new IReturnType[classCount + externalTypeCount]; DefaultClass[] classes = new DefaultClass[classCount]; for (int i = 0; i < classes.Length; i++) { DefaultClass c = new DefaultClass(_pc.AssemblyCompilationUnit, _reader.ReadString()); classes[i] = c; _types[i] = c.DefaultReturnType; } for (int i = classCount; i < _types.Length; i++) { string name = _reader.ReadString(); _types[i] = new GetClassReturnType(_pc, name, _reader.ReadByte()); } _stringArray = new string[_reader.ReadInt32()]; for (int i = 0; i < _stringArray.Length; i++) { _stringArray[i] = _reader.ReadString(); } for (int i = 0; i < classes.Length; i++) { ReadClass(classes[i]); _pc.AddClassToNamespaceList(classes[i]); if (_reader.ReadByte() != 64) { return(false); } } return(true); }
public override IClass GetUnderlyingClass() { if (_cachedClass != null) { return(_cachedClass); } DefaultClass c = new DefaultClass(_cu, ClassType.Delegate, ModifierEnum.None, DomRegion.Empty, null); c.BaseTypes.Add(_cu.ProjectContent.SystemTypes.Delegate); AddDefaultDelegateMethod(c, _returnType ?? _cu.ProjectContent.SystemTypes.Object, _parameters); _cachedClass = c; return(c); }
private static void AddTypeParametersForCtrlSpace(ArrayList result, IEnumerable <ITypeParameter> typeParameters) { foreach (ITypeParameter p in typeParameters) { DefaultClass c = DefaultTypeParameter.GetDummyClassForTypeParameter(p); if (p.Method != null) { c.Documentation = "Type parameter of " + p.Method.Name; } else { c.Documentation = "Type parameter of " + p.Class.Name; } result.Add(c); } }
internal static void AddDefaultDelegateMethod(DefaultClass c, IReturnType returnType, IList <IParameter> parameters) { ModifierEnum modifiers = ModifierEnum.Public | ModifierEnum.Synthetic; DefaultMethod invokeMethod = new DefaultMethod("Invoke", returnType, modifiers, c.Region, DomRegion.Empty, c); foreach (IParameter par in parameters) { invokeMethod.Parameters.Add(par); } c.Methods.Add(invokeMethod); invokeMethod = new DefaultMethod("BeginInvoke", c.ProjectContent.SystemTypes.IAsyncResult, modifiers, c.Region, DomRegion.Empty, c); foreach (IParameter par in parameters) { invokeMethod.Parameters.Add(par); } invokeMethod.Parameters.Add(new DefaultParameter("callback", c.ProjectContent.SystemTypes.AsyncCallback, DomRegion.Empty)); invokeMethod.Parameters.Add(new DefaultParameter("object", c.ProjectContent.SystemTypes.Object, DomRegion.Empty)); c.Methods.Add(invokeMethod); invokeMethod = new DefaultMethod("EndInvoke", returnType, modifiers, c.Region, DomRegion.Empty, c); invokeMethod.Parameters.Add(new DefaultParameter("result", c.ProjectContent.SystemTypes.IAsyncResult, DomRegion.Empty)); c.Methods.Add(invokeMethod); }
private void ReadClass(DefaultClass c) { _currentClass = c; int count; count = _reader.ReadByte(); for (int i = 0; i < count; i++) { c.TypeParameters.Add(new DefaultTypeParameter(c, ReadString(), i)); } if (count > 0) { foreach (ITypeParameter typeParameter in c.TypeParameters) { count = _reader.ReadInt32(); for (int i = 0; i < count; i++) { typeParameter.Constraints.Add(ReadType()); } } } else { c.TypeParameters = DefaultTypeParameter.EmptyTypeParameterList; } count = _reader.ReadInt32(); for (int i = 0; i < count; i++) { c.BaseTypes.Add(ReadType()); } c.Modifiers = (ModifierEnum)_reader.ReadInt32(); c.Flags = _reader.ReadByte(); c.ClassType = (ClassType)_reader.ReadByte(); ReadAttributes(c); count = _reader.ReadInt32(); for (int i = 0; i < count; i++) { DefaultClass innerClass = new DefaultClass(c.CompilationUnit, c); innerClass.FullyQualifiedName = _reader.ReadString(); c.InnerClasses.Add(innerClass); ReadClass(innerClass); } _currentClass = c; count = _reader.ReadInt32(); for (int i = 0; i < count; i++) { c.Methods.Add(ReadMethod()); } count = _reader.ReadInt32(); for (int i = 0; i < count; i++) { c.Properties.Add(ReadProperty()); } count = _reader.ReadInt32(); for (int i = 0; i < count; i++) { c.Events.Add(ReadEvent()); } count = _reader.ReadInt32(); for (int i = 0; i < count; i++) { c.Fields.Add(ReadField()); } _currentClass = null; }