Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/18/09 15:15:48 (15 years ago)
Author:
epitzer
Message:

Unify token classes for parsing and formatting, make format specification mandatory. (#506)

File:
1 edited

Legend:

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

    r1355 r1356  
    88
    99
    10   public class XmlParser : IEnumerable<IParseToken> {
     10  public class XmlParser : IEnumerable<ISerializationToken> {
    1111
    1212    private readonly XmlReader reader;
    13     private delegate IEnumerator<IParseToken> Handler();
     13    private delegate IEnumerator<ISerializationToken> Handler();
    1414    private readonly Dictionary<string, Handler> handlers;
    1515
     
    2828                   };
    2929    }
    30     public IEnumerator<IParseToken> GetEnumerator() {
     30    public IEnumerator<ISerializationToken> GetEnumerator() {
    3131      while (reader.Read()) {
    3232        if (!reader.IsStartElement()) {
    3333          break;
    3434        }
    35         IEnumerator<IParseToken> iterator;
     35        IEnumerator<ISerializationToken> iterator;
    3636        try {
    3737          iterator = handlers[reader.Name].Invoke();
     
    4747      }
    4848    }
    49     private IEnumerator<IParseToken> ParsePrimitive() {
     49    private IEnumerator<ISerializationToken> ParsePrimitive() {
    5050      int? id = null;
    5151      string idString = reader.GetAttribute("id");
    5252      if (idString != null)
    5353        id = int.Parse(idString);
    54       yield return new Primitive(
     54      yield return new PrimitiveToken(
    5555        reader.GetAttribute("name"),
    56         reader.GetAttribute("typeId"),       
     56        int.Parse(reader.GetAttribute("typeId")),
    5757        reader.ReadString(),
    5858        id);
    5959    }
    60     private IEnumerator<IParseToken> ParseComposite() {
    61       string name = reader.GetAttribute("name");     
    62       string typeId = reader.GetAttribute("typeId");
     60    private IEnumerator<ISerializationToken> ParseComposite() {
     61      string name = reader.GetAttribute("name");           
    6362      string idString = reader.GetAttribute("id");
    6463      int? id = null;
     64      int? typeId = null;
    6565      if (idString != null)
    66         id = int.Parse(idString);     
    67       yield return new CompositeStart(name, typeId, id);
    68       IEnumerator<IParseToken> iterator = GetEnumerator();
     66        id = int.Parse(idString);
     67        typeId = int.Parse(reader.GetAttribute("typeId"));
     68      yield return new BeginToken(name, typeId, id);
     69      IEnumerator<ISerializationToken> iterator = GetEnumerator();
    6970      while (iterator.MoveNext())
    7071        yield return iterator.Current;
    71       yield return new CompositeEnd(name, typeId, id);
     72      yield return new EndToken(name, typeId, id);
    7273    }
    73     private IEnumerator<IParseToken> ParseReference() {
    74       yield return new Reference(
     74    private IEnumerator<ISerializationToken> ParseReference() {
     75      yield return new ReferenceToken(
    7576        reader.GetAttribute("name"),
    7677        int.Parse(reader.GetAttribute("ref")));
    7778    }
    78     private IEnumerator<IParseToken> ParseNull() {
    79       yield return new Null(reader.GetAttribute("name"));
     79    private IEnumerator<ISerializationToken> ParseNull() {
     80      yield return new NullReferenceToken(reader.GetAttribute("name"));
    8081    }
    8182    IEnumerator IEnumerable.GetEnumerator() {
Note: See TracChangeset for help on using the changeset viewer.