summaryrefslogtreecommitdiff
path: root/zenXml/zenxml/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'zenXml/zenxml/parser.h')
-rwxr-xr-xzenXml/zenxml/parser.h22
1 files changed, 12 insertions, 10 deletions
diff --git a/zenXml/zenxml/parser.h b/zenXml/zenxml/parser.h
index bff2bb50..5c6a9ec2 100755
--- a/zenXml/zenxml/parser.h
+++ b/zenXml/zenxml/parser.h
@@ -73,7 +73,7 @@ XmlDoc parse(const std::string& stream); //throw XmlParsingError
//---------------------------- implementation ----------------------------
//see: http://www.w3.org/TR/xml/
-namespace implementation
+namespace impl
{
template <class Predicate> inline
std::string normalize(const std::string& str, Predicate pred) //pred: unary function taking a char, return true if value shall be encoded as hex
@@ -111,7 +111,9 @@ std::string normalize(const std::string& str, Predicate pred) //pred: unary func
inline
std::string normalizeName(const std::string& str)
{
- return normalize(str, [](char c) { return isWhiteSpace(c) || c == '=' || c == '/' || c == '\'' || c == '\"'; });
+ const std::string nameFmt = normalize(str, [](char c) { return isWhiteSpace(c) || c == '=' || c == '/' || c == '\'' || c == '\"'; });
+ assert(!nameFmt.empty());
+ return nameFmt;
}
inline
@@ -201,12 +203,12 @@ void serialize(const XmlElement& element, std::string& stream,
auto attr = element.getAttributes();
for (auto it = attr.first; it != attr.second; ++it)
- stream += ' ' + normalizeName(it->first) + "=\"" + normalizeAttribValue(it->second) + '\"';
+ stream += ' ' + normalizeName(it->name) + "=\"" + normalizeAttribValue(it->value) + '\"';
- //no support for mixed-mode content
auto iterPair = element.getChildren();
if (iterPair.first != iterPair.second) //structured element
{
+ //no support for mixed-mode content
stream += '>' + lineBreak;
std::for_each(iterPair.first, iterPair.second,
@@ -254,7 +256,7 @@ std::string serialize(const XmlDoc& doc,
inline
std::string serialize(const XmlDoc& doc,
const std::string& lineBreak,
- const std::string& indent) { return implementation::serialize(doc, lineBreak, indent); }
+ const std::string& indent) { return impl::serialize(doc, lineBreak, indent); }
/*
Grammar for XML parser
@@ -280,7 +282,7 @@ pm-expression:
element-list-expression
*/
-namespace implementation
+namespace impl
{
struct Token
{
@@ -355,7 +357,7 @@ public:
{
std::string name(&*pos, nameEnd - pos);
pos = nameEnd;
- return implementation::denormalize(name);
+ return denormalize(name);
}
//unknown token
@@ -371,7 +373,7 @@ public:
});
std::string output(pos, it);
pos = it;
- return implementation::denormalize(output);
+ return denormalize(output);
}
std::string extractAttributeValue()
@@ -385,7 +387,7 @@ public:
});
std::string output(pos, it);
pos = it;
- return implementation::denormalize(output);
+ return denormalize(output);
}
size_t posRow() const //current row beginning with 0
@@ -575,7 +577,7 @@ private:
inline
XmlDoc parse(const std::string& stream) //throw XmlParsingError
{
- return implementation::XmlParser(stream).parse(); //throw XmlParsingError
+ return impl::XmlParser(stream).parse(); //throw XmlParsingError
}
}
bgstack15