1
// PersistentIndexer.cs
3
// This file was derived from a file from #Develop.
5
// Copyright (C) 2001-2007 Mike Krüger <mkrueger@novell.com>
7
// This program is free software; you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License as published by
9
// the Free Software Foundation; either version 2 of the License, or
10
// (at your option) any later version.
12
// This program is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
// GNU General Public License for more details.
17
// You should have received a copy of the GNU General Public License
18
// along with this program; if not, write to the Free Software
19
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
using System.Reflection;
23
using MonoDevelop.Core;
25
namespace MonoDevelop.Projects.Parser
28
internal sealed class PersistentIndexer
30
public static DefaultIndexer Resolve (IIndexer source, ITypeResolver typeResolver)
32
DefaultIndexer ind = new DefaultIndexer ();
33
ind.Name = source.Name;
34
ind.Documentation = source.Documentation;
35
ind.Modifiers = source.Modifiers;
36
ind.ReturnType = PersistentReturnType.Resolve (source.ReturnType, typeResolver);
38
foreach (IParameter p in source.Parameters)
39
ind.Parameters.Add (PersistentParameter.Resolve (p, (IMember) ind, typeResolver));
41
ind.Region = source.Region;
42
ind.Attributes = PersistentAttributeSectionCollection.Resolve (source.Attributes, typeResolver);
43
ind.ExplicitDeclaration = PersistentReturnType.Resolve (source.ExplicitDeclaration, typeResolver);
47
public static DefaultIndexer Read (BinaryReader reader, INameDecoder nameTable)
49
DefaultIndexer ind = new DefaultIndexer ();
50
ind.Name = PersistentHelper.ReadString (reader, nameTable);
51
ind.Documentation = PersistentHelper.ReadString (reader, nameTable);
52
ind.Modifiers = (ModifierEnum)reader.ReadUInt32();
53
ind.ReturnType = PersistentReturnType.Read (reader, nameTable);
54
ind.ExplicitDeclaration = PersistentReturnType.Read (reader, nameTable);
56
uint count = reader.ReadUInt32();
57
for (uint i = 0; i < count; ++i) {
58
ind.Parameters.Add (PersistentParameter.Read (reader, (IMember) ind, nameTable));
60
ind.Region = PersistentRegion.Read (reader, nameTable);
61
ind.Attributes = PersistentAttributeSectionCollection.Read (reader, nameTable);
65
public static void WriteTo (IIndexer ind, BinaryWriter writer, INameEncoder nameTable)
67
PersistentHelper.WriteString (ind.Name, writer, nameTable);
68
PersistentHelper.WriteString (ind.Documentation, writer, nameTable);
70
writer.Write((uint)ind.Modifiers);
71
PersistentReturnType.WriteTo (ind.ReturnType, writer, nameTable);
72
PersistentReturnType.WriteTo (ind.ExplicitDeclaration, writer, nameTable);
74
writer.Write ((uint)ind.Parameters.Count);
75
foreach (IParameter p in ind.Parameters) {
76
PersistentParameter.WriteTo (p, writer, nameTable);
78
PersistentRegion.WriteTo (ind.Region, writer, nameTable);
79
PersistentAttributeSectionCollection.WriteTo (ind.Attributes, writer, nameTable);