public TrwPathBuilder() { pathStack = new Stack <PathElem>(); pathStack.Push(new PathElem()); stringBuilder = new StringBuilder(); prev = new PathElem { PropName = "LAST" }; }
public void OnRead(ITrwReader reader) { if (popNext) { prev = pathStack.Pop(); popNext = false; } switch (reader.TokenType) { case TrwTokenType.None: break; case TrwTokenType.StartObject: OnStartReadValue(); prev = new PathElem { PropName = "DUMMY" }; break; case TrwTokenType.EndObject: popNext = true; break; case TrwTokenType.StartArray: OnStartReadValue(); prev = new PathElem { ArrayIndex = -1 }; break; case TrwTokenType.EndArray: popNext = true; break; case TrwTokenType.PropertyName: pathStack.Push(new PathElem { PropName = reader.ValueAsString }); break; case TrwTokenType.Null: case TrwTokenType.Boolean: case TrwTokenType.Integer: case TrwTokenType.Float: case TrwTokenType.String: OnStartReadValue(); popNext = true; break; default: throw new ArgumentOutOfRangeException(); } }
public void OnSkip(ITrwReader reader) { prev = pathStack.Pop(); popNext = false; OnRead(reader); }