We should change the XBT_PUBLIC(type) macro into a XBT_PUBLIC just as
XBT_PRIVATE. But that's a big change and I have other ongoing things.
namespace simgrid {
namespace s4u {
namespace simgrid {
namespace s4u {
-std::map<std::string, Storage*>* allStorages();
+XBT_ATTRIB_PUBLIC std::map<std::string, Storage*>* allStorages();
XBT_PUBLIC_CLASS Storage
{
XBT_PUBLIC_CLASS Storage
{
/* Build the DLL */
#if defined(DLL_EXPORT)
/* Build the DLL */
#if defined(DLL_EXPORT)
+# define XBT_ATTRIB_PUBLIC __declspec(dllexport)
# define XBT_PUBLIC(type) __declspec(dllexport) type
# define XBT_EXPORT_NO_IMPORT(type) __declspec(dllexport) type
# define XBT_IMPORT_NO_EXPORT(type) type
# define XBT_PUBLIC(type) __declspec(dllexport) type
# define XBT_EXPORT_NO_IMPORT(type) __declspec(dllexport) type
# define XBT_IMPORT_NO_EXPORT(type) type
/* Link against the DLL */
#elif (defined(_WIN32) && !defined(DLL_EXPORT))
/* Link against the DLL */
#elif (defined(_WIN32) && !defined(DLL_EXPORT))
+# define XBT_ATTRIB_PUBLIC __declspec(dllimport)
# define XBT_PUBLIC(type) __declspec(dllimport) type
# define XBT_EXPORT_NO_IMPORT(type) type
# define XBT_IMPORT_NO_EXPORT(type) __declspec(dllimport) type
# define XBT_PUBLIC(type) __declspec(dllimport) type
# define XBT_EXPORT_NO_IMPORT(type) type
# define XBT_IMPORT_NO_EXPORT(type) __declspec(dllimport) type
# define XBT_PRIVATE
#elif defined(__ELF__)
# define XBT_PRIVATE
#elif defined(__ELF__)
+# define XBT_ATTRIB_PUBLIC __attribute__((visibility("default")))
# define XBT_PUBLIC(type) __attribute__((visibility("default"))) type
# define XBT_EXPORT_NO_IMPORT(type) __attribute__((visibility("default"))) type
# define XBT_IMPORT_NO_EXPORT(type) __attribute__((visibility("default"))) type
# define XBT_PUBLIC(type) __attribute__((visibility("default"))) type
# define XBT_EXPORT_NO_IMPORT(type) __attribute__((visibility("default"))) type
# define XBT_IMPORT_NO_EXPORT(type) __attribute__((visibility("default"))) type
# define XBT_PRIVATE __attribute__((visibility("hidden")))
#else
# define XBT_PRIVATE __attribute__((visibility("hidden")))
#else
+# define XBT_ATTRIB_PUBLIC /* public */
# define XBT_PUBLIC(type) type
# define XBT_EXPORT_NO_IMPORT(type) type
# define XBT_IMPORT_NO_EXPORT(type) type
# define XBT_PUBLIC(type) type
# define XBT_EXPORT_NO_IMPORT(type) type
# define XBT_IMPORT_NO_EXPORT(type) type