//---------------------------------- // private method //---------------------------------- /// <summary> /// Serialize the tree out to the stream. /// </summary> private void SerializeImp( BamlLocalizer localizer, BamlTree tree, Stream output ) { Debug.Assert(output != null, "The output stream given is null"); Debug.Assert(tree != null && tree.Root != null, "The tree to be serialized is null."); _writer = new BamlWriter(output); _bamlTreeStack = new Stack <BamlTreeNode>(); // intialize the stack. _bamlTreeStack.Push(tree.Root); while (_bamlTreeStack.Count > 0) { BamlTreeNode currentNode = _bamlTreeStack.Pop(); if (!currentNode.Visited) { // Mark this node so that it won't be serialized again. currentNode.Visited = true; currentNode.Serialize(_writer); PushChildrenToStack(currentNode.Children); } else { BamlStartElementNode elementNode = currentNode as BamlStartElementNode; Debug.Assert(elementNode != null); if (elementNode != null) { localizer.RaiseErrorNotifyEvent( new BamlLocalizerErrorNotifyEventArgs( BamlTreeMap.GetKey(elementNode), BamlLocalizerError.DuplicateElement ) ); } } } // do not close stream as we don't own it. }
// Token: 0x06006E19 RID: 28185 RVA: 0x001FB070 File Offset: 0x001F9270 private void SerializeImp(BamlLocalizer localizer, BamlTree tree, Stream output) { this._writer = new BamlWriter(output); this._bamlTreeStack = new Stack <BamlTreeNode>(); this._bamlTreeStack.Push(tree.Root); while (this._bamlTreeStack.Count > 0) { BamlTreeNode bamlTreeNode = this._bamlTreeStack.Pop(); if (!bamlTreeNode.Visited) { bamlTreeNode.Visited = true; bamlTreeNode.Serialize(this._writer); this.PushChildrenToStack(bamlTreeNode.Children); } else { BamlStartElementNode bamlStartElementNode = bamlTreeNode as BamlStartElementNode; if (bamlStartElementNode != null) { localizer.RaiseErrorNotifyEvent(new BamlLocalizerErrorNotifyEventArgs(BamlTreeMap.GetKey(bamlStartElementNode), BamlLocalizerError.DuplicateElement)); } } } }