private void ReadList(ValueHandle value) { XmlBinaryNodeType type; if (this.listValue == null) { this.listValue = new ValueHandle(this); } int length = 0; int offset = this.Offset; Label_001D: type = this.GetNodeType(); this.SkipNodeType(); if (type == XmlBinaryNodeType.StartListText) { XmlExceptionHelper.ThrowInvalidBinaryFormat(this.reader); } if (type != XmlBinaryNodeType.EndListText) { this.ReadValue(type, this.listValue); length++; goto Label_001D; } value.SetValue(ValueHandleType.List, offset, length); }
private void ReadList(ValueHandle value) { if (_listValue == null) { _listValue = new ValueHandle(this); } int count = 0; int offset = this.Offset; while (true) { XmlBinaryNodeType nodeType = GetNodeType(); SkipNodeType(); if (nodeType == XmlBinaryNodeType.StartListText) { XmlExceptionHelper.ThrowInvalidBinaryFormat(_reader); } if (nodeType == XmlBinaryNodeType.EndListText) { break; } ReadValue(nodeType, _listValue); count++; } value.SetValue(ValueHandleType.List, offset, count); }
private void ReadUnicodeValue(ValueHandle value, int length) { if ((length & 1) != 0) { XmlExceptionHelper.ThrowInvalidBinaryFormat(_reader); } ReadValue(value, ValueHandleType.Unicode, length); }
public void ReadQName(ValueHandle value) { int prefix = ReadUInt8(); if (prefix >= 26) { XmlExceptionHelper.ThrowInvalidBinaryFormat(_reader); } int key = ReadDictionaryKey(); value.SetQNameValue(prefix, key); }
private void ReadValue(ValueHandle value, ValueHandleType type, int length) { int offset = ReadBytes(length); value.SetValue(type, offset, length); }
public void ReadValue(XmlBinaryNodeType nodeType, ValueHandle value) { switch (nodeType) { case XmlBinaryNodeType.MinText: value.SetValue(ValueHandleType.Zero); return; case XmlBinaryNodeType.OneText: value.SetValue(ValueHandleType.One); return; case XmlBinaryNodeType.FalseText: value.SetValue(ValueHandleType.False); return; case XmlBinaryNodeType.TrueText: value.SetValue(ValueHandleType.True); return; case XmlBinaryNodeType.Int8Text: this.ReadValue(value, ValueHandleType.Int8, 1); return; case XmlBinaryNodeType.Int16Text: this.ReadValue(value, ValueHandleType.Int16, 2); return; case XmlBinaryNodeType.Int32Text: this.ReadValue(value, ValueHandleType.Int32, 4); return; case XmlBinaryNodeType.Int64Text: this.ReadValue(value, ValueHandleType.Int64, 8); return; case XmlBinaryNodeType.FloatText: this.ReadValue(value, ValueHandleType.Single, 4); return; case XmlBinaryNodeType.DoubleText: this.ReadValue(value, ValueHandleType.Double, 8); return; case XmlBinaryNodeType.DecimalText: this.ReadValue(value, ValueHandleType.Decimal, 0x10); return; case XmlBinaryNodeType.DateTimeText: this.ReadValue(value, ValueHandleType.DateTime, 8); return; case XmlBinaryNodeType.Chars8Text: this.ReadValue(value, ValueHandleType.UTF8, this.ReadUInt8()); return; case XmlBinaryNodeType.Chars16Text: this.ReadValue(value, ValueHandleType.UTF8, this.ReadUInt16()); return; case XmlBinaryNodeType.Chars32Text: this.ReadValue(value, ValueHandleType.UTF8, this.ReadUInt31()); return; case XmlBinaryNodeType.Bytes8Text: this.ReadValue(value, ValueHandleType.Base64, this.ReadUInt8()); return; case XmlBinaryNodeType.Bytes16Text: this.ReadValue(value, ValueHandleType.Base64, this.ReadUInt16()); return; case XmlBinaryNodeType.Bytes32Text: this.ReadValue(value, ValueHandleType.Base64, this.ReadUInt31()); return; case XmlBinaryNodeType.StartListText: this.ReadList(value); return; case XmlBinaryNodeType.EmptyText: value.SetValue(ValueHandleType.Empty); return; case XmlBinaryNodeType.DictionaryText: value.SetDictionaryValue(this.ReadDictionaryKey()); return; case XmlBinaryNodeType.UniqueIdText: this.ReadValue(value, ValueHandleType.UniqueId, 0x10); return; case XmlBinaryNodeType.TimeSpanText: this.ReadValue(value, ValueHandleType.TimeSpan, 8); return; case XmlBinaryNodeType.GuidText: this.ReadValue(value, ValueHandleType.Guid, 0x10); return; case XmlBinaryNodeType.UInt64Text: this.ReadValue(value, ValueHandleType.UInt64, 8); return; case XmlBinaryNodeType.BoolText: value.SetValue((this.ReadUInt8() != 0) ? ValueHandleType.True : ValueHandleType.False); return; case XmlBinaryNodeType.UnicodeChars8Text: this.ReadUnicodeValue(value, this.ReadUInt8()); return; case XmlBinaryNodeType.UnicodeChars16Text: this.ReadUnicodeValue(value, this.ReadUInt16()); return; case XmlBinaryNodeType.UnicodeChars32Text: this.ReadUnicodeValue(value, this.ReadUInt31()); return; case XmlBinaryNodeType.QNameDictionaryText: this.ReadQName(value); return; } XmlExceptionHelper.ThrowInvalidBinaryFormat(this.reader); }
public XmlAttributeTextNode(PrefixHandle prefix, StringHandle localName, ValueHandle value) : base(XmlNodeType.Text, prefix, localName, value, XmlNodeFlags.HasValue | XmlNodeFlags.CanGetAttribute | XmlNodeFlags.CanMoveToElement | XmlNodeFlags.AtomicValue | XmlNodeFlags.HasContent, ReadState.Interactive, null, 1) { }
public XmlEndElementNode(PrefixHandle prefix, StringHandle localName, ValueHandle value) : base(XmlNodeType.EndElement, prefix, localName, value, XmlNodeFlags.HasContent, ReadState.Interactive, null, -1) { }
private XmlElementNode(PrefixHandle prefix, StringHandle localName, ValueHandle value) : base(XmlNodeType.Element, prefix, localName, value, XmlNodeFlags.CanGetAttribute | XmlNodeFlags.HasContent, ReadState.Interactive, null, -1) { _endElementNode = new XmlEndElementNode(prefix, localName, value); }
void ReadUnicodeValue(ValueHandle value, int length) { if ((length & 1) != 0) XmlExceptionHelper.ThrowInvalidBinaryFormat(reader); ReadValue(value, ValueHandleType.Unicode, length); }
void ReadValue(ValueHandle value, ValueHandleType type, int length) { int offset = ReadBytes(length); value.SetValue(type, offset, length); }
public void ReadValue(XmlBinaryNodeType nodeType, ValueHandle value) { switch (nodeType) { case XmlBinaryNodeType.EmptyText: value.SetValue(ValueHandleType.Empty); break; case XmlBinaryNodeType.ZeroText: value.SetValue(ValueHandleType.Zero); break; case XmlBinaryNodeType.OneText: value.SetValue(ValueHandleType.One); break; case XmlBinaryNodeType.TrueText: value.SetValue(ValueHandleType.True); break; case XmlBinaryNodeType.FalseText: value.SetValue(ValueHandleType.False); break; case XmlBinaryNodeType.BoolText: value.SetValue(ReadUInt8() != 0 ? ValueHandleType.True : ValueHandleType.False); break; case XmlBinaryNodeType.Chars8Text: ReadValue(value, ValueHandleType.UTF8, ReadUInt8()); break; case XmlBinaryNodeType.Chars16Text: ReadValue(value, ValueHandleType.UTF8, ReadUInt16()); break; case XmlBinaryNodeType.Chars32Text: ReadValue(value, ValueHandleType.UTF8, ReadUInt31()); break; case XmlBinaryNodeType.UnicodeChars8Text: ReadUnicodeValue(value, ReadUInt8()); break; case XmlBinaryNodeType.UnicodeChars16Text: ReadUnicodeValue(value, ReadUInt16()); break; case XmlBinaryNodeType.UnicodeChars32Text: ReadUnicodeValue(value, ReadUInt31()); break; case XmlBinaryNodeType.Bytes8Text: ReadValue(value, ValueHandleType.Base64, ReadUInt8()); break; case XmlBinaryNodeType.Bytes16Text: ReadValue(value, ValueHandleType.Base64, ReadUInt16()); break; case XmlBinaryNodeType.Bytes32Text: ReadValue(value, ValueHandleType.Base64, ReadUInt31()); break; case XmlBinaryNodeType.DictionaryText: value.SetDictionaryValue(ReadDictionaryKey()); break; case XmlBinaryNodeType.UniqueIdText: ReadValue(value, ValueHandleType.UniqueId, ValueHandleLength.UniqueId); break; case XmlBinaryNodeType.GuidText: ReadValue(value, ValueHandleType.Guid, ValueHandleLength.Guid); break; case XmlBinaryNodeType.DecimalText: ReadValue(value, ValueHandleType.Decimal, ValueHandleLength.Decimal); break; case XmlBinaryNodeType.Int8Text: ReadValue(value, ValueHandleType.Int8, ValueHandleLength.Int8); break; case XmlBinaryNodeType.Int16Text: ReadValue(value, ValueHandleType.Int16, ValueHandleLength.Int16); break; case XmlBinaryNodeType.Int32Text: ReadValue(value, ValueHandleType.Int32, ValueHandleLength.Int32); break; case XmlBinaryNodeType.Int64Text: ReadValue(value, ValueHandleType.Int64, ValueHandleLength.Int64); break; case XmlBinaryNodeType.UInt64Text: ReadValue(value, ValueHandleType.UInt64, ValueHandleLength.UInt64); break; case XmlBinaryNodeType.FloatText: ReadValue(value, ValueHandleType.Single, ValueHandleLength.Single); break; case XmlBinaryNodeType.DoubleText: ReadValue(value, ValueHandleType.Double, ValueHandleLength.Double); break; case XmlBinaryNodeType.TimeSpanText: ReadValue(value, ValueHandleType.TimeSpan, ValueHandleLength.TimeSpan); break; case XmlBinaryNodeType.DateTimeText: ReadValue(value, ValueHandleType.DateTime, ValueHandleLength.DateTime); break; case XmlBinaryNodeType.StartListText: ReadList(value); break; case XmlBinaryNodeType.QNameDictionaryText: ReadQName(value); break; default: XmlExceptionHelper.ThrowInvalidBinaryFormat(reader); break; } }
public bool TryGetValueAsDictionaryString(out XmlDictionaryString value) { if (qnameType == QNameType.Normal) { return this.Value.TryGetDictionaryString(out value); } else { Fx.Assert(qnameType == QNameType.Xmlns, ""); value = null; return false; } }
protected XmlNode(XmlNodeType nodeType, PrefixHandle prefix, StringHandle localName, ValueHandle value, XmlNodeFlags nodeFlags, ReadState readState, XmlAttributeTextNode attributeTextNode, int depthDelta) { _nodeType = nodeType; _prefix = prefix; _localName = localName; _value = value; _ns = NamespaceManager.EmptyNamespace; _hasValue = ((nodeFlags & XmlNodeFlags.HasValue) != 0); _canGetAttribute = ((nodeFlags & XmlNodeFlags.CanGetAttribute) != 0); _canMoveToElement = ((nodeFlags & XmlNodeFlags.CanMoveToElement) != 0); _isAtomicValue = ((nodeFlags & XmlNodeFlags.AtomicValue) != 0); _skipValue = ((nodeFlags & XmlNodeFlags.SkipValue) != 0); _hasContent = ((nodeFlags & XmlNodeFlags.HasContent) != 0); _readState = readState; _attributeTextNode = attributeTextNode; _exitScope = (nodeType == XmlNodeType.EndElement); _depthDelta = depthDelta; _isEmptyElement = false; _quoteChar = '"'; _qnameType = QNameType.Normal; }
void ReadList(ValueHandle value) { if (listValue == null) { listValue = new ValueHandle(this); } int count = 0; int offset = this.Offset; while (true) { XmlBinaryNodeType nodeType = GetNodeType(); SkipNodeType(); if (nodeType == XmlBinaryNodeType.StartListText) XmlExceptionHelper.ThrowInvalidBinaryFormat(reader); if (nodeType == XmlBinaryNodeType.EndListText) break; ReadValue(nodeType, listValue); count++; } value.SetValue(ValueHandleType.List, offset, count); }
private XmlAttributeNode(PrefixHandle prefix, StringHandle localName, ValueHandle value) : base(XmlNodeType.Attribute, prefix, localName, value, XmlNodeFlags.CanGetAttribute | XmlNodeFlags.CanMoveToElement | XmlNodeFlags.HasValue | XmlNodeFlags.AtomicValue, ReadState.Interactive, new XmlAttributeTextNode(prefix, localName, value), 0) { }
public void ReadQName(ValueHandle value) { int prefix = ReadUInt8(); if (prefix >= 26) XmlExceptionHelper.ThrowInvalidBinaryFormat(reader); int key = ReadDictionaryKey(); value.SetQNameValue(prefix, key); }
protected XmlTextNode(XmlNodeType nodeType, PrefixHandle prefix, StringHandle localName, ValueHandle value, XmlNodeFlags nodeFlags, ReadState readState, XmlAttributeTextNode attributeTextNode, int depthDelta) : base(nodeType, prefix, localName, value, nodeFlags, readState, attributeTextNode, depthDelta) { }
private void ReadName(ValueHandle value) { int count = this.ReadMultiByteUInt31(); int offset = base.BufferReader.ReadBytes(count); value.SetValue(ValueHandleType.UTF8, offset, count); }
private void ReadName(ValueHandle value) { int length = ReadMultiByteUInt31(); int offset = BufferReader.ReadBytes(length); value.SetValue(ValueHandleType.UTF8, offset, length); }
public void ReadValue(XmlBinaryNodeType nodeType, ValueHandle value) { switch (nodeType) { case XmlBinaryNodeType.EmptyText: value.SetValue(ValueHandleType.Empty); break; case XmlBinaryNodeType.ZeroText: value.SetValue(ValueHandleType.Zero); break; case XmlBinaryNodeType.OneText: value.SetValue(ValueHandleType.One); break; case XmlBinaryNodeType.TrueText: value.SetValue(ValueHandleType.True); break; case XmlBinaryNodeType.FalseText: value.SetValue(ValueHandleType.False); break; case XmlBinaryNodeType.BoolText: value.SetValue(ReadUInt8() != 0 ? ValueHandleType.True : ValueHandleType.False); break; case XmlBinaryNodeType.Chars8Text: ReadValue(value, ValueHandleType.UTF8, ReadUInt8()); break; case XmlBinaryNodeType.Chars16Text: ReadValue(value, ValueHandleType.UTF8, ReadUInt16()); break; case XmlBinaryNodeType.Chars32Text: ReadValue(value, ValueHandleType.UTF8, ReadUInt31()); break; case XmlBinaryNodeType.UnicodeChars8Text: ReadUnicodeValue(value, ReadUInt8()); break; case XmlBinaryNodeType.UnicodeChars16Text: ReadUnicodeValue(value, ReadUInt16()); break; case XmlBinaryNodeType.UnicodeChars32Text: ReadUnicodeValue(value, ReadUInt31()); break; case XmlBinaryNodeType.Bytes8Text: ReadValue(value, ValueHandleType.Base64, ReadUInt8()); break; case XmlBinaryNodeType.Bytes16Text: ReadValue(value, ValueHandleType.Base64, ReadUInt16()); break; case XmlBinaryNodeType.Bytes32Text: ReadValue(value, ValueHandleType.Base64, ReadUInt31()); break; case XmlBinaryNodeType.DictionaryText: value.SetDictionaryValue(ReadDictionaryKey()); break; case XmlBinaryNodeType.UniqueIdText: ReadValue(value, ValueHandleType.UniqueId, ValueHandleLength.UniqueId); break; case XmlBinaryNodeType.GuidText: ReadValue(value, ValueHandleType.Guid, ValueHandleLength.Guid); break; case XmlBinaryNodeType.DecimalText: ReadValue(value, ValueHandleType.Decimal, ValueHandleLength.Decimal); break; case XmlBinaryNodeType.Int8Text: ReadValue(value, ValueHandleType.Int8, ValueHandleLength.Int8); break; case XmlBinaryNodeType.Int16Text: ReadValue(value, ValueHandleType.Int16, ValueHandleLength.Int16); break; case XmlBinaryNodeType.Int32Text: ReadValue(value, ValueHandleType.Int32, ValueHandleLength.Int32); break; case XmlBinaryNodeType.Int64Text: ReadValue(value, ValueHandleType.Int64, ValueHandleLength.Int64); break; case XmlBinaryNodeType.UInt64Text: ReadValue(value, ValueHandleType.UInt64, ValueHandleLength.UInt64); break; case XmlBinaryNodeType.FloatText: ReadValue(value, ValueHandleType.Single, ValueHandleLength.Single); break; case XmlBinaryNodeType.DoubleText: ReadValue(value, ValueHandleType.Double, ValueHandleLength.Double); break; case XmlBinaryNodeType.TimeSpanText: ReadValue(value, ValueHandleType.TimeSpan, ValueHandleLength.TimeSpan); break; case XmlBinaryNodeType.DateTimeText: ReadValue(value, ValueHandleType.DateTime, ValueHandleLength.DateTime); break; case XmlBinaryNodeType.StartListText: ReadList(value); break; case XmlBinaryNodeType.QNameDictionaryText: ReadQName(value); break; default: XmlExceptionHelper.ThrowInvalidBinaryFormat(_reader); break; } }