diff options
author | Tobias Markmann <tm@ayena.de> | 2016-11-23 07:09:39 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2016-11-23 11:30:02 (GMT) |
commit | e405ff3561be3d3c0bd79d7d5173923a8828cf02 (patch) | |
tree | 9118ef838ebfaec1df90ec24761944b5d833774c /Swiften/Serializer/PayloadSerializers/FormSerializer.cpp | |
parent | 8a71b91be885652f37c5aab5e1ecf25af4599fbc (diff) | |
download | swift-e405ff3561be3d3c0bd79d7d5173923a8828cf02.zip swift-e405ff3561be3d3c0bd79d7d5173923a8828cf02.tar.bz2 |
Migrate remaining Swiften/Base/foreach.h use to range-based for loop
Test-Information:
Build on macOS 10.12.1 and all tests pass.
Change-Id: Iedaa3fa7e7672c77909fd0568bf30e9393cb87e0
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers/FormSerializer.cpp')
-rw-r--r-- | Swiften/Serializer/PayloadSerializers/FormSerializer.cpp | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/FormSerializer.cpp b/Swiften/Serializer/PayloadSerializers/FormSerializer.cpp index ed010b4..f723ead 100644 --- a/Swiften/Serializer/PayloadSerializers/FormSerializer.cpp +++ b/Swiften/Serializer/PayloadSerializers/FormSerializer.cpp @@ -1,208 +1,209 @@ /* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include <Swiften/Serializer/PayloadSerializers/FormSerializer.h> #include <memory> #include <string> #include <Swiften/Base/Algorithm.h> #include <Swiften/Base/String.h> -#include <Swiften/Base/foreach.h> #include <Swiften/Serializer/XML/XMLRawTextNode.h> #include <Swiften/Serializer/XML/XMLTextNode.h> using namespace Swift; namespace { template<typename T> void serializeValueAsString(std::shared_ptr<FormField> field, std::shared_ptr<XMLElement> parent) { std::string value = std::dynamic_pointer_cast<T>(field)->getValue(); if (!value.empty()) { std::shared_ptr<XMLElement> valueElement(new XMLElement("value")); valueElement->addNode(XMLTextNode::create(value)); parent->addNode(valueElement); } } } namespace Swift { FormSerializer::FormSerializer() : GenericPayloadSerializer<Form>() {} std::string FormSerializer::serializePayload(std::shared_ptr<Form> form) const { if (!form) { return ""; } std::shared_ptr<XMLElement> formElement(new XMLElement("x", "jabber:x:data")); std::string type; switch (form->getType()) { case Form::FormType: type = "form"; break; case Form::SubmitType: type = "submit"; break; case Form::CancelType: type = "cancel"; break; case Form::ResultType: type = "result"; break; } formElement->setAttribute("type", type); if (!form->getTitle().empty()) { multiLineify(form->getTitle(), "title", formElement); } if (!form->getInstructions().empty()) { multiLineify(form->getInstructions(), "instructions", formElement); } - foreach(std::shared_ptr<FormPage> page, form->getPages()) { + for (const auto& page : form->getPages()) { formElement->addNode(pageToXML(page)); } - foreach(std::shared_ptr<FormField> field, form->getFields()) { + for (const auto& field : form->getFields()) { formElement->addNode(fieldToXML(field, true)); } if (!form->getReportedFields().empty()) { std::shared_ptr<XMLElement> reportedElement(new XMLElement("reported")); - foreach(FormField::ref field, form->getReportedFields()) { + for (const auto& field : form->getReportedFields()) { reportedElement->addNode(fieldToXML(field, true)); } formElement->addNode(reportedElement); } - foreach(Form::FormItem item, form->getItems()) { + for (const auto& item : form->getItems()) { std::shared_ptr<XMLElement> itemElement(new XMLElement("item")); - foreach(FormField::ref field, item) { + for (const auto& field : item) { itemElement->addNode(fieldToXML(field, false)); } formElement->addNode(itemElement); } - foreach(const FormText::text text, form->getTextElements()) { + for (const auto& text : form->getTextElements()) { formElement->addNode(textToXML(text)); } - foreach (std::shared_ptr<FormField> field, fields_) { + for (const auto& field : fields_) { formElement->addNode(fieldToXML(field,true)); } return formElement->serialize(); } std::shared_ptr<XMLElement> FormSerializer::textToXML(std::shared_ptr<FormText> text) const { std::shared_ptr<XMLElement> textElement (new XMLElement("text")); textElement->addNode(std::make_shared<XMLTextNode>(text->getTextString())); return textElement; } std::shared_ptr<XMLElement> FormSerializer::fieldRefToXML(const std::string& ref) const { std::shared_ptr<XMLElement> fieldRefElement(new XMLElement("fieldref")); fieldRefElement->setAttribute("var", ref); return fieldRefElement; } std::shared_ptr<XMLElement> FormSerializer::pageToXML(std::shared_ptr<FormPage> page) const { std::shared_ptr<XMLElement> pageElement(new XMLElement("page")); pageElement->setAttribute("xmlns", "http://jabber.org/protocol/xdata-layout"); if (!page->getLabel().empty()) { pageElement->setAttribute("label", page->getLabel()); } - foreach(const FormText::text text, page->getTextElements()) { + for (const auto& text : page->getTextElements()) { pageElement->addNode(textToXML(text)); } - foreach (const std::shared_ptr<FormField> field, page->getFields()) { + for (const auto& field : page->getFields()) { pageElement->addNode(fieldRefToXML(field->getName())); fields_.push_back(field); } - foreach(const FormReportedRef::ref reportedRef, page->getReportedRefs()) { + for (const auto& reportedRef: page->getReportedRefs()) { + (void)reportedRef; pageElement->addNode(std::make_shared<XMLElement>("reportedref")); } - foreach(const FormSection::section section, page->getChildSections()) { + for (const auto& section : page->getChildSections()) { pageElement->addNode(sectionToXML(section)); } return pageElement; } std::shared_ptr<XMLElement> FormSerializer::sectionToXML(std::shared_ptr<FormSection> section) const { std::shared_ptr<XMLElement> sectionElement(new XMLElement("section")); if (!section->getLabel().empty()) { sectionElement->setAttribute("label", section->getLabel()); } - foreach(const FormText::text text, section->getTextElements()) { + for (const auto& text : section->getTextElements()) { sectionElement->addNode(textToXML(text)); } - foreach(const std::shared_ptr<FormField> field, section->getFields()) { + for (const auto& field : section->getFields()) { sectionElement->addNode(fieldRefToXML(field->getName())); fields_.push_back(field); } - foreach(const FormReportedRef::ref reportedRef, section->getReportedRefs()) { + for (const auto& reportedRef : section->getReportedRefs()) { + (void)reportedRef; sectionElement->addNode(std::make_shared<XMLElement>("reportedref")); } - foreach(const FormSection::section childSection, section->getChildSections()) { + for (const auto& childSection : section->getChildSections()) { sectionElement->addNode(sectionToXML(childSection)); } return sectionElement; } std::shared_ptr<XMLElement> FormSerializer::fieldToXML(std::shared_ptr<FormField> field, bool withTypeAttribute) const { std::shared_ptr<XMLElement> fieldElement(new XMLElement("field")); if (!field->getName().empty()) { fieldElement->setAttribute("var", field->getName()); } if (!field->getLabel().empty()) { fieldElement->setAttribute("label", field->getLabel()); } if (field->getRequired()) { fieldElement->addNode(std::make_shared<XMLElement>("required")); } if (!field->getDescription().empty()) { std::shared_ptr<XMLElement> descriptionElement(new XMLElement("desc")); descriptionElement->addNode(std::make_shared<XMLTextNode>(field->getDescription())); fieldElement->addNode(descriptionElement); } // Set the value and type std::string fieldType; switch (field->getType()) { case FormField::UnknownType: fieldType = ""; break; case FormField::BooleanType: fieldType = "boolean"; break; case FormField::FixedType: fieldType = "fixed"; break; case FormField::HiddenType: fieldType = "hidden"; break; case FormField::ListSingleType: fieldType = "list-single"; break; case FormField::TextMultiType: fieldType = "text-multi"; break; case FormField::TextPrivateType: fieldType = "text-private"; break; case FormField::TextSingleType: fieldType = "text-single"; break; case FormField::JIDSingleType: fieldType = "jid-single"; break; case FormField::JIDMultiType: fieldType = "jid-multi"; break; case FormField::ListMultiType: fieldType = "list-multi"; break; } if (!fieldType.empty() && withTypeAttribute) { fieldElement->setAttribute("type", fieldType); } - foreach (const std::string& value, field->getValues()) { + for (const auto& value : field->getValues()) { std::shared_ptr<XMLElement> valueElement = std::make_shared<XMLElement>("value"); valueElement->addNode(std::make_shared<XMLTextNode>(value)); fieldElement->addNode(valueElement); } - foreach (const FormField::Option& option, field->getOptions()) { + for (const auto& option : field->getOptions()) { std::shared_ptr<XMLElement> optionElement(new XMLElement("option")); if (!option.label.empty()) { optionElement->setAttribute("label", option.label); } std::shared_ptr<XMLElement> valueElement(new XMLElement("value")); valueElement->addNode(XMLTextNode::create(option.value)); optionElement->addNode(valueElement); fieldElement->addNode(optionElement); } return fieldElement; } void FormSerializer::multiLineify(const std::string& text, const std::string& elementName, std::shared_ptr<XMLElement> element) const { std::string unRdText(text); erase(unRdText, '\r'); std::vector<std::string> lines = String::split(unRdText, '\n'); - foreach (std::string line, lines) { + for (const auto& line : lines) { std::shared_ptr<XMLElement> lineElement(new XMLElement(elementName)); lineElement->addNode(std::make_shared<XMLTextNode>(line)); element->addNode(lineElement); } } } |