summaryrefslogtreecommitdiff
path: root/glib
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2020-03-05 15:45:00 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2020-03-07 23:06:39 +0800
commitb55811ea37fc26f6815a18a4d6dc24dae78354fb (patch)
tree4377089dca353e918522dc4aa19db1b16d81d8e2 /glib
parent08e7d748f9ab2882440ef6925e3e95ac509167f2 (diff)
downloadglibmm-b55811ea37fc26f6815a18a4d6dc24dae78354fb.tar.gz
glib/src: Decorate classes and methods with GLIBMM_API
This prepares for us to export symbols using compiler directives, so that we can eventually retire gendef.exe. This also makes the scripts place GLIBMM_API as appropriate for the generated Glib:Error classes and the wrap() method.
Diffstat (limited to 'glib')
-rw-r--r--glib/src/binding.hg4
-rw-r--r--glib/src/bytearray.hg4
-rw-r--r--glib/src/bytes.hg4
-rw-r--r--glib/src/checksum.hg4
-rw-r--r--glib/src/convert.hg19
-rw-r--r--glib/src/date.hg2
-rw-r--r--glib/src/datetime.hg4
-rw-r--r--glib/src/fileutils.hg14
-rw-r--r--glib/src/iochannel.hg7
-rw-r--r--glib/src/keyfile.hg6
-rw-r--r--glib/src/markup.hg9
-rw-r--r--glib/src/miscutils.hg31
-rw-r--r--glib/src/module.hg2
-rw-r--r--glib/src/optioncontext.hg4
-rw-r--r--glib/src/optionentry.hg2
-rw-r--r--glib/src/optiongroup.hg2
-rw-r--r--glib/src/regex.hg8
-rw-r--r--glib/src/shell.hg5
-rw-r--r--glib/src/spawn.hg11
-rw-r--r--glib/src/timezone.hg4
-rw-r--r--glib/src/uriutils.hg3
-rw-r--r--glib/src/value_basictypes.h.m42
-rw-r--r--glib/src/variant.hg30
-rw-r--r--glib/src/variant_basictypes.h.m42
-rw-r--r--glib/src/variantdict.hg4
-rw-r--r--glib/src/variantiter.hg8
-rw-r--r--glib/src/varianttype.hg58
27 files changed, 162 insertions, 91 deletions
diff --git a/glib/src/binding.hg b/glib/src/binding.hg
index 98bc3fc6..59a94624 100644
--- a/glib/src/binding.hg
+++ b/glib/src/binding.hg
@@ -98,9 +98,9 @@ namespace Glib
*
* @newin{2,44}
*/
-class Binding : public Glib::Object
+class GLIBMM_API Binding : public Glib::Object
{
- _CLASS_GOBJECT(Binding, GBinding, G_BINDING, Glib::Object, GObject)
+ _CLASS_GOBJECT(Binding, GBinding, G_BINDING, Glib::Object, GObject, , , GLIBMM_API)
public:
_WRAP_ENUM(Flags, GBindingFlags, newin "2,44")
diff --git a/glib/src/bytearray.hg b/glib/src/bytearray.hg
index 518080e8..5a1235f0 100644
--- a/glib/src/bytearray.hg
+++ b/glib/src/bytearray.hg
@@ -41,9 +41,9 @@ namespace Glib
*
* @newin{2,36}
*/
-class ByteArray final
+class GLIBMM_API ByteArray final
{
- _CLASS_OPAQUE_REFCOUNTED(ByteArray, GByteArray, NONE, g_byte_array_ref, g_byte_array_unref)
+ _CLASS_OPAQUE_REFCOUNTED(ByteArray, GByteArray, NONE, g_byte_array_ref, g_byte_array_unref, GLIBMM_API)
_IS_REFCOUNTED_BOXEDTYPE
_IGNORE(g_byte_array_ref, g_byte_array_unref)
diff --git a/glib/src/bytes.hg b/glib/src/bytes.hg
index 60b92d17..db0a23f7 100644
--- a/glib/src/bytes.hg
+++ b/glib/src/bytes.hg
@@ -49,9 +49,9 @@ namespace Glib
*
* @newin{2,34}
*/
-class Bytes final
+class GLIBMM_API Bytes final
{
- _CLASS_OPAQUE_REFCOUNTED(Bytes, GBytes, NONE, g_bytes_ref, g_bytes_unref)
+ _CLASS_OPAQUE_REFCOUNTED(Bytes, GBytes, NONE, g_bytes_ref, g_bytes_unref, GLIBMM_API)
_IGNORE(g_bytes_ref, g_bytes_unref)
public:
diff --git a/glib/src/checksum.hg b/glib/src/checksum.hg
index 2bb8e580..f07ec967 100644
--- a/glib/src/checksum.hg
+++ b/glib/src/checksum.hg
@@ -37,9 +37,9 @@ namespace Glib
*
* @newin{2,16}
*/
-class Checksum
+class GLIBMM_API Checksum
{
- _CLASS_BOXEDTYPE(Checksum, GChecksum, NONE, g_checksum_copy, g_checksum_free)
+ _CLASS_BOXEDTYPE(Checksum, GChecksum, NONE, g_checksum_copy, g_checksum_free, GLIBMM_API)
_IGNORE(g_checksum_copy, g_checksum_free)
public:
diff --git a/glib/src/convert.hg b/glib/src/convert.hg
index 9c211bc9..d07e8e35 100644
--- a/glib/src/convert.hg
+++ b/glib/src/convert.hg
@@ -40,7 +40,7 @@ namespace Glib
* you should always catch those errors, and then try to recover, or tell the
* user the input was invalid.
*/
-_WRAP_GERROR(ConvertError, GConvertError, G_CONVERT_ERROR, NO_GTYPE)
+_WRAP_GERROR(ConvertError, GConvertError, G_CONVERT_ERROR, NO_GTYPE, decl_prefix GLIBMM_API)
/** Thin %iconv() wrapper.
@@ -49,7 +49,7 @@ _WRAP_GERROR(ConvertError, GConvertError, G_CONVERT_ERROR, NO_GTYPE)
* creating an IConv object once and using the convert() method could
* be useful when converting multiple times between the same charsets.
*/
-class IConv
+class GLIBMM_API IConv
{
public:
/** Open new conversion descriptor.
@@ -107,12 +107,14 @@ private:
/** Get the charset used by the current locale.
* @return Whether the current locale uses the UTF-8 charset.
*/
+GLIBMM_API
bool get_charset();
/** Get the charset used by the current locale.
* @param charset Will be filled with the charset's name.
* @return Whether the current locale uses the UTF-8 charset.
*/
+GLIBMM_API
bool get_charset(std::string& charset);
/** Convert from one encoding to another.
@@ -122,6 +124,7 @@ bool get_charset(std::string& charset);
* @return The converted string.
* @throw Glib::ConvertError
*/
+GLIBMM_API
std::string convert(const std::string& str,
const std::string& to_codeset,
const std::string& from_codeset);
@@ -136,6 +139,7 @@ std::string convert(const std::string& str,
* @return The converted string.
* @throw Glib::ConvertError
*/
+GLIBMM_API
std::string convert_with_fallback(const std::string& str,
const std::string& to_codeset,
const std::string& from_codeset);
@@ -156,6 +160,7 @@ std::string convert_with_fallback(const std::string& str,
* @return The converted string.
* @throw Glib::ConvertError
*/
+GLIBMM_API
std::string convert_with_fallback(const std::string& str,
const std::string& to_codeset,
const std::string& from_codeset,
@@ -168,6 +173,7 @@ std::string convert_with_fallback(const std::string& str,
* @return The input string converted to UTF-8 encoding.
* @throw Glib::ConvertError
*/
+GLIBMM_API
Glib::ustring locale_to_utf8(const std::string& opsys_string);
/** Convert from UTF-8 to the current locale's encoding.
@@ -177,6 +183,7 @@ Glib::ustring locale_to_utf8(const std::string& opsys_string);
* system's current locale.
* @throw Glib::ConvertError
*/
+GLIBMM_API
std::string locale_from_utf8(const Glib::ustring& utf8_string);
/** Converts a string which is in the encoding used for filenames into
@@ -185,6 +192,7 @@ std::string locale_from_utf8(const Glib::ustring& utf8_string);
* @return The converted string.
* @throw Glib::ConvertError
*/
+GLIBMM_API
Glib::ustring filename_to_utf8(const std::string& opsys_string);
/** Converts a string from UTF-8 to the encoding used for filenames.
@@ -192,6 +200,7 @@ Glib::ustring filename_to_utf8(const std::string& opsys_string);
* @return The converted string.
* @throw Glib::ConvertError
*/
+GLIBMM_API
std::string filename_from_utf8(const Glib::ustring& utf8_string);
/** Converts an escaped UTF-8 encoded URI to a local filename
@@ -202,6 +211,7 @@ std::string filename_from_utf8(const Glib::ustring& utf8_string);
* @return The resulting filename.
* @throw Glib::ConvertError
*/
+GLIBMM_API
std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname);
/** Converts an escaped UTF-8 encoded URI to a local filename in the encoding
@@ -210,6 +220,7 @@ std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname)
* @return The resulting filename.
* @throw Glib::ConvertError
*/
+GLIBMM_API
std::string filename_from_uri(const Glib::ustring& uri);
/** Converts an absolute filename to an escaped UTF-8 encoded URI.
@@ -219,6 +230,7 @@ std::string filename_from_uri(const Glib::ustring& uri);
* @return The resulting URI.
* @throw Glib::ConvertError
*/
+GLIBMM_API
Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname);
/** Converts an absolute filename to an escaped UTF-8 encoded URI.
@@ -227,6 +239,7 @@ Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring&
* @return The resulting URI.
* @throw Glib::ConvertError
*/
+GLIBMM_API
Glib::ustring filename_to_uri(const std::string& filename);
/** Returns the display basename for the particular filename, guaranteed
@@ -243,6 +256,7 @@ Glib::ustring filename_to_uri(const std::string& filename);
* @param filename An absolute pathname in the GLib file name encoding.
* @result A string containing a rendition of the basename of the filename in valid UTF-8
*/
+GLIBMM_API
Glib::ustring filename_display_basename(const std::string& filename);
/** Converts a filename into a valid UTF-8 string. The
@@ -260,6 +274,7 @@ Glib::ustring filename_display_basename(const std::string& filename);
* @param filename: a pathname hopefully in the GLib file name encoding
* @result A string containing a rendition of the filename in valid UTF-8.
*/
+GLIBMM_API
Glib::ustring filename_display_name(const std::string& filename);
/** @} group CharsetConv */
diff --git a/glib/src/date.hg b/glib/src/date.hg
index 1633d07a..53356898 100644
--- a/glib/src/date.hg
+++ b/glib/src/date.hg
@@ -30,7 +30,7 @@ namespace Glib
/** Julian calendar date.
*/
-class Date
+class GLIBMM_API Date
{
public:
using Day = guint8 ;
diff --git a/glib/src/datetime.hg b/glib/src/datetime.hg
index 657efecf..1cd1d278 100644
--- a/glib/src/datetime.hg
+++ b/glib/src/datetime.hg
@@ -55,13 +55,13 @@ using TimeSpan = GTimeSpan;
* in length).
* @newin{2,30}
*/
-class DateTime
+class GLIBMM_API DateTime
{
// GDateTime is refcounted, but Glib::DateTime is not.
// GDateTime is immutable. Therefore, there is no problem having several
// Glib::DateTime instances wrap the same GDateTime, and it's easier to use
// Glib::DateTime without Glib::RefPtr.
- _CLASS_BOXEDTYPE(DateTime, GDateTime, NONE, g_date_time_ref, g_date_time_unref)
+ _CLASS_BOXEDTYPE(DateTime, GDateTime, NONE, g_date_time_ref, g_date_time_unref, GLIBMM_API)
_IGNORE(g_date_time_ref, g_date_time_unref)
_IGNORE(g_date_time_new_from_timeval_local, g_date_time_new_from_timeval_utc,
g_date_time_to_timeval)dnl // deprecated
diff --git a/glib/src/fileutils.hg b/glib/src/fileutils.hg
index 1cbe3ebc..ecbd77b5 100644
--- a/glib/src/fileutils.hg
+++ b/glib/src/fileutils.hg
@@ -59,7 +59,8 @@ _WRAP_GERROR(FileError, GFileError, G_FILE_ERROR, NO_GTYPE,
s#^AGAIN$#TRYAGAIN#,
s#^INTR$#INTERRUPTED#,
s#^IO$#IO_ERROR#,
- s#^PERM$#NOT_OWNER#
+ s#^PERM$#NOT_OWNER#,
+ decl_prefix GLIBMM_API
)
/** @var FileError::Code FileError::EXISTS
@@ -142,7 +143,7 @@ class Dir;
/** The iterator type of Glib::Dir.
* @ingroup FileUtils
*/
-class DirIterator
+class GLIBMM_API DirIterator
{
public:
typedef std::input_iterator_tag iterator_category;
@@ -186,7 +187,7 @@ private:
* @note The encoding of the directory entries isn't necessarily UTF-8.
* Use Glib::filename_to_utf8() if you need to display them.
*/
-class Dir
+class GLIBMM_API Dir
{
public:
using iterator = DirIterator;
@@ -263,6 +264,7 @@ private:
* @param test Bitfield of Glib::FileTest flags.
* @return Whether a test was true.
*/
+GLIBMM_API
bool file_test(const std::string& filename, FileTest test);
/** Opens a temporary file.
@@ -278,6 +280,7 @@ bool file_test(const std::string& filename, FileTest test);
* is a difference. The file handle should be closed with close(). In
* case of errors, <tt>-1</tt> is returned.
*/
+GLIBMM_API
int mkstemp(std::string& filename_template);
/** Opens a file for writing in the preferred directory for temporary files
@@ -295,6 +298,7 @@ int mkstemp(std::string& filename_template);
* difference. The file handle should be closed with <tt>close()</tt>.
* @throw Glib::FileError
*/
+GLIBMM_API
int file_open_tmp(std::string& name_used, const std::string& prefix);
/** Opens a file for writing in the preferred directory for temporary files
@@ -309,6 +313,7 @@ int file_open_tmp(std::string& name_used, const std::string& prefix);
* difference. The file handle should be closed with <tt>close()</tt>.
* @throw Glib::FileError
*/
+GLIBMM_API
int file_open_tmp(std::string& name_used);
/** Reads an entire file into a string, with good error checking.
@@ -317,6 +322,7 @@ int file_open_tmp(std::string& name_used);
* @return The file contents.
* @throw Glib::FileError
*/
+GLIBMM_API
std::string file_get_contents(const std::string& filename);
/** Writes all of @a contents to a file named @a filename, with good error checking.
@@ -354,11 +360,13 @@ std::string file_get_contents(const std::string& filename);
*
* @newin{2,22}
**/
+GLIBMM_API
void file_set_contents (const std::string& filename, const gchar *contents, gssize length);
/** A variant of file_set_contents which accepts a standard C++ string
*
* @newin{2,22}
* */
+GLIBMM_API
void file_set_contents (const std::string& filename, const std::string& contents);
} // namespace Glib
diff --git a/glib/src/iochannel.hg b/glib/src/iochannel.hg
index 8c761d55..15cdf232 100644
--- a/glib/src/iochannel.hg
+++ b/glib/src/iochannel.hg
@@ -72,7 +72,8 @@ _WRAP_GERROR(IOChannelError, GIOChannelError, G_IO_CHANNEL_ERROR, NO_GTYPE,
s#^ACCES$#ACCESS_DENIED#,
s#^FBIG$#FILE_TOO_BIG#,
s#^IO$#IO_ERROR#,
- s#^OVERFLOW$#OVERFLOWN#)
+ s#^OVERFLOW$#OVERFLOWN#,
+ decl_prefix GLIBMM_API)
#ifndef DOXYGEN_SHOULD_SKIP_THIS
class GlibmmIOChannel;
@@ -89,7 +90,7 @@ class GlibmmIOChannel;
*
* You can create an IOChannel with one of the static create methods.
*/
-class IOChannel : public sigc::trackable
+class GLIBMM_API IOChannel : public sigc::trackable
{
_CLASS_GENERIC(IOChannel, GIOChannel)
@@ -438,7 +439,7 @@ private:
void release_gobject();
};
-Glib::RefPtr<IOChannel> wrap(GIOChannel* gobject, bool take_copy = false);
+GLIBMM_API Glib::RefPtr<IOChannel> wrap(GIOChannel* gobject, bool take_copy = false);
} // namespace Glib
diff --git a/glib/src/keyfile.hg b/glib/src/keyfile.hg
index a2641bb9..fcf20583 100644
--- a/glib/src/keyfile.hg
+++ b/glib/src/keyfile.hg
@@ -33,7 +33,7 @@ namespace Glib
/** Exception class for KeyFile errors.
*/
-_WRAP_GERROR(KeyFileError, GKeyFileError, G_KEY_FILE_ERROR, NO_GTYPE)
+_WRAP_GERROR(KeyFileError, GKeyFileError, G_KEY_FILE_ERROR, NO_GTYPE, decl_prefix GLIBMM_API)
/** This class lets you parse, edit or create files containing groups of key-value pairs, which we call key files
* for lack of a better name. Several freedesktop.org specifications use key files now, e.g the Desktop Entry
@@ -90,9 +90,9 @@ _WRAP_GERROR(KeyFileError, GKeyFileError, G_KEY_FILE_ERROR, NO_GTYPE)
*
* @newin{2,14}
*/
-class KeyFile final
+class GLIBMM_API KeyFile final
{
- _CLASS_OPAQUE_REFCOUNTED(KeyFile, GKeyFile, g_key_file_new, g_key_file_ref, g_key_file_unref)
+ _CLASS_OPAQUE_REFCOUNTED(KeyFile, GKeyFile, g_key_file_new, g_key_file_ref, g_key_file_unref, GLIBMM_API)
_IGNORE(g_key_file_new, g_key_file_ref, g_key_file_unref, g_key_file_free)
public:
diff --git a/glib/src/markup.hg b/glib/src/markup.hg
index 8e014ba7..fa34f390 100644
--- a/glib/src/markup.hg
+++ b/glib/src/markup.hg
@@ -63,7 +63,7 @@ namespace Glib
/** %Exception class for markup parsing errors.
*/
-_WRAP_GERROR(MarkupError, GMarkupError, G_MARKUP_ERROR, NO_GTYPE)
+_WRAP_GERROR(MarkupError, GMarkupError, G_MARKUP_ERROR, NO_GTYPE, decl_prefix GLIBMM_API)
/*! @var MarkupError::Code MarkupError::BAD_UTF8
* Text being parsed was not valid UTF-8.
@@ -107,6 +107,7 @@ using Error = Glib::MarkupError;
* @param text Some valid UTF-8 text.
* @return Escaped text.
*/
+GLIBMM_API
Glib::ustring escape_text(const Glib::ustring& text);
_WRAP_ENUM(ParseFlags, GMarkupParseFlags, NO_GTYPE)
@@ -118,7 +119,7 @@ _WRAP_ENUM(ParseFlags, GMarkupParseFlags, NO_GTYPE)
* the AttributeKeyLess predicate is locale-independent. This is both
* more correct and much more efficient.
*/
-class AttributeKeyLess
+class GLIBMM_API AttributeKeyLess
{
public:
using first_argument_type = Glib::ustring;
@@ -147,7 +148,7 @@ class ParserCallbacks;
* error from a method, Glib::Markup::ParseContext::parse() will report that
* error back to its caller.
*/
-class Parser : public sigc::trackable
+class GLIBMM_API Parser : public sigc::trackable
{
public:
typedef std::map<Glib::ustring, Glib::ustring, Glib::Markup::AttributeKeyLess> AttributeMap;
@@ -243,7 +244,7 @@ private:
* occur; once an error occurs, the parse context can't continue to parse text
* (you have to destroy it and create a new parse context).
*/
-class ParseContext : public sigc::trackable
+class GLIBMM_API ParseContext : public sigc::trackable
{
public:
/** Creates a new parse context.
diff --git a/glib/src/miscutils.hg b/glib/src/miscutils.hg
index 045ca561..1cba437d 100644
--- a/glib/src/miscutils.hg
+++ b/glib/src/miscutils.hg
@@ -40,6 +40,7 @@ _WRAP_ENUM(FormatSizeFlags, GFormatSizeFlags, NO_GTYPE)
*
* @return Human-readable application name. May return <tt>""</tt>.
*/
+GLIBMM_API
Glib::ustring get_application_name();
/** Sets a human-readable name for the application.
@@ -55,6 +56,7 @@ Glib::ustring get_application_name();
*
* @param application_name Localized name of the application.
*/
+GLIBMM_API
void set_application_name(UStringView application_name);
/** Gets the name of the program.
@@ -68,11 +70,13 @@ void set_application_name(UStringView application_name);
*
* @return The name of the program.
*/
+GLIBMM_API
std::string get_prgname();
/** Sets the name of the program.
* @param prgname The name of the program.
*/
+GLIBMM_API
void set_prgname(StdStringView prgname);
/** Returns the value of an environment variable. The name and value
@@ -86,6 +90,7 @@ void set_prgname(StdStringView prgname);
* @param[out] found Whether the environment variable has been found.
* @return The value of the environment variable, or <tt>""</tt> if not found.
*/
+GLIBMM_API
std::string getenv(StdStringView variable, bool& found);
/** Returns the value of an environment variable. The name and value
@@ -98,6 +103,7 @@ std::string getenv(StdStringView variable, bool& found);
* @param variable The environment variable to get.
* @return The value of the environment variable, or <tt>""</tt> if not found.
*/
+GLIBMM_API
std::string getenv(StdStringView variable);
@@ -114,6 +120,7 @@ std::string getenv(StdStringView variable);
* @param overwrite Whether to change the variable if it already exists.
* @result false if the environment variable couldn't be set.
*/
+GLIBMM_API
bool setenv(StdStringView variable, StdStringView value, bool overwrite = true);
/** Removes an environment variable from the environment.
@@ -125,6 +132,7 @@ bool setenv(StdStringView variable, StdStringView value, bool overwrite = true);
*
* @param variable: the environment variable to remove. It must not contain '='.
**/
+GLIBMM_API
void unsetenv(StdStringView variable);
/** Gets the names of all variables set in the environment.
@@ -138,6 +146,7 @@ void unsetenv(StdStringView variable);
*
* @return Vector of environment names.
*/
+GLIBMM_API
std::vector<std::string> listenv();
/** Gets the user name of the current user.
@@ -149,6 +158,7 @@ std::vector<std::string> listenv();
*
* @return The name of the current user.
*/
+GLIBMM_API
std::string get_user_name();
/** Gets the real name of the current user.
@@ -160,6 +170,7 @@ std::string get_user_name();
*
* @return The current user's real name.
*/
+GLIBMM_API
std::string get_real_name();
/** Return a name for the machine.
@@ -177,11 +188,13 @@ std::string get_real_name();
*
* @newin{2,64}
*/
+GLIBMM_API
Glib::ustring get_host_name();
/** Gets the current user's home directory.
* @return The current user's home directory or an empty string if not defined.
*/
+GLIBMM_API
std::string get_home_dir();
/** Gets the directory to use for temporary files.
@@ -190,11 +203,13 @@ std::string get_home_dir();
* <tt>"/tmp"</tt> is returned on UNIX and <tt>"C:\\"</tt> on Windows.
* @return The directory to use for temporary files.
*/
+GLIBMM_API
std::string get_tmp_dir();
/** Gets the current directory.
* @return The current directory.
*/
+GLIBMM_API
std::string get_current_dir();
/** Returns the full path of a special directory using its logical id.
@@ -214,6 +229,7 @@ std::string get_current_dir();
*
* @newin{2,46}
*/
+GLIBMM_API
std::string get_user_special_dir(UserDirectory directory);
/** Returns a base directory in which to access application data such as icons
@@ -224,6 +240,7 @@ std::string get_user_special_dir(UserDirectory directory);
*
* @newin{2,14}
*/
+GLIBMM_API
std::string get_user_data_dir();
/** Returns a base directory in which to store user-specific application
@@ -234,6 +251,7 @@ std::string get_user_data_dir();
*
* @newin{2,14}
*/
+GLIBMM_API
std::string get_user_config_dir();
/** Returns an ordered list of base directories in which to access system-wide application data.
@@ -241,6 +259,7 @@ std::string get_user_config_dir();
*
* @newin{2,18}
*/
+GLIBMM_API
std::vector<std::string> get_system_data_dirs();
/** Returns an ordered list of base directories in which to access system-wide configuration information.
@@ -248,6 +267,7 @@ std::vector<std::string> get_system_data_dirs();
*
* @newin{2,18}
*/
+GLIBMM_API
std::vector<std::string> get_system_config_dirs();
/** Returns a base directory in which to store non-essential, cached data
@@ -258,6 +278,7 @@ std::vector<std::string> get_system_config_dirs();
*
* @newin{2,14}
*/
+GLIBMM_API
std::string get_user_cache_dir();
/** Returns a directory that is unique to the current user on the local system.
@@ -268,6 +289,7 @@ std::string get_user_cache_dir();
*
* @newin{2,64}
*/
+GLIBMM_API
std::string get_user_runtime_dir();
/** Returns @c true if the given @a filename is an absolute file name, i.e.\ it
@@ -276,6 +298,7 @@ std::string get_user_runtime_dir();
* @param filename A file name.
* @return Whether @a filename is an absolute path.
*/
+GLIBMM_API
bool path_is_absolute(StdStringView filename);
/** Returns the remaining part of @a filename after the root component,
@@ -284,12 +307,14 @@ bool path_is_absolute(StdStringView filename);
* @param filename A file name.
* @return The file name without the root component, or <tt>""</tt>.
*/
+GLIBMM_API
std::string path_skip_root(StdStringView filename);
/** Gets the name of the file without any leading directory components.
* @param filename The name of the file.
* @return The name of the file without any leading directory components.
*/
+GLIBMM_API
std::string path_get_basename(StdStringView filename);
/** Gets the directory components of a file name.
@@ -297,6 +322,7 @@ std::string path_get_basename(StdStringView filename);
* @param filename The name of the file.
* @return The directory components of the file.
*/
+GLIBMM_API
std::string path_get_dirname(StdStringView filename);
/** Gets the canonical file name from @a filename.
@@ -322,6 +348,7 @@ std::string path_get_dirname(StdStringView filename);
*
* @newin{2,64}
*/
+GLIBMM_API
std::string canonicalize_filename(StdStringView filename, StdStringView relative_to = nullptr);
/** Creates a filename from a series of elements using the correct
@@ -333,6 +360,7 @@ std::string canonicalize_filename(StdStringView filename, StdStringView relative
* @param elements A vector holding the elements of the path to build.
* @return The resulting path.
*/
+GLIBMM_API
std::string build_filename(const std::vector<std::string>& elements);
/** Creates a filename from one or more elements using the correct separator for filenames.
@@ -382,6 +410,7 @@ std::string build_filename(const Strings&... strings)
* @param elements A vector holding the elements of the path to build.
* @return The resulting path.
*/
+GLIBMM_API
std::string build_path(const std::string& separator,
const std::vector<std::string>& elements);
@@ -405,6 +434,7 @@ std::string build_path(const std::string& separator,
* @param program A program name.
* @return An absolute path, or <tt>""</tt>.
*/
+GLIBMM_API
std::string find_program_in_path(StdStringView program);
/** Formats a size (for example the size of a file) into a human readable string.
@@ -422,6 +452,7 @@ std::string find_program_in_path(StdStringView program);
*
* @newin{2,46}
*/
+GLIBMM_API
Glib::ustring format_size(guint64 size, FormatSizeFlags flags = FormatSizeFlags::DEFAULT);
/** @} group MiscUtils */
diff --git a/glib/src/module.hg b/glib/src/module.hg
index 89ddedf9..acc88bec 100644
--- a/glib/src/module.hg
+++ b/glib/src/module.hg
@@ -35,7 +35,7 @@ namespace Glib
* (e.g. Linux/Sun), as well as HP-UX via its shl_load() mechanism,
* and Windows platforms via DLLs.
*/
-class Module
+class GLIBMM_API Module
{
_CLASS_GENERIC(Module, GModule)
_IGNORE(g_module_open, g_module_close)
diff --git a/glib/src/optioncontext.hg b/glib/src/optioncontext.hg
index ad696ade..414b365c 100644
--- a/glib/src/optioncontext.hg
+++ b/glib/src/optioncontext.hg
@@ -31,7 +31,7 @@ namespace Glib
/** Exception class for options.
*/
-_WRAP_GERROR(OptionError, GOptionError, G_OPTION_ERROR, NO_GTYPE)
+_WRAP_GERROR(OptionError, GOptionError, G_OPTION_ERROR, NO_GTYPE, decl_prefix GLIBMM_API)
/** An OptionContext defines and parses commandline options, using OptionGroup%s and \link OptionEntry option entries \endlink.
*
@@ -83,7 +83,7 @@ _WRAP_GERROR(OptionError, GOptionError, G_OPTION_ERROR, NO_GTYPE)
*
*
*/
-class OptionContext
+class GLIBMM_API OptionContext
{
_CLASS_GENERIC(OptionContext, GOptionContext)
_IGNORE(g_option_context_free)
diff --git a/glib/src/optionentry.hg b/glib/src/optionentry.hg
index bf9847d7..9e9a4133 100644
--- a/glib/src/optionentry.hg
+++ b/glib/src/optionentry.hg
@@ -38,7 +38,7 @@ namespace Glib
*
* The arg_descripton is the placeholder to use for the extra argument parsed by the option in --help output.
*/
-class OptionEntry
+class GLIBMM_API OptionEntry
{
_CLASS_GENERIC(OptionEntry, GOptionEntry)
public:
diff --git a/glib/src/optiongroup.hg b/glib/src/optiongroup.hg
index bf690896..aebb03bb 100644
--- a/glib/src/optiongroup.hg
+++ b/glib/src/optiongroup.hg
@@ -51,7 +51,7 @@ class OptionContext;
* Libraries which need to parse commandline options are expected to provide a function that allows their OptionGroups to
* be added to the application's OptionContext.
*/
-class OptionGroup
+class GLIBMM_API OptionGroup
{
_CLASS_GENERIC(OptionGroup, GOptionGroup)
public:
diff --git a/glib/src/regex.hg b/glib/src/regex.hg
index 2d7c6037..7cd4a326 100644
--- a/glib/src/regex.hg
+++ b/glib/src/regex.hg
@@ -33,7 +33,7 @@ namespace Glib
/** Exception class for Regex
*/
-_WRAP_GERROR(RegexError, GRegexError, G_REGEX_ERROR, NO_GTYPE)
+_WRAP_GERROR(RegexError, GRegexError, G_REGEX_ERROR, NO_GTYPE, decl_prefix GLIBMM_API)
class MatchInfo;
@@ -90,9 +90,9 @@ class MatchInfo;
*
* @newin{2,14}
*/
-class Regex final
+class GLIBMM_API Regex final
{
- _CLASS_OPAQUE_REFCOUNTED(Regex, GRegex, NONE, g_regex_ref, g_regex_unref)
+ _CLASS_OPAQUE_REFCOUNTED(Regex, GRegex, NONE, g_regex_ref, g_regex_unref, GLIBMM_API)
_IGNORE(g_regex_ref, g_regex_unref)
public:
@@ -220,7 +220,7 @@ public:
* expression match which created it.
* @newin{2,28}
*/
-class MatchInfo
+class GLIBMM_API MatchInfo
{
_CLASS_GENERIC(MatchInfo, GMatchInfo)
_IGNORE(g_match_info_ref, g_match_info_unref, g_match_info_free)
diff --git a/glib/src/shell.hg b/glib/src/shell.hg
index 50736ea8..b10eb9a2 100644
--- a/glib/src/shell.hg
+++ b/glib/src/shell.hg
@@ -31,7 +31,7 @@ namespace Glib
/** Exception class for shell utility errors.
*/
-_WRAP_GERROR(ShellError, GShellError, G_SHELL_ERROR, NO_GTYPE)
+_WRAP_GERROR(ShellError, GShellError, G_SHELL_ERROR, NO_GTYPE, decl_prefix GLIBMM_API)
/** Parses a command line into an argument vector, in much the same way the
@@ -46,6 +46,7 @@ _WRAP_GERROR(ShellError, GShellError, G_SHELL_ERROR, NO_GTYPE)
* converted to any STL compatible container type).
* @throw Glib::ShellError
*/
+GLIBMM_API
std::vector<std::string> shell_parse_argv(const std::string& command_line);
/** Quotes a string so that the shell (/bin/sh) will interpret the quoted
@@ -55,6 +56,7 @@ std::vector<std::string> shell_parse_argv(const std::string& command_line);
* @param unquoted_string A literal string.
* @return A quoted string.
*/
+GLIBMM_API
std::string shell_quote(const std::string& unquoted_string);
/** Unquotes a string as the shell (/bin/sh) would. Only handles quotes; if
@@ -80,6 +82,7 @@ std::string shell_quote(const std::string& unquoted_string);
* @return An unquoted string.
* @throw Glib::ShellError
*/
+GLIBMM_API
std::string shell_unquote(const std::string& quoted_string);
/** @} group ShellUtils */
diff --git a/glib/src/spawn.hg b/glib/src/spawn.hg
index 63ef5b55..40443c0f 100644
--- a/glib/src/spawn.hg
+++ b/glib/src/spawn.hg
@@ -36,7 +36,7 @@ _WRAP_ENUM(SpawnFlags, GSpawnFlags, NO_GTYPE)
/** %Exception class for errors occuring when spawning processes.
*/
-_WRAP_GERROR(SpawnError, GSpawnError, G_SPAWN_ERROR, NO_GTYPE, s#^2BIG$#TOOBIG#)
+_WRAP_GERROR(SpawnError, GSpawnError, G_SPAWN_ERROR, NO_GTYPE, s#^2BIG$#TOOBIG#, decl_prefix GLIBMM_API)
/** For instance,<br>
* void on_child_setup();
@@ -191,6 +191,7 @@ using SlotSpawnChildSetup = sigc::slot<void()>;
* to users. If an error occurs, @a child_pid, @a standard_input, @a standard_output,
* and @a standard_error will not be filled with valid values.
*/
+GLIBMM_API
void spawn_async_with_pipes(const std::string& working_directory,
const std::vector<std::string>& argv,
const std::vector<std::string>& envp,
@@ -218,6 +219,7 @@ void spawn_async_with_pipes(const std::string& working_directory,
* to users. If an error occurs, @a child_pid, @a standard_input, @a standard_output,
* and @a standard_error will not be filled with valid values.
*/
+GLIBMM_API
void spawn_async_with_pipes(const std::string& working_directory,
const std::vector<std::string>& argv,
SpawnFlags flags = SpawnFlags::DEFAULT,
@@ -248,6 +250,7 @@ void spawn_async_with_pipes(const std::string& working_directory,
* the message field of returned errors should be displayed
* to users.
*/
+GLIBMM_API
void spawn_async(const std::string& working_directory,
const std::vector<std::string>& argv,
const std::vector<std::string>& envp,
@@ -268,6 +271,7 @@ void spawn_async(const std::string& working_directory,
* the message field of returned errors should be displayed
* to users.
*/
+GLIBMM_API
void spawn_async(const std::string& working_directory,
const std::vector<std::string>& argv,
SpawnFlags flags = SpawnFlags::DEFAULT,
@@ -306,6 +310,7 @@ void spawn_async(const std::string& working_directory,
* to users. If an error occurs, @a child_pid, @a standard_input, @a standard_output,
* and @a standard_error will not be filled with valid values.
*/
+GLIBMM_API
void spawn_sync(const std::string& working_directory,
const std::vector<std::string>& argv,
const std::vector<std::string>& envp,
@@ -331,6 +336,7 @@ void spawn_sync(const std::string& working_directory,
* to users. If an error occurs, @a child_pid, @a standard_input, @a standard_output,
* and @a standard_error will not be filled with valid values.
*/
+GLIBMM_API
void spawn_sync(const std::string& working_directory,
const std::vector<std::string>& argv,
SpawnFlags flags = SpawnFlags::DEFAULT,
@@ -356,6 +362,7 @@ void spawn_sync(const std::string& working_directory,
* to users.
* @throws ShellError If the command line could not be parsed.
*/
+GLIBMM_API
void spawn_command_line_async(const std::string& command_line);
/** A simple version of spawn_sync() with little-used parameters
@@ -391,6 +398,7 @@ void spawn_command_line_async(const std::string& command_line);
* to users.
* @throws ShellError If the command line could not be parsed.
*/
+GLIBMM_API
void spawn_command_line_sync(const std::string& command_line,
std::string* standard_output = nullptr,
std::string* standard_error = nullptr,
@@ -403,6 +411,7 @@ void spawn_command_line_sync(const std::string& command_line,
*
* @param pid The process identifier to close.
*/
+GLIBMM_API
void spawn_close_pid(Pid pid);
/** @} group Spawn */
diff --git a/glib/src/timezone.hg b/glib/src/timezone.hg
index 1d94ba01..ba7101f7 100644
--- a/glib/src/timezone.hg
+++ b/glib/src/timezone.hg
@@ -51,13 +51,13 @@ _WRAP_ENUM(TimeType, GTimeType, NO_GTYPE)
* changing.
* @newin{2,30}
*/
-class TimeZone
+class GLIBMM_API TimeZone
{
// GTimeZone is refcounted, but Glib::TimeZone is not.
// GTimeZone is immutable. Therefore, there is no problem having several
// Glib::TimeZone instances wrap the same GTimeZone, and it's easier to use
// Glib::TimeZone without Glib::RefPtr.
- _CLASS_BOXEDTYPE(TimeZone, GTimeZone, NONE, g_time_zone_ref, g_time_zone_unref)
+ _CLASS_BOXEDTYPE(TimeZone, GTimeZone, NONE, g_time_zone_ref, g_time_zone_unref, GLIBMM_API)
_IGNORE(g_time_zone_ref, g_time_zone_unref)
public:
diff --git a/glib/src/uriutils.hg b/glib/src/uriutils.hg
index 167068b9..ef9102b6 100644
--- a/glib/src/uriutils.hg
+++ b/glib/src/uriutils.hg
@@ -42,6 +42,7 @@ namespace Glib
* @ingroup UriUtils
* @newin{2,16}
*/
+GLIBMM_API
std::string uri_unescape_string(const std::string& escaped_string, const std::string& illegal_characters = {});
//TODO: Use iterator?
@@ -61,6 +62,7 @@ std::string uri_unescape_string(const std::string& escaped_string, const std::st
* @ingroup UriUtils
* @newin{2,16}
*/
+GLIBMM_API
std::string uri_parse_scheme(const std::string& uri);
/** Escapes a string for use in a URI.
@@ -80,6 +82,7 @@ std::string uri_parse_scheme(const std::string& uri);
* @ingroup UriUtils
* @newin{2,16}
*/
+GLIBMM_API
std::string uri_escape_string(const std::string& unescaped, const std::string& reserved_chars_allowed = {}, bool allow_utf8 = true);
} // namespace Glib
diff --git a/glib/src/value_basictypes.h.m4 b/glib/src/value_basictypes.h.m4
index 40d980e2..342f1e93 100644
--- a/glib/src/value_basictypes.h.m4
+++ b/glib/src/value_basictypes.h.m4
@@ -29,7 +29,7 @@ LINE(]__line__[)dnl
* @ingroup glibmmValue
*/
template <>
-class Value<$1> : public ValueBase
+class GLIBMM_API Value<$1> : public ValueBase
{
public:
using CppType = $1;
diff --git a/glib/src/variant.hg b/glib/src/variant.hg
index 114d84c9..0918d4d7 100644
--- a/glib/src/variant.hg
+++ b/glib/src/variant.hg
@@ -71,7 +71,7 @@ class Bytes;
// Now (2014-01-30) it's also thrown by Gio::Action::parse_detailed_name().
/** %Exception class for Variant parse errors.
*/
-_WRAP_GERROR(VariantParseError, GVariantParseError, G_VARIANT_PARSE_ERROR, NO_GTYPE)
+_WRAP_GERROR(VariantParseError, GVariantParseError, G_VARIANT_PARSE_ERROR, NO_GTYPE, decl_prefix GLIBMM_API)
//TODO: Add this documentation from the API if we are confident of it for the C++ wrapper:
// #GVariant is completely threadsafe. A #GVariant instance can be
@@ -89,9 +89,9 @@ _WRAP_GERROR(VariantParseError, GVariantParseError, G_VARIANT_PARSE_ERROR, NO_GT
* @newin{2,28}
* @ingroup Variant
*/
-class VariantBase
+class GLIBMM_API VariantBase
{
- _CLASS_OPAQUE_COPYABLE(VariantBase, GVariant, NONE, g_variant_ref_sink, g_variant_unref)
+ _CLASS_OPAQUE_COPYABLE(VariantBase, GVariant, NONE, g_variant_ref_sink, g_variant_unref, GLIBMM_API)
_CUSTOM_CTOR_CAST()
_IGNORE(g_variant_ref, g_variant_ref_sink, g_variant_take_ref, g_variant_unref,
g_variant_get, g_variant_get_va)
@@ -280,7 +280,7 @@ V_CastTo VariantBase::cast_dynamic(const VariantBase& v)
* @newin{2,28}
* @ingroup Variant
*/
-class VariantStringBase : public VariantBase
+class GLIBMM_API VariantStringBase : public VariantBase
{
// Trick gmmproc into thinking this is derived from GVariant to wrap some methods.
_CLASS_GENERIC(VariantStringBase, GVariant)
@@ -335,7 +335,7 @@ public:
* @newin{2,28}
* @ingroup Variant
*/
-class VariantContainerBase : public VariantBase
+class GLIBMM_API VariantContainerBase : public VariantBase
{
// Trick gmmproc into thinking this is derived from GVariant to wrap some methods.
_CLASS_GENERIC(VariantContainerBase, GVariant)
@@ -421,7 +421,7 @@ protected:
};
template<>
-VariantContainerBase VariantBase::cast_dynamic<VariantContainerBase>(const VariantBase& v);
+GLIBMM_API VariantContainerBase VariantBase::cast_dynamic<VariantContainerBase>(const VariantBase& v);
/** Template class used for the specialization of the Variant<> classes.
* @newin{2,28}
@@ -446,7 +446,7 @@ public:
* @ingroup Variant
*/
template<>
-class Variant<VariantBase> : public VariantContainerBase
+class GLIBMM_API Variant<VariantBase> : public VariantContainerBase
{
// Trick gmmproc into thinking this is derived from GVariant to wrap some methods.
_CLASS_GENERIC(Variant<VariantBase>, GVariant)
@@ -545,7 +545,7 @@ public:
* @ingroup Variant
*/
template<>
-class Variant<Glib::ustring> : public VariantStringBase
+class GLIBMM_API Variant<Glib::ustring> : public VariantStringBase
{
// Trick gmmproc into thinking this is derived from GVariant to wrap some methods.
_CLASS_GENERIC(Variant<Glib::ustring>, GVariant)
@@ -592,7 +592,7 @@ public:
* @ingroup Variant
*/
template<>
-class Variant<Glib::DBusObjectPathString> : public VariantStringBase
+class GLIBMM_API Variant<Glib::DBusObjectPathString> : public VariantStringBase
{
// Trick gmmproc into thinking this is derived from GVariant to wrap some methods.
_CLASS_GENERIC(Variant<Glib::DBusObjectPathString>, GVariant)
@@ -638,7 +638,7 @@ public:
* @ingroup Variant
*/
template<>
-class Variant<Glib::DBusSignatureString> : public VariantStringBase
+class GLIBMM_API Variant<Glib::DBusSignatureString> : public VariantStringBase
{
// Trick gmmproc into thinking this is derived from GVariant to wrap some methods.
_CLASS_GENERIC(Variant<Glib::DBusSignatureString>, GVariant)
@@ -685,7 +685,7 @@ public:
* @ingroup Variant
*/
template<>
-class Variant<std::string> : public VariantStringBase
+class GLIBMM_API Variant<std::string> : public VariantStringBase
{
// Trick gmmproc into thinking this is derived from GVariant to wrap some methods.
_CLASS_GENERIC(Variant<std::string>, GVariant)
@@ -846,7 +846,7 @@ public:
* @ingroup Variant
*/
template<>
-class Variant< std::vector<Glib::ustring> > : public VariantContainerBase
+class GLIBMM_API Variant< std::vector<Glib::ustring> > : public VariantContainerBase
{
public:
using CppType = Glib::ustring ;
@@ -910,7 +910,7 @@ public:
* @ingroup Variant
*/
template<>
-class Variant<std::vector<Glib::DBusObjectPathString>> : public VariantContainerBase
+class GLIBMM_API Variant<std::vector<Glib::DBusObjectPathString>> : public VariantContainerBase
{
public:
using CppType = Glib::DBusObjectPathString;
@@ -972,7 +972,7 @@ public:
* @ingroup Variant
*/
template<>
-class Variant< std::vector<std::string> > : public VariantContainerBase
+class GLIBMM_API Variant< std::vector<std::string> > : public VariantContainerBase
{
public:
using CppType = std::string ;
@@ -1593,7 +1593,7 @@ VariantIter Variant<std::tuple<Types...>>::get_iter() const
// This is needed so Glib::VariantBase can be used with
// Glib::Value and _WRAP_PROPERTY in Gio::Action and elsewhere.
template <>
-class Value<Glib::VariantBase> : public ValueBase_Variant
+class GLIBMM_API Value<Glib::VariantBase> : public ValueBase_Variant
{
public:
using CppType = Glib::VariantBase;
diff --git a/glib/src/variant_basictypes.h.m4 b/glib/src/variant_basictypes.h.m4
index 54151771..199295b9 100644
--- a/glib/src/variant_basictypes.h.m4
+++ b/glib/src/variant_basictypes.h.m4
@@ -39,7 +39,7 @@ LINE(]__line__[)dnl
* @ingroup Variant
*/
template <>
-class Variant<$1> : public VariantBase
+class GLIBMM_API Variant<$1> : public VariantBase
{
public:
using CType = $2;
diff --git a/glib/src/variantdict.hg b/glib/src/variantdict.hg
index 1f9a5a16..4b69a085 100644
--- a/glib/src/variantdict.hg
+++ b/glib/src/variantdict.hg
@@ -32,11 +32,11 @@ namespace Glib
*
* newin{2,40}
*/
-class VariantDict final
+class GLIBMM_API VariantDict final
{
//GVariantDict is registered as a boxed type, but it has ref/unref functions instead of copy/free,
//so we use it via RefPtr.
- _CLASS_OPAQUE_REFCOUNTED(VariantDict, GVariantDict, NONE, g_variant_dict_ref, g_variant_dict_unref)
+ _CLASS_OPAQUE_REFCOUNTED(VariantDict, GVariantDict, NONE, g_variant_dict_ref, g_variant_dict_unref, GLIBMM_API)
_IGNORE(g_variant_dict_ref, g_variant_dict_unref, g_variant_dict_init)
public:
diff --git a/glib/src/variantiter.hg b/glib/src/variantiter.hg
index c81dc29a..ede976e6 100644
--- a/glib/src/variantiter.hg
+++ b/glib/src/variantiter.hg
@@ -20,8 +20,8 @@ _DEFS(glibmm,glib)
namespace Glib
{
-class VariantBase;
-class VariantContainerBase;
+class GLIBMM_API VariantBase;
+class GLIBMM_API VariantContainerBase;
//This can't be like a real iterator (like Gtk::TextIter),
//because g_iter_value_get_next_value() both gets a value and changes the iterator.
@@ -30,9 +30,9 @@ class VariantContainerBase;
* VariantContainerBase containers such as arrays.
* @newin{2,28}
*/
-class VariantIter
+class GLIBMM_API VariantIter
{
- _CLASS_OPAQUE_COPYABLE(VariantIter, GVariantIter, NONE, g_variant_iter_copy, g_variant_iter_free)
+ _CLASS_OPAQUE_COPYABLE(VariantIter, GVariantIter, NONE, g_variant_iter_copy, g_variant_iter_free, GLIBMM_API)
_IGNORE(g_variant_iter_copy, g_variant_iter_free)
public:
explicit VariantIter(const VariantContainerBase& variant);
diff --git a/glib/src/varianttype.hg b/glib/src/varianttype.hg
index 50ddac16..870be3d9 100644
--- a/glib/src/varianttype.hg
+++ b/glib/src/varianttype.hg
@@ -88,9 +88,9 @@ namespace Glib
* @newin{2,28}
* @ingroup Variant
*/
-class VariantType
+class GLIBMM_API VariantType
{
- _CLASS_OPAQUE_COPYABLE(VariantType, GVariantType, NONE, g_variant_type_copy, g_variant_type_free)
+ _CLASS_OPAQUE_COPYABLE(VariantType, GVariantType, NONE, g_variant_type_copy, g_variant_type_free, GLIBMM_API)
_IGNORE(g_variant_type_copy, g_variant_type_free)
public:
@@ -191,63 +191,63 @@ public:
_IGNORE(g_variant_type_info_get)
};
-extern const VariantType VARIANT_TYPE_BOOL;
+extern GLIBMM_API const VariantType VARIANT_TYPE_BOOL;
-extern const VariantType VARIANT_TYPE_BYTE;
+extern GLIBMM_API const VariantType VARIANT_TYPE_BYTE;
-extern const VariantType VARIANT_TYPE_INT16;
+extern GLIBMM_API const VariantType VARIANT_TYPE_INT16;
-extern const VariantType VARIANT_TYPE_UINT16;
+extern GLIBMM_API const VariantType VARIANT_TYPE_UINT16;
-extern const VariantType VARIANT_TYPE_INT32;
+extern GLIBMM_API const VariantType VARIANT_TYPE_INT32;
-extern const VariantType VARIANT_TYPE_UINT32;
+extern GLIBMM_API const VariantType VARIANT_TYPE_UINT32;
-extern const VariantType VARIANT_TYPE_INT64;
+extern GLIBMM_API const VariantType VARIANT_TYPE_INT64;
-extern const VariantType VARIANT_TYPE_UINT64;
+extern GLIBMM_API const VariantType VARIANT_TYPE_UINT64;
-extern const VariantType VARIANT_TYPE_DOUBLE;
+extern GLIBMM_API const VariantType VARIANT_TYPE_DOUBLE;
-extern const VariantType VARIANT_TYPE_STRING;
+extern GLIBMM_API const VariantType VARIANT_TYPE_STRING;
-extern const VariantType VARIANT_TYPE_OBJECT_PATH;
+extern GLIBMM_API const VariantType VARIANT_TYPE_OBJECT_PATH;
-extern const VariantType VARIANT_TYPE_SIGNATURE;
+extern GLIBMM_API const VariantType VARIANT_TYPE_SIGNATURE;
-extern const VariantType VARIANT_TYPE_VARIANT;
+extern GLIBMM_API const VariantType VARIANT_TYPE_VARIANT;
-extern const VariantType VARIANT_TYPE_HANDLE;
+extern GLIBMM_API const VariantType VARIANT_TYPE_HANDLE;
-extern const VariantType VARIANT_TYPE_UNIT;
+extern GLIBMM_API const VariantType VARIANT_TYPE_UNIT;
-extern const VariantType VARIANT_TYPE_ANY;
+extern GLIBMM_API const VariantType VARIANT_TYPE_ANY;
-extern const VariantType VARIANT_TYPE_BASIC;
+extern GLIBMM_API const VariantType VARIANT_TYPE_BASIC;
-extern const VariantType VARIANT_TYPE_MAYBE;
+extern GLIBMM_API const VariantType VARIANT_TYPE_MAYBE;
-extern const VariantType VARIANT_TYPE_ARRAY;
+extern GLIBMM_API const VariantType VARIANT_TYPE_ARRAY;
-extern const VariantType VARIANT_TYPE_TUPLE;
+extern GLIBMM_API const VariantType VARIANT_TYPE_TUPLE;
-extern const VariantType VARIANT_TYPE_DICT_ENTRY;
+extern GLIBMM_API const VariantType VARIANT_TYPE_DICT_ENTRY;
-extern const VariantType VARIANT_TYPE_DICTIONARY;
+extern GLIBMM_API const VariantType VARIANT_TYPE_DICTIONARY;
-extern const VariantType VARIANT_TYPE_STRING_ARRAY;
+extern GLIBMM_API const VariantType VARIANT_TYPE_STRING_ARRAY;
-extern const VariantType VARIANT_TYPE_OBJECT_PATH_ARRAY;
+extern GLIBMM_API const VariantType VARIANT_TYPE_OBJECT_PATH_ARRAY;
-extern const VariantType VARIANT_TYPE_BYTESTRING;
+extern GLIBMM_API const VariantType VARIANT_TYPE_BYTESTRING;
-extern const VariantType VARIANT_TYPE_BYTESTRING_ARRAY;
+extern GLIBMM_API const VariantType VARIANT_TYPE_BYTESTRING_ARRAY;
#ifndef DOXYGEN_SHOULD_SKIP_THIS
// This is needed so Glib::VariantType can be used with
// Glib::Value and _WRAP_PROPERTY in Gio::Action and elsewhere.
template <>
-class Value<Glib::VariantType> : public ValueBase_Boxed
+class GLIBMM_API Value<Glib::VariantType> : public ValueBase_Boxed
{
public:
using CppType = Glib::VariantType;