Skip to content

Commit

Permalink
Add symbols export
Browse files Browse the repository at this point in the history
  • Loading branch information
FangCunWuChang committed Jan 2, 2024
1 parent 178d1f2 commit e701b07
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 18 deletions.
38 changes: 20 additions & 18 deletions src/MackieControl.h
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
/*****************************************************************//**
/*****************************************************************//**
* \file MackieControl.h
* \brief A compact Mackie Control library on JUCE.
*
* \author WuChang
* \email [email protected]
* \date July 2023
* \version 1.0.2
* \date Jan 2024
* \version 1.0.3
* \license MIT License
*********************************************************************/

#pragma once

#include <JuceHeader.h>

#include "Macros.h"

namespace mackieControl {
/**
* Mackie Control messages via MIDI system exclusive message.
*/
enum class SysExMessage : uint8_t {
enum class MACKIE_API SysExMessage : uint8_t {
DeviceQuery = 0,
HostConnectionQuery,
HostConnectionReply,
Expand All @@ -41,33 +43,33 @@ namespace mackieControl {
/**
* Check if the message is valid.
*/
constexpr bool isValidSysExMessage(SysExMessage mes);
constexpr bool MACKIE_API isValidSysExMessage(SysExMessage mes);
/**
* Check if the message is valid.
*/
constexpr bool isValidSysExMessage(int mes);
constexpr bool MACKIE_API isValidSysExMessage(int mes);

/**
* Mackie Control messages via MIDI note message velocity data.
*/
enum class VelocityMessage : uint8_t {
enum class MACKIE_API VelocityMessage : uint8_t {
Off = 0,
Flashing,
On = 127
};
/**
* Check if the message is valid.
*/
constexpr bool isValidVelocityMessage(VelocityMessage mes);
constexpr bool MACKIE_API isValidVelocityMessage(VelocityMessage mes);
/**
* Check if the message is valid.
*/
constexpr bool isValidVelocityMessage(int mes);
constexpr bool MACKIE_API isValidVelocityMessage(int mes);

/**
* Mackie Control messages via MIDI note message note number data.
*/
enum class NoteMessage {
enum class MACKIE_API NoteMessage {
RECRDYCh1, RECRDYCh2, RECRDYCh3, RECRDYCh4, RECRDYCh5, RECRDYCh6, RECRDYCh7, RECRDYCh8,
SOLOCh1, SOLOCh2, SOLOCh3, SOLOCh4, SOLOCh5, SOLOCh6, SOLOCh7, SOLOCh8,
MUTECh1, MUTECh2, MUTECh3, MUTECh4, MUTECh5, MUTECh6, MUTECh7, MUTECh8,
Expand Down Expand Up @@ -109,16 +111,16 @@ namespace mackieControl {
/**
* Check if the message is valid.
*/
constexpr bool isValidNoteMessage(NoteMessage mes);
constexpr bool MACKIE_API isValidNoteMessage(NoteMessage mes);
/**
* Check if the message is valid.
*/
constexpr bool isValidNoteMessage(int mes);
constexpr bool MACKIE_API isValidNoteMessage(int mes);

/**
* Mackie Control messages via MIDI controller message controller number data.
*/
enum class CCMessage {
enum class MACKIE_API CCMessage {
VPot1 = 16, VPot2, VPot3, VPot4, VPot5, VPot6, VPot7, VPot8,
ExternalController = 46,
VPotLEDRing1 = 48, VPotLEDRing2, VPotLEDRing3, VPotLEDRing4,
Expand All @@ -132,23 +134,23 @@ namespace mackieControl {
/**
* Check if the message is valid.
*/
constexpr bool isValidCCMessage(CCMessage mes);
constexpr bool MACKIE_API isValidCCMessage(CCMessage mes);
/**
* Check if the message is valid.
*/
constexpr bool isValidCCMessage(int mes);
constexpr bool MACKIE_API isValidCCMessage(int mes);

/**
* Rotation direction of wheel messages.
*/
enum class WheelType {
enum class MACKIE_API WheelType {
CW, CCW
};

/**
* LED ring mode of V-Pot on Mackie Control devices.
*/
enum class VPotLEDRingMode {
enum class MACKIE_API VPotLEDRingMode {
SingleDotMode,
BoostCutMode,
WrapMode,
Expand All @@ -158,7 +160,7 @@ namespace mackieControl {
/**
* Mackie Control Message class.
*/
class Message final {
class MACKIE_API Message final {
public:
/**
* Create an empty Mackie Control message. An empty message is an invalid Mackie Control message.
Expand Down
46 changes: 46 additions & 0 deletions src/Macros.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#pragma once

#if defined (__clang__)
#define MACKIE_CLANG 1

#elif defined (__GNUC__)
#define MACKIE_GCC 1

#elif defined (_MSC_VER)
#define MACKIE_MSVC 1

#else
#error Unknown cpp compiler
#endif

#if MACKIE_MSVC
#define MACKIE_EXPORT __declspec(dllexport)
#define MACKIE_IMPORT __declspec(dllimport)
#define MACKIE_CALL _cdecl
#endif

#if MACKIE_CLANG
#define MACKIE_EXPORT __attribute__((visibility("default")))
#define MACKIE_IMPORT __attribute__((visibility("default")))
#define MACKIE_CALL
#endif

#if MACKIE_GCC
#define MACKIE_EXPORT __attribute__((visibility("default")))
#define MACKIE_IMPORT __attribute__((visibility("default")))
#define MACKIE_CALL
#endif

#if !(MACKIE_MSVC || MACKIE_CLANG || MACKIE_GCC)
#define MACKIE_EXPORT
#define MACKIE_IMPORT
#define MACKIE_CALL
#endif

#if MACKIE_DLL_BUILD
#define MACKIE_API MACKIE_EXPORT
#elif MACKIE_DLL
#define MACKIE_API MACKIE_IMPORT
#else
#define MACKIE_API
#endif // MACKIE_DLL_BUILD

0 comments on commit e701b07

Please sign in to comment.