]> git.tdb.fi Git - libs/datafile.git/commitdiff
Decorate things which should be visible to users of the library
authorMikko Rasa <tdb@tdb.fi>
Tue, 3 Jan 2023 08:58:57 +0000 (10:58 +0200)
committerMikko Rasa <tdb@tdb.fi>
Tue, 3 Jan 2023 09:00:58 +0000 (11:00 +0200)
12 files changed:
source/builtinsource.h
source/collection.h
source/collectionsource.h
source/directorysource.h
source/except.h
source/loader.h
source/mspdatafile_api.h [new file with mode: 0644]
source/packsource.h
source/parser.h
source/rawdata.h
source/statement.h
source/writer.h

index e81b37f0a7dac49e9f1f6e10af6fd7baad87fca8..5224286e600e370567f472997d19802ad1e8e86c 100644 (file)
@@ -2,11 +2,12 @@
 #define MSP_DATAFILE_BUILTINSOURCE_H_
 
 #include "collectionsource.h"
+#include "mspdatafile_api.h"
 
 namespace Msp {
 namespace DataFile {
 
-class BuiltinSource: public CollectionSource
+class MSPDATAFILE_API BuiltinSource: public CollectionSource
 {
 private:
        struct Object
index c8470dd29a50acd6bcfcee5e51c561b729cbb705..a0717cfd8fc44746f1f59c215c2a14ab2ce1f043 100644 (file)
@@ -9,6 +9,7 @@
 #include "collectionsource.h"
 #include "loader.h"
 #include "meta.h"
+#include "mspdatafile_api.h"
 
 /* XXX This file is a big mess with too many things in it.  However, the
 dependencies between those things make it difficult to split up. */
@@ -51,7 +52,7 @@ that are not present.  Items retrieted from the fallback collection are shared
 between the collections, and are only deleted when all collections in the chain
 have been destroyed.
 */
-class Collection: private NonCopyable
+class MSPDATAFILE_API Collection: private NonCopyable
 {
 public:
        /**
index eeff10acc12e3313e2080d9164963747d5bccf26..3aa2190c736fa720766437586e0bbe649c1d7e08 100644 (file)
@@ -4,6 +4,7 @@
 #include <list>
 #include <string>
 #include <msp/io/seekable.h>
+#include "mspdatafile_api.h"
 
 namespace Msp {
 namespace DataFile {
@@ -15,7 +16,7 @@ class CollectionItemTypeBase;
 Provides automatically loadable objects for collections.  This is a base class;
 see DirectorySource and PackSource for concrete classes.
 */
-class CollectionSource
+class MSPDATAFILE_API CollectionSource
 {
 public:
        typedef std::list<std::string> NameList;
index 654906565eeb839dd4991070bfb59629ee68f3e5..07e1664ee585cd348f79e893cb685c792382dd0a 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <msp/fs/path.h>
 #include "collectionsource.h"
+#include "mspdatafile_api.h"
 
 namespace Msp {
 namespace DataFile {
@@ -10,7 +11,7 @@ namespace DataFile {
 /**
 A source that load items from files in a directory.
 */
-class DirectorySource: public CollectionSource
+class MSPDATAFILE_API DirectorySource: public CollectionSource
 {
 private:
        typedef std::map<std::string, FS::Path> ObjectMap;
index 8357c7e33b8ce5d25f9d03c4557869cd52dab48e..533072e8ddcf3fe5fdb3b592d250c4099c43b80c 100644 (file)
@@ -4,11 +4,12 @@
 #include <stdexcept>
 #include <string>
 #include <typeinfo>
+#include "mspdatafile_api.h"
 
 namespace Msp {
 namespace DataFile {
 
-class data_error: public std::runtime_error
+class MSPDATAFILE_API data_error: public std::runtime_error
 {
 private:
        std::string source;
@@ -28,7 +29,7 @@ private:
 };
 
 
-class parse_error: public std::runtime_error
+class MSPDATAFILE_API parse_error: public std::runtime_error
 {
 public:
        parse_error(const std::string &);
@@ -36,7 +37,7 @@ public:
 };
 
 
-class syntax_error: public std::runtime_error
+class MSPDATAFILE_API syntax_error: public std::runtime_error
 {
 public:
        syntax_error(const std::string &t);
@@ -44,7 +45,7 @@ public:
 };
 
 
-class bad_definition: public std::runtime_error
+class MSPDATAFILE_API bad_definition: public std::runtime_error
 {
 public:
        bad_definition(const std::string &w);
@@ -52,7 +53,7 @@ public:
 };
 
 
-class nesting_error: public std::logic_error
+class MSPDATAFILE_API nesting_error: public std::logic_error
 {
 public:
        nesting_error(const std::string &);
@@ -60,7 +61,7 @@ public:
 };
 
 
-class unknown_keyword: public std::runtime_error
+class MSPDATAFILE_API unknown_keyword: public std::runtime_error
 {
 public:
        unknown_keyword(const std::string &);
@@ -68,7 +69,7 @@ public:
 };
 
 
-class invalid_signature: public std::runtime_error
+class MSPDATAFILE_API invalid_signature: public std::runtime_error
 {
 public:
        invalid_signature(const std::string &, const std::string &);
@@ -76,7 +77,7 @@ public:
 };
 
 
-class no_collection: public std::runtime_error
+class MSPDATAFILE_API no_collection: public std::runtime_error
 {
 public:
        no_collection(const std::type_info &);
index 3fe26e7c03bccfce0cd2441a46e055b99ffb8831..5b96cb0954812f2f17ec1d01e4b1260f8c0cf2a4 100644 (file)
@@ -6,6 +6,7 @@
 #include <msp/io/file.h>
 #include "loaderaction.h"
 #include "meta.h"
+#include "mspdatafile_api.h"
 #include "parser.h"
 #include "statement.h"
 
@@ -34,10 +35,10 @@ destructor.
 
 See also classes ObjectLoader and CollectionObjectLoader in objectloader.h.
 */
-class Loader: private NonCopyable
+class MSPDATAFILE_API Loader: private NonCopyable
 {
 protected:
-       class ActionMap: public std::map<StatementKey, LoaderAction *>, private NonCopyable
+       class MSPDATAFILE_API ActionMap: public std::map<StatementKey, LoaderAction *>, private NonCopyable
        {
        public:
                ~ActionMap();
diff --git a/source/mspdatafile_api.h b/source/mspdatafile_api.h
new file mode 100644 (file)
index 0000000..e0259d3
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef MSP_DATAFILE_API_H_
+#define MSP_DATAFILE_API_H_
+
+#if defined(_WIN32)
+#if defined(MSPDATAFILE_BUILD)
+#define MSPDATAFILE_API __declspec(dllexport)
+#elif defined(MSPDATAFILE_IMPORT)
+#define MSPDATAFILE_API __declspec(dllimport)
+#else
+#define MSPDATAFILE_API
+#endif
+#elif defined(__GNUC__)
+#define MSPDATAFILE_API __attribute__((visibility("default")))
+#else
+#define MSPDATAFILE_API
+#endif
+
+#endif
index d2194e044ca6739ca889f4ed7e61e1f4b8f8a6e7..e163736589f82327d61544fff080d3e2fa5dd543 100644 (file)
@@ -4,6 +4,7 @@
 #include <msp/core/noncopyable.h>
 #include <msp/core/refptr.h>
 #include "collectionsource.h"
+#include "mspdatafile_api.h"
 #include "objectloader.h"
 
 namespace Msp {
@@ -20,7 +21,7 @@ It's possible for a pack file to contain plain collection files as well.  When
 an object from such a file is requested, the entire sub-collection it is stored
 in is loaded.
 */
-class PackSource: public CollectionSource
+class MSPDATAFILE_API PackSource: public CollectionSource
 {
 public:
        struct FileInfo
index ed7a037cdb12a7eeb1d49f2526a4925800921012..32a776082de1896e20fbe5aa001a78669e33ea66 100644 (file)
@@ -4,6 +4,7 @@
 #include <string>
 #include <msp/core/noncopyable.h>
 #include "input.h"
+#include "mspdatafile_api.h"
 
 namespace Msp {
 namespace DataFile {
@@ -19,7 +20,7 @@ Frontend for loading datafiles.  Handles switching between text and binary
 formats.  A Parser evaluates into a boolean value indicating whether more
 statements may be read.
 */
-class Parser: private NonCopyable
+class MSPDATAFILE_API Parser: private NonCopyable
 {
 private:
        Input in;
index ad265575db30fbdd4bea5fd20d66f4e242570d0b..c17f907b52fd015d63f077029036dec00a36a7c6 100644 (file)
@@ -4,13 +4,14 @@
 #include <string>
 #include <msp/core/noncopyable.h>
 #include <msp/io/base.h>
+#include "mspdatafile_api.h"
 
 namespace Msp {
 namespace DataFile {
 
 class Collection;
 
-class RawData: public NonCopyable
+class MSPDATAFILE_API RawData: public NonCopyable
 {
 private:
        enum Flags
index a580f379e47eb5130aa6379aa03d301433ce614b..6a9da0462d8fda6cecbe3d9a2c4bc775c481574f 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_DATAFILE_STATEMENT_H_
 
 #include <list>
+#include "mspdatafile_api.h"
 #include "value.h"
 
 namespace Msp {
@@ -9,7 +10,7 @@ namespace DataFile {
 
 struct Token;
 
-struct Statement
+struct MSPDATAFILE_API Statement
 {
        typedef std::vector<Value> Arguments;
 
index 5f32786f443b443f15c33d996ed070d10fb0461d..05ab369f439e3d94bf3d94e5a2a6b04364c9b914 100644 (file)
@@ -4,6 +4,7 @@
 #include <map>
 #include <msp/core/noncopyable.h>
 #include <msp/io/base.h>
+#include "mspdatafile_api.h"
 #include "output.h"
 
 namespace Msp {
@@ -15,7 +16,7 @@ class WriterMode;
 /**
 Frontend for writing data.
 */
-class Writer: private NonCopyable
+class MSPDATAFILE_API Writer: private NonCopyable
 {
 private:
        Output out;