diff --git a/include/mapnik/enumeration.hpp b/include/mapnik/enumeration.hpp index f60a16f45..c0ca1c79e 100644 --- a/include/mapnik/enumeration.hpp +++ b/include/mapnik/enumeration.hpp @@ -333,8 +333,8 @@ operator>>(std::istream & is, mapnik::enumeration & e) */ #define IMPLEMENT_ENUM( name, strings ) \ - template <> const char ** name ::our_strings_ = strings; \ - template <> std::string name ::our_name_ = #name; \ - template <> bool name ::our_verified_flag_( name ::verify_mapnik_enum(__FILE__, __LINE__)); + template <> MAPNIK_DECL const char ** name ::our_strings_ = strings; \ + template <> MAPNIK_DECL std::string name ::our_name_ = #name; \ + template <> MAPNIK_DECL bool name ::our_verified_flag_( name ::verify_mapnik_enum(__FILE__, __LINE__)); #endif // MAPNIK_ENUMERATION_HPP diff --git a/include/mapnik/group/group_rule.hpp b/include/mapnik/group/group_rule.hpp index da83a6707..267093b78 100644 --- a/include/mapnik/group/group_rule.hpp +++ b/include/mapnik/group/group_rule.hpp @@ -36,7 +36,7 @@ namespace mapnik * be rendered atomically when the filter attached to * this rule is matched. */ -struct group_rule +struct MAPNIK_DECL group_rule { using symbolizers = std::vector; diff --git a/include/mapnik/image_data.hpp b/include/mapnik/image_data.hpp index f576e09d0..599387e04 100644 --- a/include/mapnik/image_data.hpp +++ b/include/mapnik/image_data.hpp @@ -25,6 +25,7 @@ // mapnik #include +#include // stl #include @@ -34,7 +35,7 @@ namespace mapnik { template -class ImageData +class MAPNIK_DECL ImageData { public: using pixel_type = T; diff --git a/include/mapnik/symbolizer.hpp b/include/mapnik/symbolizer.hpp index ad3a0c9bb..92df57b47 100644 --- a/include/mapnik/symbolizer.hpp +++ b/include/mapnik/symbolizer.hpp @@ -90,7 +90,7 @@ using dash_array = std::vector >; class text_placements; using text_placements_ptr = std::shared_ptr; -struct MAPNIK_DECL symbolizer_base +struct MAPNIK_DECL symbolizer_base { using value_type = boost::variant }; template -void put(symbolizer_base & sym, keys key, T const& val) +MAPNIK_DECL void put(symbolizer_base & sym, keys key, T const& val) { constexpr bool enum_ = std::is_enum::value; detail::put_impl::apply(sym, key, val); } template -bool has_key(symbolizer_base const& sym, keys key) +MAPNIK_DECL bool has_key(symbolizer_base const& sym, keys key) { return (sym.properties.count(key) == 1); } template -T get(symbolizer_base const& sym, keys key, mapnik::feature_impl const& feature, attributes const& vars, T const& _default_value = T()) +MAPNIK_DECL T get(symbolizer_base const& sym, keys key, mapnik::feature_impl const& feature, attributes const& vars, T const& _default_value = T()) { using const_iterator = symbolizer_base::cont_type::const_iterator; const_iterator itr = sym.properties.find(key); @@ -478,7 +478,7 @@ T get(symbolizer_base const& sym, keys key, mapnik::feature_impl const& feature, } template -boost::optional get_optional(symbolizer_base const& sym, keys key, mapnik::feature_impl const& feature, attributes const& vars) +MAPNIK_DECL boost::optional get_optional(symbolizer_base const& sym, keys key, mapnik::feature_impl const& feature, attributes const& vars) { using const_iterator = symbolizer_base::cont_type::const_iterator; const_iterator itr = sym.properties.find(key); @@ -490,7 +490,7 @@ boost::optional get_optional(symbolizer_base const& sym, keys key, mapnik::fe } template -T get(symbolizer_base const& sym, keys key, T const& _default_value = T()) +MAPNIK_DECL T get(symbolizer_base const& sym, keys key, T const& _default_value = T()) { using const_iterator = symbolizer_base::cont_type::const_iterator; const_iterator itr = sym.properties.find(key); @@ -502,7 +502,7 @@ T get(symbolizer_base const& sym, keys key, T const& _default_value = T()) } template -boost::optional get_optional(symbolizer_base const& sym, keys key) +MAPNIK_DECL boost::optional get_optional(symbolizer_base const& sym, keys key) { using const_iterator = symbolizer_base::cont_type::const_iterator; const_iterator itr = sym.properties.find(key); @@ -520,8 +520,8 @@ constexpr auto to_integral(Enum e) -> typename std::underlying_type::type } using property_meta_type = std::tuple, property_types>; -property_meta_type const& get_meta(mapnik::keys key); -mapnik::keys get_key(std::string const& name); +MAPNIK_DECL property_meta_type const& get_meta(mapnik::keys key); +MAPNIK_DECL mapnik::keys get_key(std::string const& name); // concrete symbolizer types struct MAPNIK_DECL point_symbolizer : public symbolizer_base {}; diff --git a/include/mapnik/value_types.hpp b/include/mapnik/value_types.hpp index 8e810199e..fb6e2d8c7 100644 --- a/include/mapnik/value_types.hpp +++ b/include/mapnik/value_types.hpp @@ -23,6 +23,9 @@ #ifndef MAPNIK_VALUE_TYPES_HPP #define MAPNIK_VALUE_TYPES_HPP +// mapnik +#include + // icu #include // for UnicodeString @@ -42,7 +45,7 @@ using value_double = double; using value_unicode_string = U_NAMESPACE_QUALIFIER UnicodeString; using value_bool = bool; -struct value_null +struct MAPNIK_DECL value_null { bool operator==(value_null const&) const { diff --git a/plugins/input/gdal/gdal_datasource.cpp b/plugins/input/gdal/gdal_datasource.cpp index 6da44d0cd..ed714019c 100644 --- a/plugins/input/gdal/gdal_datasource.cpp +++ b/plugins/input/gdal/gdal_datasource.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include