summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2020-03-05 12:36:30 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2020-03-09 01:39:03 +0800
commitfb3601fabae0000841499a890b56700c7c0339d6 (patch)
tree3325451c80925ccdd0499b839526d9df88d2ade9
parent69990918cd566b4e6bbced2788dbfb3db5a4985a (diff)
downloadglibmm-fb3601fabae0000841499a890b56700c7c0339d6.tar.gz
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
-rw-r--r--glib/glibmm/arrayhandle.h2
-rw-r--r--glib/glibmm/base64.h4
-rw-r--r--glib/glibmm/class.h4
-rw-r--r--glib/glibmm/containerhandle_shared.h10
-rw-r--r--glib/glibmm/dispatcher.h4
-rw-r--r--glib/glibmm/error.h4
-rw-r--r--glib/glibmm/exception.h2
-rw-r--r--glib/glibmm/exceptionhandler.h2
-rw-r--r--glib/glibmm/extraclassinit.h2
-rw-r--r--glib/glibmm/init.h3
-rw-r--r--glib/glibmm/interface.h3
-rw-r--r--glib/glibmm/main.h37
-rw-r--r--glib/glibmm/object.h8
-rw-r--r--glib/glibmm/objectbase.h5
-rw-r--r--glib/glibmm/pattern.h2
-rw-r--r--glib/glibmm/property.h4
-rw-r--r--glib/glibmm/propertyproxy_base.h10
-rw-r--r--glib/glibmm/quark.h4
-rw-r--r--glib/glibmm/random.h2
-rw-r--r--glib/glibmm/signalproxy.h8
-rw-r--r--glib/glibmm/signalproxy_connectionnode.h4
-rw-r--r--glib/glibmm/streamiochannel.h2
-rw-r--r--glib/glibmm/stringutils.h10
-rw-r--r--glib/glibmm/threadpool.h2
-rw-r--r--glib/glibmm/timer.h3
-rw-r--r--glib/glibmm/timeval.h2
-rw-r--r--glib/glibmm/ustring.h22
-rw-r--r--glib/glibmm/utility.h1
-rw-r--r--glib/glibmm/value.h26
-rw-r--r--glib/glibmm/value_custom.h3
-rw-r--r--glib/glibmm/variantdbusstring.h4
-rw-r--r--glib/glibmm/vectorutils.h3
-rw-r--r--glib/glibmm/wrap.h11
-rw-r--r--glib/glibmm/wrap_init.h1
34 files changed, 132 insertions, 82 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/containerhandle_shared.h b/glib/glibmm/containerhandle_shared.h
index 851df9c2..21db8080 100644
--- a/glib/glibmm/containerhandle_shared.h
+++ b/glib/glibmm/containerhandle_shared.h
@@ -264,7 +264,7 @@ struct TypeTraits<Glib::RefPtr<const T>>
* the output type cannot be 'const char*'.
*/
template <>
-struct TypeTraits<Glib::ustring>
+struct GLIBMM_API TypeTraits<Glib::ustring>
{
using CppType = Glib::ustring;
using CType = const char*;
@@ -286,7 +286,7 @@ struct TypeTraits<Glib::ustring>
* cannot be 'const char*'.
*/
template <>
-struct TypeTraits<std::string>
+struct GLIBMM_API TypeTraits<std::string>
{
using CppType = std::string;
using CType = const char*;
@@ -305,7 +305,7 @@ struct TypeTraits<std::string>
* @ingroup ContHelpers
*/
template <>
-struct TypeTraits<bool>
+struct GLIBMM_API TypeTraits<bool>
{
using CppType = bool;
using CType = gboolean;
@@ -321,7 +321,7 @@ struct TypeTraits<bool>
* @ingroup ContHelpers
*/
template <>
-struct TypeTraits<Glib::VariantBase>
+struct GLIBMM_API TypeTraits<Glib::VariantBase>
{
using CppType = Glib::VariantBase;
using CType = GVariant*;
@@ -340,7 +340,7 @@ struct TypeTraits<Glib::VariantBase>
* @ingroup ContHelpers
*/
template <>
-struct TypeTraits<Glib::VariantContainerBase>
+struct GLIBMM_API TypeTraits<Glib::VariantContainerBase>
{
using CppType = Glib::VariantContainerBase;
using CType = GVariant*;
diff --git a/glib/glibmm/dispatcher.h b/glib/glibmm/dispatcher.h
index 9b7b9678..62515cf5 100644
--- a/glib/glibmm/dispatcher.h
+++ b/glib/glibmm/dispatcher.h
@@ -24,7 +24,7 @@ namespace Glib
{
#ifndef DOXYGEN_SHOULD_SKIP_THIS
-class DispatchNotifier;
+class GLIBMM_API DispatchNotifier;
#endif
/** Signal class for inter-thread communication.
@@ -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/exception.h b/glib/glibmm/exception.h
index 726f39e0..62c11359 100644
--- a/glib/glibmm/exception.h
+++ b/glib/glibmm/exception.h
@@ -24,7 +24,7 @@
namespace Glib
{
-class Exception
+class GLIBMM_API Exception
{
public:
virtual ~Exception() noexcept = 0;
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..e4f04d48 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.
@@ -78,6 +78,7 @@ public:
inline const GObject* gobj() const { return gobject_; }
};
+GLIBMM_API
RefPtr<ObjectBase> wrap_interface(GObject* object, bool take_copy = false);
} // namespace Glib
diff --git a/glib/glibmm/main.h b/glib/glibmm/main.h
index cfed1253..547123ec 100644
--- a/glib/glibmm/main.h
+++ b/glib/glibmm/main.h
@@ -30,13 +30,13 @@ namespace Glib
{
#ifndef GLIBMM_DISABLE_DEPRECATED
-class Cond;
-class Mutex;
+class GLIBMM_API Cond;
+class GLIBMM_API Mutex;
namespace Threads
{
-class Cond;
-class Mutex;
+class GLIBMM_API Cond;
+class GLIBMM_API Mutex;
}
#endif // GLIBMM_DISABLE_DEPRECATED
@@ -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..16d1a799 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
@@ -312,6 +312,7 @@ ObjectBase::get_property(const Glib::ustring& property_name, PropertyType& value
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+GLIBMM_API
bool _gobject_cppinstance_already_deleted(GObject* gobject);
} // namespace Glib
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/streamiochannel.h b/glib/glibmm/streamiochannel.h
index 28a1ae77..7b101102 100644
--- a/glib/glibmm/streamiochannel.h
+++ b/glib/glibmm/streamiochannel.h
@@ -29,7 +29,7 @@ namespace Glib
/** @deprecated This whole class was deprecated in glibmm 2.2 - See the Glib::IOChannel
* documentation for an explanation.
*/
-class StreamIOChannel : public Glib::IOChannel
+class GLIBMM_API StreamIOChannel : public Glib::IOChannel
{
public:
~StreamIOChannel() noexcept override;
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/timeval.h b/glib/glibmm/timeval.h
index 8cab311f..831ed7ab 100644
--- a/glib/glibmm/timeval.h
+++ b/glib/glibmm/timeval.h
@@ -38,7 +38,7 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
*
* @deprecated Use Glib::DateTime instead.
*/
-struct TimeVal : public GTimeVal
+struct GLIBMM_API TimeVal : public GTimeVal
{
inline TimeVal();
inline TimeVal(long seconds, long microseconds);
diff --git a/glib/glibmm/ustring.h b/glib/glibmm/ustring.h
index 834bdaa1..5f6da2d7 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 */
@@ -1389,7 +1395,7 @@ public:
/// A template specialization for Stringify<ustring>:
template <>
-class ustring::Stringify<ustring>
+class GLIBMM_API ustring::Stringify<ustring>
{
private:
const ustring& string_;
@@ -1408,7 +1414,7 @@ public:
* because the regular template has ambiguous constructor overloads for char*.
*/
template <>
-class ustring::Stringify<const char*>
+class GLIBMM_API ustring::Stringify<const char*>
{
private:
const ustring string_;
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..f2364714 100644
--- a/glib/glibmm/value.h
+++ b/glib/glibmm/value.h
@@ -27,8 +27,8 @@
namespace Glib
{
-class ObjectBase;
-class Object;
+class GLIBMM_API ObjectBase;
+class GLIBMM_API Object;
/** @defgroup glibmmValue Generic Values
*
@@ -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