From 4a8cd4375d5fd1b5733e691051d1fa7c2ccce595 Mon Sep 17 00:00:00 2001 From: John Emmas Date: Fri, 30 Aug 2013 19:51:45 +0100 Subject: 'libs/panners' - A small test (before going too far) to see if these changes have any detrimental affect on the non-MSVC builds. --- libs/ardour/ardour/panner.h | 29 +++++++++++++++++++++++++++-- libs/panners/1in2out/panner_1in2out.cc | 4 ++-- libs/panners/1in2out/panner_1in2out.h | 5 +++-- 3 files changed, 32 insertions(+), 6 deletions(-) (limited to 'libs') diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h index b30b1859a3..7ebf1ec989 100644 --- a/libs/ardour/ardour/panner.h +++ b/libs/ardour/ardour/panner.h @@ -34,6 +34,31 @@ #include "ardour/automation_control.h" #include "ardour/automatable.h" +#if !defined(ARDOURPANNER_IS_IN_WINDLL) + #if defined(COMPILER_MSVC) || defined(COMPILER_MINGW) + // If you need '__declspec' compatibility, add extra compilers to the above as necessary + #define ARDOURPANNER_IS_IN_WINDLL 1 + #else + #define ARDOURPANNER_IS_IN_WINDLL 0 + #endif +#endif + +#if ARDOURPANNER_IS_IN_WINDLL && !defined(ARDOURPANNER_API) + #if defined(BUILDING_ARDOURPANNERS) + #define ARDOURPANNER_API __declspec(dllexport) + #define ARDOURPANNER_APICALLTYPE __thiscall + #elif defined(COMPILER_MSVC) || defined(COMPILER_MINGW) // Probably needs Cygwin too, at some point + #define ARDOURPANNER_API __declspec(dllimport) + #define ARDOURPANNER_APICALLTYPE __thiscall + #else + #error "Attempting to define __declspec with an incompatible compiler !" + #endif +#elif !defined(ARDOURPANNER_API) + // Other compilers / platforms could be accommodated here + #define ARDOURPANNER_API + #define ARDOURPANNER_APICALLTYPE +#endif + namespace ARDOUR { class Session; @@ -67,7 +92,7 @@ public: * return false */ - virtual bool clamp_position (double&) { return true; } + virtual bool ARDOURPANNER_APICALLTYPE clamp_position (double&) { return true; } virtual bool clamp_width (double&) { return true; } virtual bool clamp_elevation (double&) { return true; } @@ -75,7 +100,7 @@ public: virtual std::pair width_range () const { return std::make_pair (-DBL_MAX, DBL_MAX); } virtual std::pair elevation_range () const { return std::make_pair (-DBL_MAX, DBL_MAX); } - virtual void set_position (double) { } + virtual void ARDOURPANNER_APICALLTYPE set_position (double) { } virtual void set_width (double) { } virtual void set_elevation (double) { } diff --git a/libs/panners/1in2out/panner_1in2out.cc b/libs/panners/1in2out/panner_1in2out.cc index 4524ed560b..ef70a11dc9 100644 --- a/libs/panners/1in2out/panner_1in2out.cc +++ b/libs/panners/1in2out/panner_1in2out.cc @@ -104,7 +104,7 @@ Panner1in2out::update () desired_right = panR * (scale * panR + 1.0f - scale); } -void +ARDOURPANNER_API void ARDOURPANNER_APICALLTYPE Panner1in2out::set_position (double p) { if (clamp_position (p)) { @@ -112,7 +112,7 @@ Panner1in2out::set_position (double p) } } -bool +ARDOURPANNER_API bool ARDOURPANNER_APICALLTYPE Panner1in2out::clamp_position (double& p) { /* any position between 0.0 and 1.0 is legal */ diff --git a/libs/panners/1in2out/panner_1in2out.h b/libs/panners/1in2out/panner_1in2out.h index 97d23495c7..aa5428a329 100644 --- a/libs/panners/1in2out/panner_1in2out.h +++ b/libs/panners/1in2out/panner_1in2out.h @@ -33,6 +33,7 @@ #include "ardour/types.h" #include "ardour/panner.h" + namespace ARDOUR { class Panner1in2out : public Panner @@ -41,8 +42,8 @@ class Panner1in2out : public Panner Panner1in2out (boost::shared_ptr); ~Panner1in2out (); - void set_position (double); - bool clamp_position (double&); + ARDOURPANNER_API void ARDOURPANNER_APICALLTYPE set_position (double); + ARDOURPANNER_API bool ARDOURPANNER_APICALLTYPE clamp_position (double&); std::pair position_range () const; double position() const; -- cgit v1.2.3