The JUCE cross-platform C++ framework, with DISTRHO/KXStudio specific changes
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
2.0KB

  1. /*
  2. ==============================================================================
  3. This file is part of the JUCE 6 technical preview.
  4. Copyright (c) 2020 - Raw Material Software Limited
  5. You may use this code under the terms of the GPL v3
  6. (see www.gnu.org/licenses).
  7. For this technical preview, this file is not subject to commercial licensing.
  8. JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
  9. EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
  10. DISCLAIMED.
  11. ==============================================================================
  12. */
  13. #pragma once
  14. extern "C"
  15. {
  16. typedef void* LiveCodeBuilder;
  17. typedef bool (*SendMessageFunction) (void* userInfo, const void* data, size_t dataSize);
  18. typedef void (*CrashCallbackFunction) (const char* crashDescription);
  19. typedef void (*QuitCallbackFunction)();
  20. typedef void (*SetPropertyFunction) (const char* key, const char* value);
  21. typedef void (*GetPropertyFunction) (const char* key, char* value, size_t size);
  22. // We've used an X macro to define the DLL functions rather than just declaring them, so that
  23. // we can load the DLL and its functions dynamically and cope with it not being there.
  24. // The CompileEngineDLL class is a wrapper that manages finding/loading the DLL and exposing
  25. // these as callable functions.
  26. #define LIVE_DLL_FUNCTIONS(X) \
  27. X (projucer_getVersion, int, ()) \
  28. X (projucer_initialise, void, (CrashCallbackFunction, QuitCallbackFunction, SetPropertyFunction, GetPropertyFunction, bool setupSignals)) \
  29. X (projucer_shutdown, void, ()) \
  30. X (projucer_createBuilder, LiveCodeBuilder, (SendMessageFunction, void* userInfo, const char* projectID, const char* cacheFolder)) \
  31. X (projucer_sendMessage, void, (LiveCodeBuilder, const void* messageData, size_t messageDataSize)) \
  32. X (projucer_deleteBuilder, void, (LiveCodeBuilder))
  33. }