From 9ac0d3a5766494c9c0c2074c4a21542eea195a29 Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Tue, 22 Dec 2015 21:37:29 +0100 Subject: [PATCH] A few cleanups, and make a few things more modern --- louloulibs/config/config.hpp | 18 ++++++------------ louloulibs/xmpp/xmpp_parser.cpp | 6 +++--- louloulibs/xmpp/xmpp_parser.hpp | 2 +- louloulibs/xmpp/xmpp_stanza.cpp | 10 ++++++++-- louloulibs/xmpp/xmpp_stanza.hpp | 9 +++++---- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/louloulibs/config/config.hpp b/louloulibs/config/config.hpp index e070816..688c081 100644 --- a/louloulibs/config/config.hpp +++ b/louloulibs/config/config.hpp @@ -7,7 +7,7 @@ * If you want to exit if the file does not exist when it is open for * reading, set Config::file_must_exist = true. * - * Config::get() can the be used to access the values in the conf. + * Config::get() can then be used to access the values in the conf. * * Use Config::close() when you're done getting/setting value. This will * save the config into the file. @@ -33,35 +33,29 @@ public: /** * returns a value from the config. If it doesn’t exist, use * the second argument as the default. - * @param option The option we want - * @param def The default value in case the option does not exist */ static std::string get(const std::string&, const std::string&); /** * returns a value from the config. If it doesn’t exist, use * the second argument as the default. - * @param option The option we want - * @param def The default value in case the option does not exist */ static int get_int(const std::string&, const int&); /** * Set a value for the given option. And write all the config - * in the file from which it was read if boolean is set. - * @param option The option to set - * @param value The value to use - * @param save if true, save the config file + * in the file from which it was read if save is true. */ static void set(const std::string&, const std::string&, bool save = false); /** * Adds a function to a list. This function will be called whenever a - * configuration change occurs. + * configuration change occurs (when set() is called, or when the initial + * conf is read) */ static void connect(t_config_changed_callback); /** - * Close the config file, saving it to the file is save == true. + * Destroy the instance, forcing it to be recreated (with potentially + * different parameters) the next time it’s needed. */ static void close(); - /** * Set the value of the filename to use, before calling any method. */ diff --git a/louloulibs/xmpp/xmpp_parser.cpp b/louloulibs/xmpp/xmpp_parser.cpp index 25f2876..69de145 100644 --- a/louloulibs/xmpp/xmpp_parser.cpp +++ b/louloulibs/xmpp/xmpp_parser.cpp @@ -124,12 +124,12 @@ void XmppParser::end_element(const XML_Char*) } } -void XmppParser::char_data(const XML_Char* data, int len) +void XmppParser::char_data(const XML_Char* data, const size_t len) { if (this->current_node->has_children()) - this->current_node->get_last_child()->add_to_tail(std::string(data, len)); + this->current_node->get_last_child()->add_to_tail({data, len}); else - this->current_node->add_to_inner(std::string(data, len)); + this->current_node->add_to_inner({data, len}); } void XmppParser::stanza_event(const Stanza& stanza) const diff --git a/louloulibs/xmpp/xmpp_parser.hpp b/louloulibs/xmpp/xmpp_parser.hpp index 4de639d..3474b13 100644 --- a/louloulibs/xmpp/xmpp_parser.hpp +++ b/louloulibs/xmpp/xmpp_parser.hpp @@ -82,7 +82,7 @@ public: /** * Some inner or tail data has been parsed */ - void char_data(const XML_Char* data, int len); + void char_data(const XML_Char* data, const size_t len); /** * Calls all the stanza_callbacks one by one. */ diff --git a/louloulibs/xmpp/xmpp_stanza.cpp b/louloulibs/xmpp/xmpp_stanza.cpp index d1c2e0f..f247436 100644 --- a/louloulibs/xmpp/xmpp_stanza.cpp +++ b/louloulibs/xmpp/xmpp_stanza.cpp @@ -199,6 +199,11 @@ void XmlNode::set_name(const std::string& name) this->name = name; } +void XmlNode::set_name(std::string&& name) +{ + this->name = std::move(name); +} + const std::string XmlNode::get_name() const { return this->name; @@ -228,7 +233,7 @@ bool XmlNode::has_children() const return !this->children.empty(); } -const std::string XmlNode::get_tag(const std::string& name) const +const std::string& XmlNode::get_tag(const std::string& name) const { try { @@ -237,7 +242,8 @@ const std::string XmlNode::get_tag(const std::string& name) const } catch (const std::out_of_range& e) { - return ""; + static const std::string def{}; + return def; } } diff --git a/louloulibs/xmpp/xmpp_stanza.hpp b/louloulibs/xmpp/xmpp_stanza.hpp index b1ba54a..bdc937f 100644 --- a/louloulibs/xmpp/xmpp_stanza.hpp +++ b/louloulibs/xmpp/xmpp_stanza.hpp @@ -96,6 +96,7 @@ public: XmlNode* get_last_child() const; XmlNode* get_parent() const; void set_name(const std::string& name); + void set_name(std::string&& name); const std::string get_name() const; /** * Serialize the stanza into a string @@ -110,7 +111,7 @@ public: * Gets the value for the given attribute, returns an empty string if the * node as no such attribute. */ - const std::string get_tag(const std::string& name) const; + const std::string& get_tag(const std::string& name) const; /** * Remove the attribute of the node. Does nothing if that attribute is not * present. Returns true if the tag was removed, false if it was absent. @@ -133,13 +134,13 @@ private: XmlNode& operator=(XmlNode&&) = delete; }; +std::ostream& operator<<(std::ostream& os, const XmlNode& node); + /** * An XMPP stanza is just an XML node of level 2 in the XMPP document (the * level 1 ones are the , and the ones above 2 are just the * content of the stanzas) */ -typedef XmlNode Stanza; - -std::ostream& operator<<(std::ostream& os, const XmlNode& node); +using Stanza = XmlNode; #endif // XMPP_STANZA_INCLUDED -- 2.45.2