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: nextNsNode (may be next attribute in the same element, or ancestors' nsNode) public void AddNsNode (int declaredElement, int name, int ns, int nextNs) { if (namespaces.Length < nsIndex + 1) { nsCapacity *= 4; SetNsArrayLength (nsCapacity); } #if DTM_CLASS namespaces [nsIndex] = new DTMXPathNamespaceNode2 (); #endif namespaces [nsIndex].DeclaredElement = declaredElement; namespaces [nsIndex].Name = name; namespaces [nsIndex].Namespace = ns; namespaces [nsIndex].NextNamespace = nextNs; }
private void SetNsArrayLength (int size) { DTMXPathNamespaceNode2 [] newArr = new DTMXPathNamespaceNode2 [size]; Array.Copy (namespaces, newArr, System.Math.Min (size, namespaces.Length)); namespaces = newArr; }
// Followings are skipped: nextNsNode (may be next attribute in the same element, or ancestors' nsNode) public void AddNsNode (int declaredElement, int name, int ns, int nextNs) { if (namespaces.Length < nsIndex + 1) { nsCapacity *= 4; SetNsArrayLength (nsCapacity); } #if DTM_CLASS namespaces [nsIndex] = new DTMXPathNamespaceNode2 (); #endif namespaces [nsIndex].DeclaredElement = declaredElement; namespaces [nsIndex].Name = name; namespaces [nsIndex].Namespace = ns; namespaces [nsIndex].NextNamespace = nextNs; if (lineInfo != null && lineInfo.HasLineInfo ()) { namespaces [nsIndex].LineNumber = lineInfo.LineNumber; namespaces [nsIndex].LinePosition = lineInfo.LinePosition; } }