[glibmm/use-dllexport-2-62: 2/6] glib/glibmm/*.h: Mark classes and methods with GLIBMM_API



commit fc580a2526bfed95cca93dc041ae8c353eacbac4
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Thu Mar 5 12:36:30 2020 +0800

    glib/glibmm/*.h: Mark classes and methods with GLIBMM_API
    
    This prepares the code to use __declspec(dllexport) to export all symbols, so
    that we can eventually bid farewell to gendf.exe

 glib/glibmm/arrayhandle.h                |  2 +-
 glib/glibmm/base64.h                     |  4 ++++
 glib/glibmm/class.h                      |  4 ++--
 glib/glibmm/dispatcher.h                 |  2 +-
 glib/glibmm/error.h                      |  4 ++--
 glib/glibmm/exceptionhandler.h           |  2 ++
 glib/glibmm/extraclassinit.h             |  2 +-
 glib/glibmm/init.h                       |  3 +++
 glib/glibmm/interface.h                  |  2 +-
 glib/glibmm/main.h                       | 29 +++++++++++++++++------------
 glib/glibmm/object.h                     |  8 ++++----
 glib/glibmm/objectbase.h                 |  4 ++--
 glib/glibmm/pattern.h                    |  2 +-
 glib/glibmm/property.h                   |  4 +++-
 glib/glibmm/propertyproxy_base.h         | 10 +++++-----
 glib/glibmm/quark.h                      |  4 ++--
 glib/glibmm/random.h                     |  2 +-
 glib/glibmm/signalproxy.h                |  8 ++++----
 glib/glibmm/signalproxy_connectionnode.h |  4 +++-
 glib/glibmm/stringutils.h                | 10 ++++++++++
 glib/glibmm/threadpool.h                 |  2 +-
 glib/glibmm/timer.h                      |  3 ++-
 glib/glibmm/ustring.h                    | 18 ++++++++++++------
 glib/glibmm/utility.h                    |  1 +
 glib/glibmm/value.h                      | 22 +++++++++++-----------
 glib/glibmm/value_custom.h               |  3 +++
 glib/glibmm/variantdbusstring.h          |  4 ++--
 glib/glibmm/vectorutils.h                |  3 ++-
 glib/glibmm/wrap.h                       | 11 +++++++++--
 glib/glibmm/wrap_init.h                  |  1 +
 30 files changed, 113 insertions(+), 65 deletions(-)
---
diff --git a/glib/glibmm/arrayhandle.h b/glib/glibmm/arrayhandle.h
index 735b6618..97319cc8 100644
--- a/glib/glibmm/arrayhandle.h
+++ b/glib/glibmm/arrayhandle.h
@@ -281,7 +281,7 @@ private:
 };
 
 template <>
-class ArrayHandle<bool, Container_Helpers::TypeTraits<bool>>
+class GLIBMM_API ArrayHandle<bool, Container_Helpers::TypeTraits<bool>>
 {
 public:
   using Me = ArrayHandle<bool, Container_Helpers::TypeTraits<bool>>;
diff --git a/glib/glibmm/base64.h b/glib/glibmm/base64.h
index 5fae475b..e981dd7f 100644
--- a/glib/glibmm/base64.h
+++ b/glib/glibmm/base64.h
@@ -18,6 +18,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <glibmmconfig.h>
+
 #include <string>
 #include <glib.h>
 
@@ -40,12 +42,14 @@ namespace Base64
  * @param break_lines Enables/disables line breaking.
  * @return The string encoded in Base-64.
  */
+GLIBMM_API
 std::string encode(const std::string& source, bool break_lines = false);
 
 /** Decode the given base64 encoded string.
  * @param source A string to decode.
  * @return The resulting decode string
  */
+GLIBMM_API
 std::string decode(const std::string& source);
 }
 
diff --git a/glib/glibmm/class.h b/glib/glibmm/class.h
index 41e19ce4..59e96a7e 100644
--- a/glib/glibmm/class.h
+++ b/glib/glibmm/class.h
@@ -31,9 +31,9 @@
 
 namespace Glib
 {
-class Interface_Class;
+class GLIBMM_API Interface_Class;
 
-class Class
+class GLIBMM_API Class
 {
 public:
   /* No constructor/destructor:
diff --git a/glib/glibmm/dispatcher.h b/glib/glibmm/dispatcher.h
index 9b7b9678..91340300 100644
--- a/glib/glibmm/dispatcher.h
+++ b/glib/glibmm/dispatcher.h
@@ -66,7 +66,7 @@ class DispatchNotifier;
  * likely minor and the notification still happens asynchronously.  Apart
  * from the additional lock the behavior matches the Unix implementation.
  */
-class Dispatcher
+class GLIBMM_API Dispatcher
 {
 public:
   /** Create new Dispatcher instance using the default main context.
diff --git a/glib/glibmm/error.h b/glib/glibmm/error.h
index f9d83eb9..1cd3b007 100644
--- a/glib/glibmm/error.h
+++ b/glib/glibmm/error.h
@@ -25,7 +25,7 @@
 namespace Glib
 {
 
-class Error : public Glib::Exception
+class GLIBMM_API Error : public Glib::Exception
 {
 public:
   Error();
@@ -74,7 +74,7 @@ protected:
 // This is needed so Glib::Error can be used with
 // Glib::Value and _WRAP_PROPERTY.
 template <>
-class Value<Glib::Error> : public ValueBase_Boxed
+class GLIBMM_API Value<Glib::Error> : public ValueBase_Boxed
 {
 public:
   using CppType = Glib::Error;
diff --git a/glib/glibmm/exceptionhandler.h b/glib/glibmm/exceptionhandler.h
index 34a02503..22ecdc87 100644
--- a/glib/glibmm/exceptionhandler.h
+++ b/glib/glibmm/exceptionhandler.h
@@ -27,10 +27,12 @@ namespace Glib
 
 /** Specify a slot to be called when an exception is thrown by a signal handler.
  */
+GLIBMM_API
 sigc::connection add_exception_handler(const sigc::slot<void>& slot);
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 // internal
+GLIBMM_API
 void exception_handlers_invoke() noexcept;
 #endif // DOXYGEN_SHOULD_SKIP_THIS
 
diff --git a/glib/glibmm/extraclassinit.h b/glib/glibmm/extraclassinit.h
index ec5740f5..c2c6ce34 100644
--- a/glib/glibmm/extraclassinit.h
+++ b/glib/glibmm/extraclassinit.h
@@ -75,7 +75,7 @@ namespace Glib
  *
  * @newin{2,60}
  */
-class ExtraClassInit : virtual public ObjectBase
+class GLIBMM_API ExtraClassInit : virtual public ObjectBase
 {
 protected:
   /** Constructor.
diff --git a/glib/glibmm/init.h b/glib/glibmm/init.h
index 509e7170..5bf7e200 100644
--- a/glib/glibmm/init.h
+++ b/glib/glibmm/init.h
@@ -17,6 +17,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <glibmmconfig.h>
+
 namespace Glib
 {
 
@@ -28,6 +30,7 @@ namespace Glib
  * You do not need to call %Glib::init() if you are using Gtk::Application or
  * Gio::init(), because they call %Glib::init() for you.
  */
+GLIBMM_API
 void init();
 
 } // namespace Glib
diff --git a/glib/glibmm/interface.h b/glib/glibmm/interface.h
index 9e35b5eb..1e2189c3 100644
--- a/glib/glibmm/interface.h
+++ b/glib/glibmm/interface.h
@@ -23,7 +23,7 @@ namespace Glib
 {
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
-class Interface_Class;
+class GLIBMM_API Interface_Class;
 #endif
 
 // There is no base GInterface struct in Glib, though there is G_TYPE_INTERFACE enum value.
diff --git a/glib/glibmm/main.h b/glib/glibmm/main.h
index cfed1253..e5f2bf27 100644
--- a/glib/glibmm/main.h
+++ b/glib/glibmm/main.h
@@ -44,8 +44,7 @@ class Mutex;
  * Manages all available sources of events.
  * @{
  */
-
-class PollFD
+class GLIBMM_API PollFD
 {
 public:
   using fd_t = decltype(GPollFD::fd);
@@ -80,7 +79,7 @@ private:
 // In a single-threaded program auto-disconnection of trackable slots is safe
 // and can be useful.
 
-class SignalTimeout
+class GLIBMM_API SignalTimeout
 {
 public:
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
@@ -216,7 +215,7 @@ private:
   SignalTimeout& operator=(const SignalTimeout&);
 };
 
-class SignalIdle
+class GLIBMM_API SignalIdle
 {
 public:
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
@@ -274,7 +273,7 @@ private:
   SignalIdle& operator=(const SignalIdle&);
 };
 
-class SignalIO
+class GLIBMM_API SignalIO
 {
 public:
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
@@ -345,7 +344,7 @@ private:
   SignalIO& operator=(const SignalIO&);
 };
 
-class SignalChildWatch
+class GLIBMM_API SignalChildWatch
 {
 public:
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
@@ -379,26 +378,30 @@ private:
 /** Convenience timeout signal.
  * @return A signal proxy; you want to use SignalTimeout::connect().
  */
+GLIBMM_API
 SignalTimeout signal_timeout();
 
 /** Convenience idle signal.
  * @return A signal proxy; you want to use SignalIdle::connect().
  */
+GLIBMM_API
 SignalIdle signal_idle();
 
 /** Convenience I/O signal.
  * @return A signal proxy; you want to use SignalIO::connect().
  */
+GLIBMM_API
 SignalIO signal_io();
 
 /** Convenience child watch signal.
  * @return A signal proxy; you want to use SignalChildWatch::connect().
  */
+GLIBMM_API
 SignalChildWatch signal_child_watch();
 
 /** Main context.
  */
-class MainContext
+class GLIBMM_API MainContext
 {
 public:
   using CppObjectType = Glib::MainContext;
@@ -618,9 +621,10 @@ private:
 };
 
 /** @relates Glib::MainContext */
+GLIBMM_API
 Glib::RefPtr<MainContext> wrap(GMainContext* gobject, bool take_copy = false);
 
-class MainLoop
+class GLIBMM_API MainLoop
 {
 public:
   using CppObjectType = Glib::MainLoop;
@@ -676,9 +680,10 @@ private:
 };
 
 /** @relates Glib::MainLoop */
+GLIBMM_API
 Glib::RefPtr<MainLoop> wrap(GMainLoop* gobject, bool take_copy = false);
 
-class Source
+class GLIBMM_API Source
 {
 public:
   using CppObjectType = Glib::Source;
@@ -840,7 +845,7 @@ public:
 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
 };
 
-class TimeoutSource : public Glib::Source
+class GLIBMM_API TimeoutSource : public Glib::Source
 {
 public:
   using CppObjectType = Glib::TimeoutSource;
@@ -863,7 +868,7 @@ private:
   unsigned int interval_;
 };
 
-class IdleSource : public Glib::Source
+class GLIBMM_API IdleSource : public Glib::Source
 {
 public:
   using CppObjectType = Glib::IdleSource;
@@ -880,7 +885,7 @@ protected:
   bool dispatch(sigc::slot_base* slot_data) override;
 };
 
-class IOSource : public Glib::Source
+class GLIBMM_API IOSource : public Glib::Source
 {
 public:
   using CppObjectType = Glib::IOSource;
diff --git a/glib/glibmm/object.h b/glib/glibmm/object.h
index f9f316a4..824c6b73 100644
--- a/glib/glibmm/object.h
+++ b/glib/glibmm/object.h
@@ -47,9 +47,9 @@ namespace Glib
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
-class Class;
-class Object_Class;
-class GSigConnectionNode;
+class GLIBMM_API Class;
+class GLIBMM_API Object_Class;
+class GLIBMM_API GSigConnectionNode;
 
 /* ConstructParams::ConstructParams() takes a varargs list of properties
  * and values, like g_object_new() does.  This list will then be converted
@@ -65,7 +65,7 @@ class GSigConnectionNode;
  * The comments in object.cc and objectbase.cc should explain in detail
  * how this works.
  */
-class ConstructParams
+class GLIBMM_API ConstructParams
 {
 public:
   const Glib::Class& glibmm_class;
diff --git a/glib/glibmm/objectbase.h b/glib/glibmm/objectbase.h
index bba6bdc9..6594f6e0 100644
--- a/glib/glibmm/objectbase.h
+++ b/glib/glibmm/objectbase.h
@@ -41,8 +41,8 @@ namespace Glib
 {
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
-class GSigConnectionNode;
-class Interface_Class;
+class GLIBMM_API GSigConnectionNode;
+class GLIBMM_API Interface_Class;
 #endif
 
 // This inherits virtually from sigc::trackable so that people can multiply inherit glibmm classes
diff --git a/glib/glibmm/pattern.h b/glib/glibmm/pattern.h
index 0446907e..db364469 100644
--- a/glib/glibmm/pattern.h
+++ b/glib/glibmm/pattern.h
@@ -33,7 +33,7 @@ namespace Glib
  * @{
  */
 
-class PatternSpec
+class GLIBMM_API PatternSpec
 {
 public:
   explicit PatternSpec(const Glib::ustring& pattern);
diff --git a/glib/glibmm/property.h b/glib/glibmm/property.h
index 4103b9c5..a7fa6765 100644
--- a/glib/glibmm/property.h
+++ b/glib/glibmm/property.h
@@ -32,9 +32,11 @@ namespace Glib
 extern "C" {
 #endif // GLIBMM_CXX_CAN_USE_NAMESPACES_INSIDE_EXTERNC
 
+GLIBMM_API
 void custom_get_property_callback(
   GObject* object, unsigned int property_id, GValue* value, GParamSpec* param_spec);
 
+GLIBMM_API
 void custom_set_property_callback(
   GObject* object, unsigned int property_id, const GValue* value, GParamSpec* param_spec);
 
@@ -49,7 +51,7 @@ void custom_set_property_callback(
  * This class manages the generic parts of the object properties.
  * Derived (templated) classes handle the specific value types.
  */
-class PropertyBase
+class GLIBMM_API PropertyBase
 {
 public:
   // noncopyable
diff --git a/glib/glibmm/propertyproxy_base.h b/glib/glibmm/propertyproxy_base.h
index bc76c322..ef5cbfb1 100644
--- a/glib/glibmm/propertyproxy_base.h
+++ b/glib/glibmm/propertyproxy_base.h
@@ -26,11 +26,11 @@
 namespace Glib
 {
 
-class ObjectBase;
+class GLIBMM_API ObjectBase;
 
 /// Use the connect() method, with sigc::ptr_fun() or sigc::mem_fun() to connect signals to signal
 /// handlers.
-class SignalProxyProperty : public SignalProxyBase
+class GLIBMM_API SignalProxyProperty : public SignalProxyBase
 {
 public:
   friend class PropertyProxy_Base;
@@ -51,7 +51,7 @@ private:
   SignalProxyProperty& operator=(const SignalProxyProperty&); // not implemented
 };
 
-class PropertyProxy_Base
+class GLIBMM_API PropertyProxy_Base
 {
 public:
   PropertyProxy_Base(ObjectBase* obj, const char* property_name);
@@ -79,13 +79,13 @@ private:
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
-class SignalProxyProperty;
+class GLIBMM_API SignalProxyProperty;
 
 /** PropertyProxyConnectionNode is a connection node for use with SignalProxyProperty.
   * It's like SignalProxyConnectionNode, but it contains the property name too.
   * This is not public API.
   */
-class PropertyProxyConnectionNode : public SignalProxyConnectionNode
+class GLIBMM_API PropertyProxyConnectionNode : public SignalProxyConnectionNode
 {
 public:
   friend class SignalProxyProperty;
diff --git a/glib/glibmm/quark.h b/glib/glibmm/quark.h
index b860e741..bf839596 100644
--- a/glib/glibmm/quark.h
+++ b/glib/glibmm/quark.h
@@ -39,7 +39,7 @@ namespace Glib
  *   void set_data (const Quark&, void * data);
  *   void* get_data (const QueryQuark&);
  */
-class QueryQuark
+class GLIBMM_API QueryQuark
 {
 public:
   QueryQuark(const GQuark& q);
@@ -56,7 +56,7 @@ private:
   GQuark quark_;
 };
 
-class Quark : public QueryQuark
+class GLIBMM_API Quark : public QueryQuark
 {
 public:
   Quark(const ustring& s);
diff --git a/glib/glibmm/random.h b/glib/glibmm/random.h
index 3b9893e5..83d2caa2 100644
--- a/glib/glibmm/random.h
+++ b/glib/glibmm/random.h
@@ -33,7 +33,7 @@ namespace Glib
  * @{
  */
 
-class Rand
+class GLIBMM_API Rand
 {
 public:
   Rand();
diff --git a/glib/glibmm/signalproxy.h b/glib/glibmm/signalproxy.h
index 8820d40f..93781b16 100644
--- a/glib/glibmm/signalproxy.h
+++ b/glib/glibmm/signalproxy.h
@@ -33,7 +33,7 @@ namespace Glib
 {
 
 // Forward declarations
-class ObjectBase;
+class GLIBMM_API ObjectBase;
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
@@ -47,7 +47,7 @@ struct SignalProxyInfo
 #endif // DOXYGEN_SHOULD_SKIP_THIS
 
 // This base class is used by SignalProxyNormal, SignalProxyDetailed and SignalProxyProperty.
-class SignalProxyBase
+class GLIBMM_API SignalProxyBase
 {
 public:
   SignalProxyBase(Glib::ObjectBase* obj);
@@ -80,7 +80,7 @@ private:
  *
  * For signals with a detailed name (signal_name::detail_name) see SignalProxyDetailed.
  */
-class SignalProxyNormal : public SignalProxyBase
+class GLIBMM_API SignalProxyNormal : public SignalProxyBase
 {
 public:
   ~SignalProxyNormal() noexcept;
@@ -251,7 +251,7 @@ using SignalProxy6 = SignalProxy<R, T1, T2, T3, T4, T5, T6>;
  * the template derivatives, which serve as gatekeepers for the
  * types allowed on a particular signal.
  */
-class SignalProxyDetailed : public SignalProxyBase
+class GLIBMM_API SignalProxyDetailed : public SignalProxyBase
 {
 public:
   ~SignalProxyDetailed() noexcept;
diff --git a/glib/glibmm/signalproxy_connectionnode.h b/glib/glibmm/signalproxy_connectionnode.h
index 30da5c0f..226b685b 100644
--- a/glib/glibmm/signalproxy_connectionnode.h
+++ b/glib/glibmm/signalproxy_connectionnode.h
@@ -19,6 +19,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <glibmmconfig.h>
+
 #include <sigc++/sigc++.h>
 #include <glib.h>
 
@@ -36,7 +38,7 @@ namespace Glib
   * It lives between the layer of Gtk+ and libsigc++.
   * It is very much an internal class.
   */
-class SignalProxyConnectionNode
+class GLIBMM_API SignalProxyConnectionNode
 {
 public:
   /** @param slot The signal handler for the glib signal.
diff --git a/glib/glibmm/stringutils.h b/glib/glibmm/stringutils.h
index 466a9b6e..66ad2c51 100644
--- a/glib/glibmm/stringutils.h
+++ b/glib/glibmm/stringutils.h
@@ -34,6 +34,7 @@ namespace Glib
  * @param prefix The prefix to look for.
  * @return <tt>true</tt> if @a str begins with @a prefix, <tt>false</tt> otherwise.
  */
+GLIBMM_API
 bool str_has_prefix(const std::string& str, const std::string& prefix);
 
 /** Looks whether the string @a str ends with @a suffix.
@@ -42,6 +43,7 @@ bool str_has_prefix(const std::string& str, const std::string& prefix);
  * @param suffix The suffix to look for.
  * @return <tt>true</tt> if @a str ends with @a suffix, <tt>false</tt> otherwise.
  */
+GLIBMM_API
 bool str_has_suffix(const std::string& str, const std::string& suffix);
 
 namespace Ascii
@@ -65,6 +67,7 @@ namespace Ascii
  * @throw std::overflow_error  Thrown if the correct value would cause overflow.
  * @throw std::underflow_error Thrown if the correct value would cause underflow.
  */
+GLIBMM_API
 double strtod(const std::string& str);
 
 /** Converts a string to a <tt>double</tt> value.
@@ -88,6 +91,7 @@ double strtod(const std::string& str);
  * @throw std::overflow_error  Thrown if the correct value would cause overflow.
  * @throw std::underflow_error Thrown if the correct value would cause underflow.
  */
+GLIBMM_API
 double strtod(const std::string& str, std::string::size_type& end_index,
   std::string::size_type start_index = 0);
 
@@ -100,6 +104,7 @@ double strtod(const std::string& str, std::string::size_type& end_index,
  * @param d The <tt>double</tt> value to convert.
  * @return The converted string.
  */
+GLIBMM_API
 std::string dtostr(double d);
 
 } // namespace Ascii
@@ -118,6 +123,7 @@ std::string dtostr(double d);
  * @param source A string to escape.
  * @return A copy of @a source with certain characters escaped. See above.
  */
+GLIBMM_API
 std::string strescape(const std::string& source);
 
 /** Escapes all special characters in the string.
@@ -136,6 +142,7 @@ std::string strescape(const std::string& source);
  * @param exceptions A string of characters not to escape in @a source.
  * @return A copy of @a source with certain characters escaped. See above.
  */
+GLIBMM_API
 std::string strescape(const std::string& source, const std::string& exceptions);
 
 /** Replaces all escaped characters with their one byte equivalent.
@@ -145,6 +152,7 @@ std::string strescape(const std::string& source, const std::string& exceptions);
  * @param source A string to compress.
  * @return A copy of @a source with all escaped characters compressed.
  */
+GLIBMM_API
 std::string strcompress(const std::string& source);
 
 /** Returns a string corresponding to the given error code, e.g.\ <tt>"no such process"</tt>.
@@ -156,6 +164,7 @@ std::string strcompress(const std::string& source);
  * @return A string describing the error code. If the error code is unknown,
  * <tt>&quot;unknown error (<em>\<errnum\></em>)&quot;</tt> is returned.
  */
+GLIBMM_API
 Glib::ustring strerror(int errnum);
 
 /** Returns a string describing the given signal, e.g.\ <tt>"Segmentation fault"</tt>.
@@ -167,6 +176,7 @@ Glib::ustring strerror(int errnum);
  * @return A string describing the signal. If the signal is unknown,
  * <tt>&quot;unknown signal (<em>\<signum\></em>)&quot;</tt> is returned.
  */
+GLIBMM_API
 Glib::ustring strsignal(int signum);
 
 } // namespace Glib
diff --git a/glib/glibmm/threadpool.h b/glib/glibmm/threadpool.h
index 684fcbcf..a7a7553e 100644
--- a/glib/glibmm/threadpool.h
+++ b/glib/glibmm/threadpool.h
@@ -44,7 +44,7 @@ namespace Glib
  *
  * @deprecated This is deprecated in favor of the standard C++ concurrency API in C++11 and C++14.
  */
-class ThreadPool
+class GLIBMM_API ThreadPool
 {
 public:
   /** Constructs a new thread pool.
diff --git a/glib/glibmm/timer.h b/glib/glibmm/timer.h
index fcee92b4..43fff375 100644
--- a/glib/glibmm/timer.h
+++ b/glib/glibmm/timer.h
@@ -29,7 +29,7 @@ namespace Glib
 /** Portable stop watch interface.
  * This resembles a convient and portable timer with microseconds resolution.
  */
-class Timer
+class GLIBMM_API Timer
 {
 public:
   /** Create a new timer.
@@ -66,6 +66,7 @@ private:
   GTimer* gobject_;
 };
 
+GLIBMM_API
 void usleep(unsigned long microseconds);
 
 } // namespace Glib
diff --git a/glib/glibmm/ustring.h b/glib/glibmm/ustring.h
index 834bdaa1..ee5bc462 100644
--- a/glib/glibmm/ustring.h
+++ b/glib/glibmm/ustring.h
@@ -132,6 +132,7 @@ private:
  * but it might be useful as utility function if you prefer using
  * std::string even for UTF-8 encoding.
  */
+GLIBMM_API
 gunichar get_unichar_from_std_iterator(std::string::const_iterator pos) G_GNUC_PURE;
 
 /** %Glib::ustring has much the same interface as std::string, but contains
@@ -221,7 +222,7 @@ gunichar get_unichar_from_std_iterator(std::string::const_iterator pos) G_GNUC_P
  * reimplement the interface so that all operations are based on characters
  * instead of bytes.
  */
-class ustring
+class GLIBMM_API ustring
 {
 public:
   using size_type = std::string::size_type;
@@ -252,11 +253,11 @@ public:
 #endif /* GLIBMM_HAVE_SUN_REVERSE_ITERATOR */
 
 #ifdef GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS
-  static GLIBMM_API const size_type npos = std::string::npos;
+  static const size_type npos = std::string::npos;
 #else
   // The IRIX MipsPro compiler says "The indicated constant value is not known",
   // so we need to initalize the static member data elsewhere.
-  static GLIBMM_API const size_type npos;
+  static const size_type npos;
 #endif
 
   /*! Default constructor, which creates an empty string.
@@ -966,18 +967,19 @@ struct ustring::SequenceToString<In, gunichar> : public std::string
 };
 
 template <>
-struct ustring::SequenceToString<Glib::ustring::iterator, gunichar> : public std::string
+struct GLIBMM_API ustring::SequenceToString<Glib::ustring::iterator, gunichar> : public std::string
 {
   SequenceToString(Glib::ustring::iterator pbegin, Glib::ustring::iterator pend);
 };
 
 template <>
-struct ustring::SequenceToString<Glib::ustring::const_iterator, gunichar> : public std::string
+struct GLIBMM_API ustring::SequenceToString<Glib::ustring::const_iterator, gunichar> : public std::string
 {
   SequenceToString(Glib::ustring::const_iterator pbegin, Glib::ustring::const_iterator pend);
 };
 
-class ustring::FormatStream
+
+class GLIBMM_API ustring::FormatStream
 {
 public:
   // noncopyable
@@ -1013,12 +1015,14 @@ public:
  * @relates Glib::ustring
  * @throw Glib::ConvertError
  */
+GLIBMM_API
 std::istream& operator>>(std::istream& is, Glib::ustring& utf8_string);
 
 /** Stream output operator.
  * @relates Glib::ustring
  * @throw Glib::ConvertError
  */
+GLIBMM_API
 std::ostream& operator<<(std::ostream& os, const Glib::ustring& utf8_string);
 
 #ifdef GLIBMM_HAVE_WIDE_STREAM
@@ -1027,12 +1031,14 @@ std::ostream& operator<<(std::ostream& os, const Glib::ustring& utf8_string);
  * @relates Glib::ustring
  * @throw Glib::ConvertError
  */
+GLIBMM_API
 std::wistream& operator>>(std::wistream& is, ustring& utf8_string);
 
 /** Wide stream output operator.
  * @relates Glib::ustring
  * @throw Glib::ConvertError
  */
+GLIBMM_API
 std::wostream& operator<<(std::wostream& os, const ustring& utf8_string);
 
 #endif /* GLIBMM_HAVE_WIDE_STREAM */
diff --git a/glib/glibmm/utility.h b/glib/glibmm/utility.h
index 0f1e9ef6..9ce3b054 100644
--- a/glib/glibmm/utility.h
+++ b/glib/glibmm/utility.h
@@ -145,6 +145,7 @@ c_str_or_nullptr(const T& str)
 }
 
 // Append type_name to dest, while replacing special characters with '+'.
+GLIBMM_API
 void append_canonical_typename(std::string& dest, const char* type_name);
 
 // Delete data referred to by a void*.
diff --git a/glib/glibmm/value.h b/glib/glibmm/value.h
index c34cc91e..7ea7d19c 100644
--- a/glib/glibmm/value.h
+++ b/glib/glibmm/value.h
@@ -49,7 +49,7 @@ class Object;
 /**
  * @ingroup glibmmValue
  */
-class ValueBase
+class GLIBMM_API ValueBase
 {
 public:
   /** Initializes the GValue, but without a type.  You have to
@@ -97,7 +97,7 @@ protected:
 /**
  * @ingroup glibmmValue
  */
-class ValueBase_Boxed : public ValueBase
+class GLIBMM_API ValueBase_Boxed : public ValueBase
 {
 public:
   static GType value_type() G_GNUC_CONST;
@@ -116,7 +116,7 @@ protected:
 /**
  * @ingroup glibmmValue
  */
-class ValueBase_Object : public ValueBase
+class GLIBMM_API ValueBase_Object : public ValueBase
 {
 public:
   static GType value_type() G_GNUC_CONST;
@@ -137,7 +137,7 @@ protected:
 /**
  * @ingroup glibmmValue
  */
-class ValueBase_Enum : public ValueBase
+class GLIBMM_API ValueBase_Enum : public ValueBase
 {
 public:
   using CType = gint;
@@ -158,7 +158,7 @@ protected:
 /**
  * @ingroup glibmmValue
  */
-class ValueBase_Flags : public ValueBase
+class GLIBMM_API ValueBase_Flags : public ValueBase
 {
 public:
   using CType = guint;
@@ -179,7 +179,7 @@ protected:
 /**
  * @ingroup glibmmValue
  */
-class ValueBase_String : public ValueBase
+class GLIBMM_API ValueBase_String : public ValueBase
 {
 public:
   using CType = const gchar*;
@@ -200,7 +200,7 @@ protected:
 /**
  * @ingroup glibmmValue
  */
-class ValueBase_Variant : public ValueBase
+class GLIBMM_API ValueBase_Variant : public ValueBase
 {
 public:
   static GType value_type() G_GNUC_CONST;
@@ -320,7 +320,7 @@ namespace Glib
  * @ingroup glibmmValue
  */
 template <>
-class Value<std::string> : public ValueBase_String
+class GLIBMM_API Value<std::string> : public ValueBase_String
 {
 public:
   using CppType = std::string;
@@ -333,7 +333,7 @@ public:
  * @ingroup glibmmValue
  */
 template <>
-class Value<Glib::ustring> : public ValueBase_String
+class GLIBMM_API Value<Glib::ustring> : public ValueBase_String
 {
 public:
   using CppType = Glib::ustring;
@@ -346,7 +346,7 @@ public:
  * @ingroup glibmmValue
  */
 template <>
-class Value<std::vector<std::string>> : public ValueBase_Boxed
+class GLIBMM_API Value<std::vector<std::string>> : public ValueBase_Boxed
 {
 public:
   using CppType = std::vector<std::string>;
@@ -361,7 +361,7 @@ public:
  * @ingroup glibmmValue
  */
 template <>
-class Value<std::vector<Glib::ustring>> : public ValueBase_Boxed
+class GLIBMM_API Value<std::vector<Glib::ustring>> : public ValueBase_Boxed
 {
 public:
   using CppType = std::vector<Glib::ustring>;
diff --git a/glib/glibmm/value_custom.h b/glib/glibmm/value_custom.h
index d2ea01ce..53da3dba 100644
--- a/glib/glibmm/value_custom.h
+++ b/glib/glibmm/value_custom.h
@@ -42,6 +42,8 @@ typedef void (*ValueCopyFunc)(const GValue*, GValue*);
  * as subtype of G_TYPE_BOXED, via this function.  The type_name argument
  * should be the C++ RTTI name.
  */
+
+GLIBMM_API
 GType custom_boxed_type_register(
   const char* type_name, ValueInitFunc init_func, ValueFreeFunc free_func, ValueCopyFunc copy_func);
 
@@ -49,6 +51,7 @@ GType custom_boxed_type_register(
  * each T* or const T* will be registered as a subtype of G_TYPE_POINTER,
  * via this function.  The type_name argument should be the C++ RTTI name.
  */
+GLIBMM_API
 GType custom_pointer_type_register(const char* type_name);
 
 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
diff --git a/glib/glibmm/variantdbusstring.h b/glib/glibmm/variantdbusstring.h
index f6a6e75a..ced63b8c 100644
--- a/glib/glibmm/variantdbusstring.h
+++ b/glib/glibmm/variantdbusstring.h
@@ -36,7 +36,7 @@ namespace Glib
  * @newin{2,54}
  * @ingroup Variant
 */
-class DBusObjectPathString : public Glib::ustring
+class GLIBMM_API DBusObjectPathString : public Glib::ustring
 {
 public:
   using Glib::ustring::ustring;
@@ -53,7 +53,7 @@ public:
  * @newin{2,54}
  * @ingroup Variant
 */
-class DBusSignatureString : public Glib::ustring
+class GLIBMM_API DBusSignatureString : public Glib::ustring
 {
 public:
   using Glib::ustring::ustring;
diff --git a/glib/glibmm/vectorutils.h b/glib/glibmm/vectorutils.h
index f68903d1..7339ef0a 100644
--- a/glib/glibmm/vectorutils.h
+++ b/glib/glibmm/vectorutils.h
@@ -110,6 +110,7 @@ create_array(typename std::vector<typename Tr::CppType>::const_iterator pbegin,
 /* first class function for bools, because std::vector<bool> is a specialization
  * which does not conform to being an STL container.
  */
+GLIBMM_API
 gboolean* create_bool_array(std::vector<bool>::const_iterator pbegin, std::size_t size);
 
 /* Create and fill a GList as efficient as possible.
@@ -479,7 +480,7 @@ public:
 };
 
 template <>
-class ArrayHandler<bool>
+class GLIBMM_API ArrayHandler<bool>
 {
 public:
   using CType = gboolean;
diff --git a/glib/glibmm/wrap.h b/glib/glibmm/wrap.h
index dfa4c96a..0b54a7ee 100644
--- a/glib/glibmm/wrap.h
+++ b/glib/glibmm/wrap.h
@@ -26,22 +26,27 @@ namespace Glib
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
-class ObjectBase;
-class Object;
+class GLIBMM_API ObjectBase;
+class GLIBMM_API Object;
 
 // Type of the per-class wrap_new() functions.
 using WrapNewFunction = Glib::ObjectBase*(*)(GObject*);
 
 // Setup and free the structures used by wrap_register().
 // Both functions might be called more than once.
+GLIBMM_API
 void wrap_register_init();
+
+GLIBMM_API
 void wrap_register_cleanup();
 
 // Register a new type for auto allocation.
+GLIBMM_API
 void wrap_register(GType type, WrapNewFunction func);
 
 // Return the current C++ wrapper instance of the GObject,
 // or automatically generate a new wrapper if there's none.
+GLIBMM_API
 Glib::ObjectBase* wrap_auto(GObject* object, bool take_copy = false);
 
 /** Create a C++ instance of a known C++ type that is mostly closely associated with the GType of
@@ -50,6 +55,7 @@ Glib::ObjectBase* wrap_auto(GObject* object, bool take_copy = false);
  * @param interface_gtype The returned instance will implement this interface. Otherwise it will be
  * NULL.
  */
+GLIBMM_API
 Glib::ObjectBase* wrap_create_new_wrapper_for_interface(GObject* object, GType interface_gtype);
 
 // Return the current C++ wrapper instance of the GObject,
@@ -107,6 +113,7 @@ wrap_auto_interface(GObject* object, bool take_copy = false)
 // use take_copy = true when wrapping a struct member.
 // TODO: move to object.h ?
 /** @relates Glib::Object */
+GLIBMM_API
 Glib::RefPtr<Glib::Object> wrap(GObject* object, bool take_copy = false);
 
 /** Get the underlying C instance from the C++ instance.  This is just
diff --git a/glib/glibmm/wrap_init.h b/glib/glibmm/wrap_init.h
index df27023b..950816fa 100644
--- a/glib/glibmm/wrap_init.h
+++ b/glib/glibmm/wrap_init.h
@@ -24,6 +24,7 @@
 namespace Glib
 {
 
+GLIBMM_API
 void wrap_init();
 
 } // namespace Glib


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