diff options
author | Chun-wei Fan <fanchunwei@src.gnome.org> | 2020-03-05 12:36:30 +0800 |
---|---|---|
committer | Chun-wei Fan <fanchunwei@src.gnome.org> | 2020-03-09 01:39:03 +0800 |
commit | fb3601fabae0000841499a890b56700c7c0339d6 (patch) | |
tree | 3325451c80925ccdd0499b839526d9df88d2ade9 | |
parent | 69990918cd566b4e6bbced2788dbfb3db5a4985a (diff) | |
download | glibmm-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
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>"unknown error (<em>\<errnum\></em>)"</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>"unknown signal (<em>\<signum\></em>)"</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 |