Skip to content

Commit e701b07

Browse files
Add symbols export
1 parent 178d1f2 commit e701b07

File tree

2 files changed

+66
-18
lines changed

2 files changed

+66
-18
lines changed

src/MackieControl.h

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
1-
/*****************************************************************//**
1+
/*****************************************************************//**
22
* \file MackieControl.h
33
* \brief A compact Mackie Control library on JUCE.
44
*
55
* \author WuChang
66
7-
* \date July 2023
8-
* \version 1.0.2
7+
* \date Jan 2024
8+
* \version 1.0.3
99
* \license MIT License
1010
*********************************************************************/
1111

1212
#pragma once
1313

1414
#include <JuceHeader.h>
1515

16+
#include "Macros.h"
17+
1618
namespace mackieControl {
1719
/**
1820
* Mackie Control messages via MIDI system exclusive message.
1921
*/
20-
enum class SysExMessage : uint8_t {
22+
enum class MACKIE_API SysExMessage : uint8_t {
2123
DeviceQuery = 0,
2224
HostConnectionQuery,
2325
HostConnectionReply,
@@ -41,33 +43,33 @@ namespace mackieControl {
4143
/**
4244
* Check if the message is valid.
4345
*/
44-
constexpr bool isValidSysExMessage(SysExMessage mes);
46+
constexpr bool MACKIE_API isValidSysExMessage(SysExMessage mes);
4547
/**
4648
* Check if the message is valid.
4749
*/
48-
constexpr bool isValidSysExMessage(int mes);
50+
constexpr bool MACKIE_API isValidSysExMessage(int mes);
4951

5052
/**
5153
* Mackie Control messages via MIDI note message velocity data.
5254
*/
53-
enum class VelocityMessage : uint8_t {
55+
enum class MACKIE_API VelocityMessage : uint8_t {
5456
Off = 0,
5557
Flashing,
5658
On = 127
5759
};
5860
/**
5961
* Check if the message is valid.
6062
*/
61-
constexpr bool isValidVelocityMessage(VelocityMessage mes);
63+
constexpr bool MACKIE_API isValidVelocityMessage(VelocityMessage mes);
6264
/**
6365
* Check if the message is valid.
6466
*/
65-
constexpr bool isValidVelocityMessage(int mes);
67+
constexpr bool MACKIE_API isValidVelocityMessage(int mes);
6668

6769
/**
6870
* Mackie Control messages via MIDI note message note number data.
6971
*/
70-
enum class NoteMessage {
72+
enum class MACKIE_API NoteMessage {
7173
RECRDYCh1, RECRDYCh2, RECRDYCh3, RECRDYCh4, RECRDYCh5, RECRDYCh6, RECRDYCh7, RECRDYCh8,
7274
SOLOCh1, SOLOCh2, SOLOCh3, SOLOCh4, SOLOCh5, SOLOCh6, SOLOCh7, SOLOCh8,
7375
MUTECh1, MUTECh2, MUTECh3, MUTECh4, MUTECh5, MUTECh6, MUTECh7, MUTECh8,
@@ -109,16 +111,16 @@ namespace mackieControl {
109111
/**
110112
* Check if the message is valid.
111113
*/
112-
constexpr bool isValidNoteMessage(NoteMessage mes);
114+
constexpr bool MACKIE_API isValidNoteMessage(NoteMessage mes);
113115
/**
114116
* Check if the message is valid.
115117
*/
116-
constexpr bool isValidNoteMessage(int mes);
118+
constexpr bool MACKIE_API isValidNoteMessage(int mes);
117119

118120
/**
119121
* Mackie Control messages via MIDI controller message controller number data.
120122
*/
121-
enum class CCMessage {
123+
enum class MACKIE_API CCMessage {
122124
VPot1 = 16, VPot2, VPot3, VPot4, VPot5, VPot6, VPot7, VPot8,
123125
ExternalController = 46,
124126
VPotLEDRing1 = 48, VPotLEDRing2, VPotLEDRing3, VPotLEDRing4,
@@ -132,23 +134,23 @@ namespace mackieControl {
132134
/**
133135
* Check if the message is valid.
134136
*/
135-
constexpr bool isValidCCMessage(CCMessage mes);
137+
constexpr bool MACKIE_API isValidCCMessage(CCMessage mes);
136138
/**
137139
* Check if the message is valid.
138140
*/
139-
constexpr bool isValidCCMessage(int mes);
141+
constexpr bool MACKIE_API isValidCCMessage(int mes);
140142

141143
/**
142144
* Rotation direction of wheel messages.
143145
*/
144-
enum class WheelType {
146+
enum class MACKIE_API WheelType {
145147
CW, CCW
146148
};
147149

148150
/**
149151
* LED ring mode of V-Pot on Mackie Control devices.
150152
*/
151-
enum class VPotLEDRingMode {
153+
enum class MACKIE_API VPotLEDRingMode {
152154
SingleDotMode,
153155
BoostCutMode,
154156
WrapMode,
@@ -158,7 +160,7 @@ namespace mackieControl {
158160
/**
159161
* Mackie Control Message class.
160162
*/
161-
class Message final {
163+
class MACKIE_API Message final {
162164
public:
163165
/**
164166
* Create an empty Mackie Control message. An empty message is an invalid Mackie Control message.

src/Macros.h

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#pragma once
2+
3+
#if defined (__clang__)
4+
#define MACKIE_CLANG 1
5+
6+
#elif defined (__GNUC__)
7+
#define MACKIE_GCC 1
8+
9+
#elif defined (_MSC_VER)
10+
#define MACKIE_MSVC 1
11+
12+
#else
13+
#error Unknown cpp compiler
14+
#endif
15+
16+
#if MACKIE_MSVC
17+
#define MACKIE_EXPORT __declspec(dllexport)
18+
#define MACKIE_IMPORT __declspec(dllimport)
19+
#define MACKIE_CALL _cdecl
20+
#endif
21+
22+
#if MACKIE_CLANG
23+
#define MACKIE_EXPORT __attribute__((visibility("default")))
24+
#define MACKIE_IMPORT __attribute__((visibility("default")))
25+
#define MACKIE_CALL
26+
#endif
27+
28+
#if MACKIE_GCC
29+
#define MACKIE_EXPORT __attribute__((visibility("default")))
30+
#define MACKIE_IMPORT __attribute__((visibility("default")))
31+
#define MACKIE_CALL
32+
#endif
33+
34+
#if !(MACKIE_MSVC || MACKIE_CLANG || MACKIE_GCC)
35+
#define MACKIE_EXPORT
36+
#define MACKIE_IMPORT
37+
#define MACKIE_CALL
38+
#endif
39+
40+
#if MACKIE_DLL_BUILD
41+
#define MACKIE_API MACKIE_EXPORT
42+
#elif MACKIE_DLL
43+
#define MACKIE_API MACKIE_IMPORT
44+
#else
45+
#define MACKIE_API
46+
#endif // MACKIE_DLL_BUILD

0 commit comments

Comments
 (0)