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.

111 lines
3.6KB

  1. /*!
  2. @file AudioUnitSDK/AUPlugInDispatch.h
  3. @copyright © 2000-2021 Apple Inc. All rights reserved.
  4. */
  5. #ifndef AudioUnitSDK_AUPlugInDispatch_h
  6. #define AudioUnitSDK_AUPlugInDispatch_h
  7. #include <AudioUnitSDK/ComponentBase.h>
  8. namespace ausdk {
  9. /// Method lookup for a basic AUBase subclass.
  10. struct AUBaseLookup {
  11. static AudioComponentMethod Lookup(SInt16 selector);
  12. };
  13. /// Factory for a basic AUBase subclass.
  14. template <class Implementor>
  15. class AUBaseFactory : public APFactory<AUBaseLookup, Implementor> {
  16. };
  17. /// Method lookup for a AUBase subclass which implements I/O methods (Start, Stop).
  18. struct AUOutputLookup {
  19. static AudioComponentMethod Lookup(SInt16 selector);
  20. };
  21. /// Factory for an AUBase subclass which implements I/O methods (Start, Stop).
  22. template <class Implementor>
  23. class AUOutputBaseFactory : public APFactory<AUOutputLookup, Implementor> {
  24. };
  25. /// Method lookup for an AUBase subclass which implements I/O methods (Start, Stop) and
  26. /// ComplexRender.
  27. struct AUComplexOutputLookup {
  28. static AudioComponentMethod Lookup(SInt16 selector);
  29. };
  30. /// Factory for an AUBase subclass which implements I/O methods (Start, Stop) and ComplexRender.
  31. template <class Implementor>
  32. class AUOutputComplexBaseFactory : public APFactory<AUComplexOutputLookup, Implementor> {
  33. };
  34. /// Method lookup for an AUBase subclass which implements Process.
  35. struct AUBaseProcessLookup {
  36. static AudioComponentMethod Lookup(SInt16 selector);
  37. };
  38. /// Factory for an AUBase subclass which implements Process.
  39. template <class Implementor>
  40. class AUBaseProcessFactory : public APFactory<AUBaseProcessLookup, Implementor> {
  41. };
  42. /// Method lookup for an AUBase subclass which implements ProcessMultiple.
  43. struct AUBaseProcessMultipleLookup {
  44. static AudioComponentMethod Lookup(SInt16 selector);
  45. };
  46. /// Factory for an AUBase subclass which implements ProcessMultiple.
  47. template <class Implementor>
  48. class AUBaseProcessMultipleFactory : public APFactory<AUBaseProcessMultipleLookup, Implementor> {
  49. };
  50. /// Method lookup for an AUBase subclass which implements Process and ProcessMultiple.
  51. struct AUBaseProcessAndMultipleLookup {
  52. static AudioComponentMethod Lookup(SInt16 selector);
  53. };
  54. /// Factory for an AUBase subclass which implements Process and ProcessMultiple.
  55. template <class Implementor>
  56. class AUBaseProcessAndMultipleFactory
  57. : public APFactory<AUBaseProcessAndMultipleLookup, Implementor> {
  58. };
  59. /// Method lookup for an AUBase subclass which implements MusicDevice methods (MIDIEvent and SysEx).
  60. struct AUMIDILookup {
  61. static AudioComponentMethod Lookup(SInt16 selector);
  62. };
  63. /// Factory for an AUBase subclass which implements MusicDevice methods (MIDIEvent and SysEx).
  64. template <class Implementor>
  65. class AUMIDIEffectFactory : public APFactory<AUMIDILookup, Implementor> {
  66. };
  67. /// Method lookup for an AUBase subclass which implements Process and MusicDevice methods (MIDIEvent
  68. /// and SysEx).
  69. struct AUMIDIProcessLookup {
  70. static AudioComponentMethod Lookup(SInt16 selector);
  71. };
  72. /// Factory for an AUBase subclass which implements Process and MusicDevice methods (MIDIEvent
  73. /// and SysEx).
  74. template <class Implementor>
  75. class AUMIDIProcessFactory : public APFactory<AUMIDIProcessLookup, Implementor> {
  76. };
  77. /// Method lookup for an AUBase subclass which implements the full set of MusicDevice methods
  78. /// (MIDIEvent, SysEx, StartNote, StopNote).
  79. struct AUMusicLookup {
  80. static AudioComponentMethod Lookup(SInt16 selector);
  81. };
  82. /// Factory for an AUBase subclass which implements the full set of MusicDevice methods
  83. /// (MIDIEvent, SysEx, StartNote, StopNote).
  84. template <class Implementor>
  85. class AUMusicDeviceFactory : public APFactory<AUMusicLookup, Implementor> {
  86. };
  87. } // namespace ausdk
  88. #endif // AudioUnitSDK_AUPlugInDispatch_h