- Timestamp:
- 03/18/09 15:15:48 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/New Persistence Exploration/Persistence/Persistence/XmlParser.cs
r1355 r1356 8 8 9 9 10 public class XmlParser : IEnumerable<I ParseToken> {10 public class XmlParser : IEnumerable<ISerializationToken> { 11 11 12 12 private readonly XmlReader reader; 13 private delegate IEnumerator<I ParseToken> Handler();13 private delegate IEnumerator<ISerializationToken> Handler(); 14 14 private readonly Dictionary<string, Handler> handlers; 15 15 … … 28 28 }; 29 29 } 30 public IEnumerator<I ParseToken> GetEnumerator() {30 public IEnumerator<ISerializationToken> GetEnumerator() { 31 31 while (reader.Read()) { 32 32 if (!reader.IsStartElement()) { 33 33 break; 34 34 } 35 IEnumerator<I ParseToken> iterator;35 IEnumerator<ISerializationToken> iterator; 36 36 try { 37 37 iterator = handlers[reader.Name].Invoke(); … … 47 47 } 48 48 } 49 private IEnumerator<I ParseToken> ParsePrimitive() {49 private IEnumerator<ISerializationToken> ParsePrimitive() { 50 50 int? id = null; 51 51 string idString = reader.GetAttribute("id"); 52 52 if (idString != null) 53 53 id = int.Parse(idString); 54 yield return new Primitive (54 yield return new PrimitiveToken( 55 55 reader.GetAttribute("name"), 56 reader.GetAttribute("typeId"),56 int.Parse(reader.GetAttribute("typeId")), 57 57 reader.ReadString(), 58 58 id); 59 59 } 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"); 63 62 string idString = reader.GetAttribute("id"); 64 63 int? id = null; 64 int? typeId = null; 65 65 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(); 69 70 while (iterator.MoveNext()) 70 71 yield return iterator.Current; 71 yield return new CompositeEnd(name, typeId, id);72 yield return new EndToken(name, typeId, id); 72 73 } 73 private IEnumerator<I ParseToken> ParseReference() {74 yield return new Reference (74 private IEnumerator<ISerializationToken> ParseReference() { 75 yield return new ReferenceToken( 75 76 reader.GetAttribute("name"), 76 77 int.Parse(reader.GetAttribute("ref"))); 77 78 } 78 private IEnumerator<I ParseToken> ParseNull() {79 yield return new Null (reader.GetAttribute("name"));79 private IEnumerator<ISerializationToken> ParseNull() { 80 yield return new NullReferenceToken(reader.GetAttribute("name")); 80 81 } 81 82 IEnumerator IEnumerable.GetEnumerator() {
Note: See TracChangeset
for help on using the changeset viewer.