From c70490de1aef4b33ec36c87d152a56a0d42fffb4 Mon Sep 17 00:00:00 2001 From: Bob Jamison Date: Sat, 3 Mar 2007 22:59:22 +0000 Subject: add line number to Element (bzr r2528) --- src/dom/minidom.cpp | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'src/dom/minidom.cpp') diff --git a/src/dom/minidom.cpp b/src/dom/minidom.cpp index 5afcfe5ee..86ab36ce3 100644 --- a/src/dom/minidom.cpp +++ b/src/dom/minidom.cpp @@ -136,11 +136,24 @@ static EntityEntry entities[] = -void Parser::getLineAndColumn(long pos, long *lineNr, long *colNr) +int Parser::countLines(int begin, int end) { - long line = 1; - long col = 1; - for (long i=0 ; i= parselen) return -1; @@ -184,7 +197,7 @@ int Parser::peek(long pos) -int Parser::match(long p0, const char *text) +int Parser::match(int p0, const char *text) { int p = p0; while (*text) @@ -198,7 +211,7 @@ int Parser::match(long p0, const char *text) -int Parser::skipwhite(long p) +int Parser::skipwhite(int p) { while (pparent = par; + n->line = lineNr + countLines(p0, p); par->addChild(n); // Get attributes @@ -468,7 +482,7 @@ int Parser::parseElement(int p0, Element *par,int depth) //# CHILD ELEMENT if (ch == '<') { - p2 = parseElement(p, n, depth+1); + p2 = parseElement(p, n, lineNr + countLines(p0, p)); if (p2 == p) { /* @@ -560,7 +574,7 @@ Element *Parser::parse(XMLCh *buf,int pos,int len) Element *rootNode = new Element("root"); pos = parseVersion(pos); pos = parseDoctype(pos); - pos = parseElement(pos, rootNode, 0); + pos = parseElement(pos, rootNode, 1); return rootNode; } -- cgit v1.2.3