private bool MatchPath(SimplePath path, NvdlSection parentState) { var stack = parentState.elementNameStack.ToArray(); if (stack.Length == 0) { return(false); } int elemStep = stack.Length - 1; for (int i = path.Steps.Length - 1; i >= 0 && elemStep >= 0;) { SimplePathStep ps = path.Steps [i]; if (ps.Name != stack [elemStep] as string) { // reject a/b while allow a//b if (!ps.Descendants) { return(false); } --elemStep; } else { i--; elemStep--; } } return(true); }
private bool MatchPath(SimplePath path, NvdlSection parentState) { ArrayList stack = parentState.elementNameStack; if (stack.Count == 0) { return(false); } int elemStep = stack.Count - 1; for (int i = path.Steps.Length - 1; i >= 0 && elemStep >= 0;) { SimplePathStep ps = path.Steps [i]; if (ps.Name != stack [elemStep] as string) { // reject a/b while allow a//b if (!ps.Descendants) { return(false); } --elemStep; } else { i--; elemStep--; } } NvdlDebug.Writer.Write("------ matched path: "); for (int i = 0; i < stack.Count; i++) { NvdlDebug.Writer.Write('[' + (string)stack [i] + ']'); } NvdlDebug.Writer.Write(" -> "); for (int i = 0; i < path.Steps.Length; i++) { NvdlDebug.Writer.Write('[' + path.Steps [i].Name + ']'); } NvdlDebug.Writer.WriteLine(); return(true); }
private bool MatchPath (SimplePath path, NvdlSection parentState) { ArrayList stack = parentState.elementNameStack; if (stack.Count == 0) return false; int elemStep = stack.Count - 1; for (int i = path.Steps.Length - 1; i >= 0 && elemStep >= 0;) { SimplePathStep ps = path.Steps [i]; if (ps.Name != stack [elemStep] as string) { // reject a/b while allow a//b if (!ps.Descendants) return false; --elemStep; } else { i--; elemStep--; } } NvdlDebug.Writer.Write ("------ matched path: "); for (int i = 0; i < stack.Count; i++) NvdlDebug.Writer.Write ('[' + (string) stack [i] + ']'); NvdlDebug.Writer.Write (" -> "); for (int i = 0; i < path.Steps.Length; i++) NvdlDebug.Writer.Write ('[' + path.Steps [i].Name + ']'); NvdlDebug.Writer.WriteLine (); return true; }