[glibmm/std-string-msvc-fixes: 4/6] error.h Avoid exporting class deriving frm std::exception




commit c4392f49d1313fbc159882e993683909ea40f188
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Fri May 7 12:17:35 2021 +0800

    error.h Avoid exporting class deriving frm std::exception
    
    This will avoid having the ABI tied to a particular STL and compiler version,
    and so will eliminate C4275 compiler warnings when building the code.
    
    Also update gerror.m4 so that it will generate code deriving from Glib::Error
    with the export macro markings with the member functions, so that things
    continue to build properly

 glib/glibmm/error.h | 38 +++++++++++++++++++-------------------
 tools/m4/gerror.m4  | 10 +++++-----
 2 files changed, 24 insertions(+), 24 deletions(-)
---
diff --git a/glib/glibmm/error.h b/glib/glibmm/error.h
index 19e37416..13bbb683 100644
--- a/glib/glibmm/error.h
+++ b/glib/glibmm/error.h
@@ -25,44 +25,44 @@
 namespace Glib
 {
 
-class GLIBMM_API Error : public std::exception
+class Error : public std::exception
 {
 public:
-  Error();
-  Error(GQuark error_domain, int error_code, const Glib::ustring& message);
-  explicit Error(GError* gobject, bool take_copy = false);
+  GLIBMM_API Error();
+  GLIBMM_API Error(GQuark error_domain, int error_code, const Glib::ustring& message);
+  GLIBMM_API explicit Error(GError* gobject, bool take_copy = false);
 
-  Error(const Error& other);
-  Error& operator=(const Error& other);
+  GLIBMM_API Error(const Error& other);
+  GLIBMM_API Error& operator=(const Error& other);
 
-  ~Error() noexcept override;
+  GLIBMM_API ~Error() noexcept override;
 
   /** Test whether the %Error has an underlying instance.
    *
    * @newin{2,60}
    */
-  explicit operator bool() const;
+  GLIBMM_API explicit operator bool() const;
 
-  GQuark domain() const;
-  int code() const;
-  const char* what() const noexcept override;
+  GLIBMM_API GQuark domain() const;
+  GLIBMM_API int code() const;
+  GLIBMM_API const char* what() const noexcept override;
 
-  bool matches(GQuark error_domain, int error_code) const;
+  GLIBMM_API bool matches(GQuark error_domain, int error_code) const;
 
-  GError* gobj();
-  const GError* gobj() const;
+  GLIBMM_API GError* gobj();
+  GLIBMM_API const GError* gobj() const;
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
-  void propagate(GError** dest);
+  GLIBMM_API void propagate(GError** dest);
 
   using ThrowFunc = void(*)(GError*);
 
-  static void register_init();
-  static void register_cleanup();
-  static void register_domain(GQuark error_domain, ThrowFunc throw_func);
+  GLIBMM_API static void register_init();
+  GLIBMM_API static void register_cleanup();
+  GLIBMM_API static void register_domain(GQuark error_domain, ThrowFunc throw_func);
 
-  static void throw_exception(GError* gobject) G_GNUC_NORETURN;
+  GLIBMM_API static void throw_exception(GError* gobject) G_GNUC_NORETURN;
 
 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
 
diff --git a/tools/m4/gerror.m4 b/tools/m4/gerror.m4
index 4dabb037..01036f06 100644
--- a/tools/m4/gerror.m4
+++ b/tools/m4/gerror.m4
@@ -17,7 +17,7 @@ ifelse(`$6',,,`dnl
 /** $6
  */
 ')dnl
-class $9 __CPPNAME__ : public Glib::Error
+class __CPPNAME__ : public Glib::Error
 {
 public:
   /** $7
@@ -27,14 +27,14 @@ public:
 $4
   };
 
-  __CPPNAME__`'(Code error_code, const Glib::ustring& error_message);
-  explicit __CPPNAME__`'(GError* gobject);
-  Code code() const;
+  $9 __CPPNAME__`'(Code error_code, const Glib::ustring& error_message);
+  $9 explicit __CPPNAME__`'(GError* gobject);
+  $9 Code code() const;
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 private:
 
-  static void throw_func(GError* gobject);
+  $9 static void throw_func(GError* gobject);
 
   friend $9 void wrap_init(); // uses throw_func()
 


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