summaryrefslogtreecommitdiffstats
path: root/src/uscxml/DOMUtils.cpp
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-08-03 12:10:57 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-08-03 12:10:57 (GMT)
commit6e1a4a67d5b17e92135cd3f5daf51bf044d76e40 (patch)
tree63d8de9a5ba99dbcd16c6bd867241a7e7466c559 /src/uscxml/DOMUtils.cpp
parent37f8735a66aadd0e3f019f5edbb9356cf4a7b974 (diff)
downloaduscxml-6e1a4a67d5b17e92135cd3f5daf51bf044d76e40.zip
uscxml-6e1a4a67d5b17e92135cd3f5daf51bf044d76e40.tar.gz
uscxml-6e1a4a67d5b17e92135cd3f5daf51bf044d76e40.tar.bz2
Got rid of more dynamic_casts
Diffstat (limited to 'src/uscxml/DOMUtils.cpp')
-rw-r--r--src/uscxml/DOMUtils.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/uscxml/DOMUtils.cpp b/src/uscxml/DOMUtils.cpp
index 0a6e350..aebe943 100644
--- a/src/uscxml/DOMUtils.cpp
+++ b/src/uscxml/DOMUtils.cpp
@@ -48,12 +48,13 @@ std::string DOMUtils::xPathForNode(const Arabica::DOM::Node<std::string>& node,
while(curr) {
switch (curr.getNodeType()) {
case Arabica::DOM::Node_base::ELEMENT_NODE: {
- if (HAS_ATTR(curr, "id")) {
+ Arabica::DOM::Element<std::string> elem = Arabica::DOM::Element<std::string>(curr);
+ if (HAS_ATTR(elem, "id")) {
// we assume ids to be unique and return immediately
if (ns == "*") {
- xPath.insert(0, "//*[local-name() = \"" + TAGNAME(curr) + "\"][@id=\"" + ATTR(curr, "id") + "\"]");
+ xPath.insert(0, "//*[local-name() = \"" + TAGNAME(elem) + "\"][@id=\"" + ATTR(elem, "id") + "\"]");
} else {
- xPath.insert(0, "//" + nsPrefix + TAGNAME(curr) + "[@id=\"" + ATTR(curr, "id") + "\"]");
+ xPath.insert(0, "//" + nsPrefix + TAGNAME(elem) + "[@id=\"" + ATTR(elem, "id") + "\"]");
}
return xPath;
} else {
@@ -62,16 +63,16 @@ std::string DOMUtils::xPathForNode(const Arabica::DOM::Node<std::string>& node,
int index = 1; // xpath indices start at 1
while(sibling) {
if (sibling.getNodeType() == Arabica::DOM::Node_base::ELEMENT_NODE) {
- if (iequals(TAGNAME(sibling), TAGNAME(curr))) {
+ if (iequals(TAGNAME_CAST(sibling), TAGNAME(elem))) {
index++;
}
}
sibling = sibling.getPreviousSibling();
}
if (ns == "*") {
- xPath.insert(0, "/*[local-name() = \"" + TAGNAME(curr) + "\"][" + toStr(index) + "]");
+ xPath.insert(0, "/*[local-name() = \"" + TAGNAME(elem) + "\"][" + toStr(index) + "]");
} else {
- xPath.insert(0, "/" + nsPrefix + TAGNAME(curr) + "[" + toStr(index) + "]");
+ xPath.insert(0, "/" + nsPrefix + TAGNAME(elem) + "[" + toStr(index) + "]");
}
}
break;