// Returns the row element of the region that the pointer points into private XmlBoundElement?GetRowElement() { XmlBoundElement?rowElem; if (_column != null) { rowElem = _node as XmlBoundElement; Debug.Assert(rowElem != null); Debug.Assert(rowElem.Row != null); return(rowElem); } DataSetMapper.GetRegion(_node, out rowElem); return(rowElem); }
internal bool NextInitialTextLikeNodes(out string value) { Debug.Assert(CurrentNode != null); Debug.Assert(CurrentNode.NodeType == XmlNodeType.Element); #if DEBUG // It's not OK to try to read the initial text value for sub-regions, because we do not know how to revert their initial state if (CurrentNode.NodeType == XmlNodeType.Element && DataSetMapper.GetTableSchemaForElement((XmlElement)(CurrentNode)) != null) { if (CurrentNode != _rowElement) { Debug.Fail("Reading the initial text value for sub-regions."); } } #endif ElementState oldState = _rowElement.ElementState; // We do not want to cause any foliation w/ this iterator or use this iterator once the region was defoliated Debug.Assert(oldState != ElementState.None); XmlNode?n = CurrentNode.FirstChild; value = GetInitialTextFromNodes(ref n); if (n == null) { // If we have been defoliated, we should have stayed that way Debug.Assert((oldState == ElementState.Defoliated) ? (_rowElement.ElementState == ElementState.Defoliated) : true); // Rollback eventual foliation _rowElement.ElementState = oldState; return(NextRight()); } Debug.Assert(!XmlDataDocument.IsTextLikeNode(n)); _currentNode = n; // If we have been defoliated, we should have stayed that way Debug.Assert((oldState == ElementState.Defoliated) ? (_rowElement.ElementState == ElementState.Defoliated) : true); // Rollback eventual foliation _rowElement.ElementState = oldState; return(true); }
internal BaseRegionIterator(DataSetMapper mapper) : base(mapper) { }
private void Init() { _pointers = new Hashtable(); _countAddPointer = 0; _columnChangeList = new ArrayList(); _ignoreDataSetEvents = false; _isFoliationEnabled = true; _optimizeStorage = true; _fDataRowCreatedSpecial = false; _autoFoliationState = ElementState.StrongFoliation; _fAssociateDataRow = true; //this needs to be true for newly created elements should have associated datarows _mapper = new DataSetMapper(); _foliationLock = new object(); _ignoreXmlEvents = true; _attrXml = CreateAttribute("xmlns", "xml", XPathNodePointer.StrReservedXmlns); _attrXml.Value = XPathNodePointer.StrReservedXml; _ignoreXmlEvents = false; }
internal BaseTreeIterator(DataSetMapper mapper) { this.mapper = mapper; }