diff options
Diffstat (limited to 'Swiften')
-rw-r--r-- | Swiften/Parser/PayloadParsers/WhiteboardParser.cpp | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/Swiften/Parser/PayloadParsers/WhiteboardParser.cpp b/Swiften/Parser/PayloadParsers/WhiteboardParser.cpp index ea00335..cdcbb8c 100644 --- a/Swiften/Parser/PayloadParsers/WhiteboardParser.cpp +++ b/Swiften/Parser/PayloadParsers/WhiteboardParser.cpp @@ -21,6 +21,7 @@ namespace Swift { WhiteboardParser::WhiteboardParser() : actualIsText(false), level_(0) { + operation = NULL; } void WhiteboardParser::handleStartElement(const std::string& element, const std::string&, const AttributeMap& attributes) { @@ -30,31 +31,21 @@ namespace Swift { std::string type = attributes.getAttributeValue("type").get_value_or(""); if (type == "insert") { WhiteboardInsertOperation::ref insertOp = boost::make_shared<WhiteboardInsertOperation>(); - try { - insertOp->setID(attributes.getAttributeValue("id").get_value_or("")); - insertOp->setParentID(attributes.getAttributeValue("parentid").get_value_or("")); - insertOp->setPos(boost::lexical_cast<int>(attributes.getAttributeValue("pos").get_value_or("0"))); - } catch (boost::bad_lexical_cast&) { - } operation = insertOp; } else if (type == "update") { WhiteboardUpdateOperation::ref updateOp = boost::make_shared<WhiteboardUpdateOperation>(); - try { - updateOp->setID(attributes.getAttributeValue("id").get_value_or("")); - updateOp->setParentID(attributes.getAttributeValue("parentid").get_value_or("")); - updateOp->setPos(boost::lexical_cast<int>(attributes.getAttributeValue("pos").get_value_or("0"))); - } catch (boost::bad_lexical_cast&) { - } operation = updateOp; } else if (type == "delete") { WhiteboardDeleteOperation::ref deleteOp = boost::make_shared<WhiteboardDeleteOperation>(); + operation = deleteOp; + } + if (operation) { try { - deleteOp->setID(attributes.getAttributeValue("id").get_value_or("")); - deleteOp->setParentID(attributes.getAttributeValue("parentid").get_value_or("")); - deleteOp->setPos(boost::lexical_cast<int>(attributes.getAttributeValue("pos").get_value_or("0"))); + operation->setID(attributes.getAttributeValue("id").get_value_or("")); + operation->setParentID(attributes.getAttributeValue("parentid").get_value_or("")); + operation->setPos(boost::lexical_cast<int>(attributes.getAttributeValue("pos").get_value_or("0"))); } catch (boost::bad_lexical_cast&) { } - operation = deleteOp; } } else if (level_ == 2) { |