~ubuntu-branches/ubuntu/oneiric/monodevelop/oneiric-updates

« back to all changes in this revision

Viewing changes to src/core/MonoDevelop.Projects/MonoDevelop.Projects.Parser/PersistentIndexer.cs

  • Committer: Bazaar Package Importer
  • Author(s): Jo Shields
  • Date: 2009-02-18 08:40:51 UTC
  • mfrom: (1.2.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20090218084051-gh8m6ukvokbwj7cf
Tags: 1.9.2+dfsg-1ubuntu1
* Merge from Debian Experimental (LP: #330519), remaining Ubuntu changes:
  + debian/control:
    - Update for Gnome# 2.24
    - Add libmono-cairo1.0-cil to build-deps to fool pkg-config check

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//  PersistentIndexer.cs
2
 
//
3
 
//  This file was derived from a file from #Develop. 
4
 
//
5
 
//  Copyright (C) 2001-2007 Mike Krüger <mkrueger@novell.com>
6
 
// 
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.
11
 
// 
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.
16
 
//  
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
20
 
using System;
21
 
using System.IO;
22
 
using System.Reflection;
23
 
using MonoDevelop.Core;
24
 
 
25
 
namespace MonoDevelop.Projects.Parser
26
 
{
27
 
        [Serializable]
28
 
        internal sealed class PersistentIndexer
29
 
        {
30
 
                public static DefaultIndexer Resolve (IIndexer source, ITypeResolver typeResolver)
31
 
                {
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);
37
 
 
38
 
                        foreach (IParameter p in source.Parameters)
39
 
                                ind.Parameters.Add (PersistentParameter.Resolve (p, (IMember) ind, typeResolver));
40
 
 
41
 
                        ind.Region = source.Region;
42
 
                        ind.Attributes = PersistentAttributeSectionCollection.Resolve (source.Attributes, typeResolver);
43
 
                        ind.ExplicitDeclaration = PersistentReturnType.Resolve (source.ExplicitDeclaration, typeResolver);
44
 
                        return ind;
45
 
                }
46
 
                
47
 
                public static DefaultIndexer Read (BinaryReader reader, INameDecoder nameTable)
48
 
                {
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);
55
 
                        
56
 
                        uint count = reader.ReadUInt32();
57
 
                        for (uint i = 0; i < count; ++i) {
58
 
                                ind.Parameters.Add (PersistentParameter.Read (reader, (IMember) ind, nameTable));
59
 
                        }
60
 
                        ind.Region = PersistentRegion.Read (reader, nameTable);
61
 
                        ind.Attributes = PersistentAttributeSectionCollection.Read (reader, nameTable);
62
 
                        return ind;
63
 
                }
64
 
                
65
 
                public static void WriteTo (IIndexer ind, BinaryWriter writer, INameEncoder nameTable)
66
 
                {
67
 
                        PersistentHelper.WriteString (ind.Name, writer, nameTable);
68
 
                        PersistentHelper.WriteString (ind.Documentation, writer, nameTable);
69
 
                        
70
 
                        writer.Write((uint)ind.Modifiers);
71
 
                        PersistentReturnType.WriteTo (ind.ReturnType, writer, nameTable);
72
 
                        PersistentReturnType.WriteTo (ind.ExplicitDeclaration, writer, nameTable);
73
 
                        
74
 
                        writer.Write ((uint)ind.Parameters.Count);
75
 
                        foreach (IParameter p in ind.Parameters) {
76
 
                                PersistentParameter.WriteTo (p, writer, nameTable);
77
 
                        }
78
 
                        PersistentRegion.WriteTo (ind.Region, writer, nameTable);
79
 
                        PersistentAttributeSectionCollection.WriteTo (ind.Attributes, writer, nameTable);
80
 
                }
81
 
        }
82
 
}