diff options
Diffstat (limited to 'src/ExpatXmlParser.cc')
| -rw-r--r-- | src/ExpatXmlParser.cc | 63 |
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; } |
