Skip to content

File dllexport.h

File List > common > dllexport.h

Go to the documentation of this file

#pragma once

#ifdef __cplusplus
#define UIPC_EXTERN_C extern "C"
#define UIPC_NOEXCEPT noexcept
#else
#define UIPC_EXTERN_C
#define UIPC_NOEXCEPT
#endif

#ifdef _MSC_VER
#define UIPC_FORCE_INLINE inline
#define UIPC_NEVER_INLINE __declspec(noinline)
#define UIPC_EXPORT_API UIPC_EXTERN_C __declspec(dllexport)
#define UIPC_IMPORT_API UIPC_EXTERN_C __declspec(dllimport)
#else
#define UIPC_FORCE_INLINE __attribute__((always_inline, hot)) inline
#define UIPC_NEVER_INLINE __attribute__((noinline))
#define UIPC_EXPORT_API UIPC_EXTERN_C __attribute__((visibility("default")))
#define UIPC_IMPORT_API UIPC_EXTERN_C
#endif

#ifdef _MSC_VER

// CORE
#ifdef UIPC_CORE_EXPORT_DLL
#define UIPC_CORE_API __declspec(dllexport)
#else
#define UIPC_CORE_API __declspec(dllimport)
#endif
// GEOMETRY
#ifdef UIPC_GEOMETRY_EXPORT_DLL
#define UIPC_GEOMETRY_API __declspec(dllexport)
#else
#define UIPC_GEOMETRY_API __declspec(dllimport)
#endif
// CONSTITUTION
#ifdef UIPC_CONSTITUTION_EXPORT_DLL
#define UIPC_CONSTITUTION_API __declspec(dllexport)
#else
#define UIPC_CONSTITUTION_API __declspec(dllimport)
#endif
// IO
#ifdef UIPC_IO_EXPORT_DLL
#define UIPC_IO_API __declspec(dllexport)
#else
#define UIPC_IO_API __declspec(dllimport)
#endif
// BACKEND
#ifdef UIPC_BACKEND_EXPORT_DLL
#define UIPC_BACKEND_API __declspec(dllexport)
#else
#define UIPC_BACKEND_API __declspec(dllimport)
#endif

#else

// CORE
#define UIPC_CORE_API
// GEOMETRY
#define UIPC_GEOMETRY_API
// CONSTITUTION
#define UIPC_CONSTITUTION_API
// IO
#define UIPC_IO_API
// BACKEND
#define UIPC_BACKEND_API

#endif