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);
        }
Esempio n. 2
0
            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);
            }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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);
     }
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
            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;
            }