Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/18/09 14:51:38 (15 years ago)
Author:
epitzer
Message:

Implement a type cache. (#506)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/New Persistence Exploration/Persistence/Persistence/XmlParser.cs

    r1339 r1355  
    66
    77namespace Persistence {
     8
     9
    810  public class XmlParser : IEnumerable<IParseToken> {
    911
     
    5254      yield return new Primitive(
    5355        reader.GetAttribute("name"),
    54         Type.GetType(reader.GetAttribute("type")),
     56        reader.GetAttribute("typeId"),       
    5557        reader.ReadString(),
    5658        id);
     
    5860    private IEnumerator<IParseToken> ParseComposite() {
    5961      string name = reader.GetAttribute("name");     
    60       Type type = Type.GetType(reader.GetAttribute("type"));
     62      string typeId = reader.GetAttribute("typeId");
    6163      string idString = reader.GetAttribute("id");
    6264      int? id = null;
    6365      if (idString != null)
    6466        id = int.Parse(idString);     
    65       yield return new CompositeStart(name, type, id);
     67      yield return new CompositeStart(name, typeId, id);
    6668      IEnumerator<IParseToken> iterator = GetEnumerator();
    6769      while (iterator.MoveNext())
    6870        yield return iterator.Current;
    69       yield return new CompositeEnd(name, type, id);
     71      yield return new CompositeEnd(name, typeId, id);
    7072    }
    7173    private IEnumerator<IParseToken> ParseReference() {
     
    8082      return GetEnumerator();
    8183    }
     84    public static Dictionary<string, int> ParseTypeCache(TextReader reader) {
     85      Dictionary<string, int> typeCache = new Dictionary<string, int>();
     86      XmlReader xmlReader = XmlReader.Create(reader);
     87      while ( xmlReader.Read() ) {
     88        if (xmlReader.Name == "TYPE") {         
     89          typeCache.Add(xmlReader.GetAttribute("name")
     90          , int.Parse(xmlReader.GetAttribute("id")));
     91        }
     92      }
     93      return typeCache;
     94    }
    8295  } 
    8396}
Note: See TracChangeset for help on using the changeset viewer.