static private Equal ( string thisname, string thisURN, string name, string URN ) : bool | ||
thisname | string | |
thisURN | string | |
name | string | |
URN | string | |
리턴 | bool |
// equal & ! attribute then move // "a/b/c" pointer from a move to b // return true if reach c and c is an element and c is the axis internal bool MoveToChild(string name, string?URN, int depth, ForwardAxis parent) { // an attribute can never be the same as an element if (Asttree.IsAttribute(this.curNode)) { return(false); } // either moveToParent or moveToChild status will have to be changed into unmatch... if (this.isMatch) { this.isMatch = false; } if (!AxisStack.Equal(this.curNode.Name, this.curNode.Urn, name, URN)) { return(false); } if (this.curDepth == -1) { SetDepth(depth); } else if (depth > this.curDepth) { return(false); } // matched ... if (this.curNode == parent.TopNode) { this.isMatch = true; return(true); } // move down this.curNode DoubleLinkAxis nowNode = (DoubleLinkAxis)(this.curNode.Next !); if (Asttree.IsAttribute(nowNode)) { this.isMatch = true; // for attribute return(false); } this.curNode = nowNode; this.curDepth++; return(false); }
internal bool MoveToChild(string name, string URN, int depth, ForwardAxis parent) { if (!Asttree.IsAttribute(this.curNode)) { if (this.isMatch) { this.isMatch = false; } if (!AxisStack.Equal(this.curNode.Name, this.curNode.Urn, name, URN)) { return(false); } if (this.curDepth == -1) { this.SetDepth(depth); } else if (depth > this.curDepth) { return(false); } if (this.curNode == parent.TopNode) { this.isMatch = true; return(true); } DoubleLinkAxis next = (DoubleLinkAxis)this.curNode.Next; if (Asttree.IsAttribute(next)) { this.isMatch = true; return(false); } this.curNode = next; this.curDepth++; } return(false); }