public DTMXPathDocumentWriter2 (XmlNameTable nt, int defaultCapacity) { nameTable = nt == null ? new NameTable () : nt; nodeCapacity = defaultCapacity; attributeCapacity = nodeCapacity; nsCapacity = 10; idTable = new Hashtable (); nodes = new DTMXPathLinkedNode2 [nodeCapacity]; attributes = new DTMXPathAttributeNode2 [attributeCapacity]; namespaces = new DTMXPathNamespaceNode2 [nsCapacity]; atomicStringPool = new string [20]; nonAtomicStringPool = new string [20]; Init (); }
public DTMXPathDocument2 (XmlNameTable nameTable, DTMXPathLinkedNode2 [] nodes, DTMXPathAttributeNode2 [] attributes, DTMXPathNamespaceNode2 [] namespaces, string [] atomicStringPool, string [] nonAtomicStringPool, Hashtable idTable) { this.Nodes = nodes; this.Attributes = attributes; this.Namespaces = namespaces; this.AtomicStringPool = atomicStringPool; this.NonAtomicStringPool = nonAtomicStringPool; this.IdTable = idTable; this.NameTable = nameTable; root = new DTMXPathNavigator2 (this); }
private void Init (XmlReader reader, XmlSpace space, int defaultCapacity) { this.xmlReader = reader; this.validatingReader = reader as XmlValidatingReader; lineInfo = reader as IXmlLineInfo; this.xmlSpace = space; this.nameTable = reader.NameTable; nodeCapacity = defaultCapacity; attributeCapacity = nodeCapacity; nsCapacity = 10; idTable = new Hashtable (); nodes = new DTMXPathLinkedNode2 [nodeCapacity]; attributes = new DTMXPathAttributeNode2 [attributeCapacity]; namespaces = new DTMXPathNamespaceNode2 [nsCapacity]; atomicStringPool = new string [20]; nonAtomicStringPool = new string [20]; Compile (); }
// Followings are skipped: nextAttribute, public void AddAttribute (int ownerElement, int localName, int ns, int prefix, int value, int lineNumber, int linePosition) { if (attributes.Length < attributeIndex + 1) { attributeCapacity *= 4; SetAttributeArrayLength (attributeCapacity); } #if DTM_CLASS attributes [attributeIndex] = new DTMXPathAttributeNode2 (); #endif attributes [attributeIndex].OwnerElement = ownerElement; attributes [attributeIndex].LocalName = localName; attributes [attributeIndex].NamespaceURI = ns; attributes [attributeIndex].Prefix = prefix; attributes [attributeIndex].Value = value; attributes [attributeIndex].LineNumber = lineNumber; attributes [attributeIndex].LinePosition = linePosition; }
private void SetAttributeArrayLength (int size) { DTMXPathAttributeNode2 [] newArr = new DTMXPathAttributeNode2 [size]; Array.Copy (attributes, newArr, System.Math.Min (size, attributes.Length)); attributes = newArr; }
// Followings are skipped: nextAttribute, public void AddAttribute (int ownerElement, string localName, string ns, string prefix, string value, int lineNumber, int linePosition) { if (attributes.Length < attributeIndex + 1) { attributeCapacity *= 4; SetAttributeArrayLength (attributeCapacity); } #if DTM_CLASS attributes [attributeIndex] = new DTMXPathAttributeNode2 (); #endif attributes [attributeIndex].OwnerElement = ownerElement; attributes [attributeIndex].LocalName = AtomicIndex (localName); attributes [attributeIndex].NamespaceURI = AtomicIndex (ns); attributes [attributeIndex].Prefix = AtomicIndex (prefix); attributes [attributeIndex].Value = NonAtomicIndex (value); attributes [attributeIndex].LineNumber = lineNumber; attributes [attributeIndex].LinePosition = linePosition; }