[libxml++/libxml++-2.42: 1/3] Parser: Replace (deprecated) Glib::Threads::Mutex with std::mutex.



commit 0f5aa541287723d8fd4b67c72a894e790203f498
Author: Murray Cumming <murrayc murrayc com>
Date:   Tue Jun 20 21:46:12 2017 +0200

    Parser: Replace (deprecated) Glib::Threads::Mutex with std::mutex.

 libxml++/parsers/parser.cc |   29 +++++++++++++----------------
 1 files changed, 13 insertions(+), 16 deletions(-)
---
diff --git a/libxml++/parsers/parser.cc b/libxml++/parsers/parser.cc
index b96fe90..6bd4c45 100644
--- a/libxml++/parsers/parser.cc
+++ b/libxml++/parsers/parser.cc
@@ -4,15 +4,12 @@
  * included with libxml++ as the file COPYING.
  */
 
-// Include glibmm/threads.h first. It must be the first file to include glib.h,
-// because it temporarily undefines G_DISABLE_DEPRECATED while it includes glib.h.
-#include <glibmm/threads.h> // For Glib::Threads::Mutex. Needed until the next API/ABI break.
-
 #include "libxml++/exceptions/wrapped_exception.h"
 #include "libxml++/parsers/parser.h"
 
 #include <libxml/parser.h>
 
+#include <mutex>
 #include <memory> //For unique_ptr.
 #include <map>
 
@@ -42,18 +39,18 @@ struct ExtraParserData
 std::map<const xmlpp::Parser*, ExtraParserData> extra_parser_data;
 // Different Parser instances may run in different threads.
 // Accesses to extra_parser_data must be thread-safe.
-Glib::Threads::Mutex extra_parser_data_mutex;
+std::mutex extra_parser_data_mutex;
 
 void on_parser_error(const xmlpp::Parser* parser, const Glib::ustring& message)
 {
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::lock_guard<std::mutex> lock(extra_parser_data_mutex);
   //Throw an exception later when the whole message has been received:
   extra_parser_data[parser].parser_error_ += message;
 }
 
 void on_parser_warning(const xmlpp::Parser* parser, const Glib::ustring& message)
 {
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::lock_guard<std::mutex> lock(extra_parser_data_mutex);
   //Throw an exception later when the whole message has been received:
   extra_parser_data[parser].parser_warning_ += message;
 }
@@ -71,7 +68,7 @@ Parser::~Parser()
 {
   release_underlying();
   delete exception_;
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::lock_guard<std::mutex> lock(extra_parser_data_mutex);
   extra_parser_data.erase(this);
 }
 
@@ -97,46 +94,46 @@ bool Parser::get_substitute_entities() const
 
 void Parser::set_throw_messages(bool val)
 {
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::lock_guard<std::mutex> lock(extra_parser_data_mutex);
   extra_parser_data[this].throw_parser_messages_ = val;
   extra_parser_data[this].throw_validity_messages_ = val;
 }
 
 bool Parser::get_throw_messages() const
 {
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::lock_guard<std::mutex> lock(extra_parser_data_mutex);
   return extra_parser_data[this].throw_parser_messages_;
 }
 
 void Parser::set_include_default_attributes(bool val)
 {
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::lock_guard<std::mutex> lock(extra_parser_data_mutex);
   extra_parser_data[this].include_default_attributes_ = val;
 }
 
 bool Parser::get_include_default_attributes()
 {
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::lock_guard<std::mutex> lock(extra_parser_data_mutex);
   return extra_parser_data[this].include_default_attributes_;
 }
 
 void Parser::set_parser_options(int set_options, int clear_options)
 {
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::lock_guard<std::mutex> lock(extra_parser_data_mutex);
   extra_parser_data[this].set_options_ = set_options;
   extra_parser_data[this].clear_options_ = clear_options;
 }
 
 void Parser::get_parser_options(int& set_options, int& clear_options)
 {
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::lock_guard<std::mutex> lock(extra_parser_data_mutex);
   set_options = extra_parser_data[this].set_options_;
   clear_options = extra_parser_data[this].clear_options_;
 }
 
 void Parser::initialize_context()
 {
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::unique_lock<std::mutex> lock(extra_parser_data_mutex);
 
   //Clear these temporary buffers:
   extra_parser_data[this].parser_error_.erase();
@@ -232,7 +229,7 @@ void Parser::check_for_validity_messages() // Also checks parser messages
   bool parser_msg = false;
   bool validity_msg = false;
 
-  Glib::Threads::Mutex::Lock lock(extra_parser_data_mutex);
+  std::lock_guard<std::mutex> lock(extra_parser_data_mutex);
   if (!extra_parser_data[this].parser_error_.empty())
   {
     parser_msg = true;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]