summaryrefslogtreecommitdiff
path: root/src/ExpatXmlParser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/ExpatXmlParser.cc')
-rw-r--r--src/ExpatXmlParser.cc63
1 files changed, 32 insertions, 31 deletions
diff --git a/src/ExpatXmlParser.cc b/src/ExpatXmlParser.cc
index 70e8691f..7a38a2ee 100644
--- a/src/ExpatXmlParser.cc
+++ b/src/ExpatXmlParser.cc
@@ -51,14 +51,15 @@ namespace {
void splitNsName(const char** localname, const char** nsUri, const char* src)
{
const char* sep = strchr(src, '\t');
- if(sep) {
- *localname = sep+1;
- size_t nsUriLen = sep-src;
+ if (sep) {
+ *localname = sep + 1;
+ size_t nsUriLen = sep - src;
auto temp = new char[nsUriLen + 1];
memcpy(temp, src, nsUriLen);
temp[nsUriLen] = '\0';
*nsUri = temp;
- } else {
+ }
+ else {
*localname = src;
}
}
@@ -69,12 +70,12 @@ void mlStartElement(void* userData, const char* nsName, const char** attrs)
{
SessionData* sd = reinterpret_cast<SessionData*>(userData);
std::vector<XmlAttr> xmlAttrs;
- if(attrs) {
+ if (attrs) {
const char** p = attrs;
- while(*p) {
+ while (*p) {
XmlAttr xa;
const char* attrNsName = *p++;
- if(!*p) {
+ if (!*p) {
break;
}
splitNsName(&xa.localname, &xa.nsUri, attrNsName);
@@ -89,11 +90,11 @@ void mlStartElement(void* userData, const char* nsName, const char** attrs)
const char* nsUri = nullptr;
splitNsName(&localname, &nsUri, nsName);
sd->psm->beginElement(localname, prefix, nsUri, xmlAttrs);
- delete [] nsUri;
- for(auto& a: xmlAttrs) {
- delete [] a.nsUri;
+ delete[] nsUri;
+ for (auto& a : xmlAttrs) {
+ delete[] a.nsUri;
}
- if(sd->psm->needsCharactersBuffering()) {
+ if (sd->psm->needsCharactersBuffering()) {
sd->charactersStack.push_front(A2STR::NIL);
}
}
@@ -108,12 +109,12 @@ void mlEndElement(void* userData, const char* nsName)
splitNsName(&localname, &nsUri, nsName);
SessionData* sd = reinterpret_cast<SessionData*>(userData);
std::string characters;
- if(sd->psm->needsCharactersBuffering()) {
+ if (sd->psm->needsCharactersBuffering()) {
characters = std::move(sd->charactersStack.front());
sd->charactersStack.pop_front();
}
sd->psm->endElement(localname, prefix, nsUri, std::move(characters));
- delete [] nsUri;
+ delete[] nsUri;
}
} // namespace
@@ -121,14 +122,14 @@ namespace {
void mlCharacters(void* userData, const char* ch, int len)
{
SessionData* sd = reinterpret_cast<SessionData*>(userData);
- if(sd->psm->needsCharactersBuffering()) {
+ if (sd->psm->needsCharactersBuffering()) {
sd->charactersStack.front().append(&ch[0], &ch[len]);
}
}
} // namespace
namespace {
-void setupParser(XML_Parser parser, SessionData *sd)
+void setupParser(XML_Parser parser, SessionData* sd)
{
XML_SetUserData(parser, sd);
XML_SetElementHandler(parser, &mlStartElement, &mlEndElement);
@@ -137,41 +138,40 @@ void setupParser(XML_Parser parser, SessionData *sd)
} // namespace
XmlParser::XmlParser(ParserStateMachine* psm)
- : psm_(psm),
- sessionData_(psm_),
- ctx_(XML_ParserCreateNS(nullptr, static_cast<const XML_Char>('\t'))),
- lastError_(0)
+ : psm_(psm),
+ sessionData_(psm_),
+ ctx_(XML_ParserCreateNS(nullptr, static_cast<const XML_Char>('\t'))),
+ lastError_(0)
{
setupParser(ctx_, &sessionData_);
}
-XmlParser::~XmlParser()
-{
- XML_ParserFree(ctx_);
-}
+XmlParser::~XmlParser() { XML_ParserFree(ctx_); }
ssize_t XmlParser::parseUpdate(const char* data, size_t size)
{
- if(lastError_ != 0) {
+ if (lastError_ != 0) {
return lastError_;
}
XML_Status rv = XML_Parse(ctx_, data, size, 0);
- if(rv == XML_STATUS_ERROR) {
+ if (rv == XML_STATUS_ERROR) {
return lastError_ = ERR_XML_PARSE;
- } else {
+ }
+ else {
return size;
}
}
ssize_t XmlParser::parseFinal(const char* data, size_t size)
{
- if(lastError_ != 0) {
+ if (lastError_ != 0) {
return lastError_;
}
XML_Status rv = XML_Parse(ctx_, data, size, 1);
- if(rv == XML_STATUS_ERROR) {
+ if (rv == XML_STATUS_ERROR) {
return lastError_ = ERR_XML_PARSE;
- } else {
+ }
+ else {
return size;
}
}
@@ -181,9 +181,10 @@ int XmlParser::reset()
psm_->reset();
sessionData_.reset();
XML_Bool rv = XML_ParserReset(ctx_, nullptr);
- if(rv == XML_FALSE) {
+ if (rv == XML_FALSE) {
return lastError_ = ERR_RESET;
- } else {
+ }
+ else {
setupParser(ctx_, &sessionData_);
return 0;
}