DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

DistrhoPluginStub.cpp (3229B)


      1 /*
      2  * DISTRHO Plugin Framework (DPF)
      3  * Copyright (C) 2012-2022 Filipe Coelho <falktx@falktx.com>
      4  *
      5  * Permission to use, copy, modify, and/or distribute this software for any purpose with
      6  * or without fee is hereby granted, provided that the above copyright notice and this
      7  * permission notice appear in all copies.
      8  *
      9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
     10  * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
     11  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
     12  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
     13  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
     14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     15  */
     16 
     17 #include "DistrhoPluginInternal.hpp"
     18 
     19 START_NAMESPACE_DISTRHO
     20 
     21 // --------------------------------------------------------------------------------------------------------------------
     22 
     23 #if ! DISTRHO_PLUGIN_WANT_MIDI_OUTPUT
     24 static constexpr const writeMidiFunc writeMidiCallback = nullptr;
     25 #endif
     26 #if ! DISTRHO_PLUGIN_WANT_PARAMETER_VALUE_CHANGE_REQUEST
     27 static constexpr const requestParameterValueChangeFunc requestParameterValueChangeCallback = nullptr;
     28 #endif
     29 #if ! DISTRHO_PLUGIN_WANT_STATE
     30 static const updateStateValueFunc updateStateValueCallback = nullptr;
     31 #endif
     32 
     33 // --------------------------------------------------------------------------------------------------------------------
     34 
     35 /**
     36  * Stub plugin class, does nothing but serving as example code for other implementations.
     37  */
     38 class PluginStub
     39 {
     40 public:
     41     PluginStub()
     42         : fPlugin(this,
     43                   writeMidiCallback,
     44                   requestParameterValueChangeCallback,
     45                   updateStateValueCallback)
     46     {
     47     }
     48 
     49     // ----------------------------------------------------------------------------------------------------------------
     50 
     51 private:
     52     // Plugin
     53     PluginExporter fPlugin;
     54 
     55     // ----------------------------------------------------------------------------------------------------------------
     56     // DPF callbacks
     57 
     58    #if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT
     59     bool writeMidi(const MidiEvent&)
     60     {
     61         return true;
     62     }
     63 
     64     static bool writeMidiCallback(void* const ptr, const MidiEvent& midiEvent)
     65     {
     66         return ((PluginStub*)ptr)->writeMidi(midiEvent);
     67     }
     68    #endif
     69 
     70    #if DISTRHO_PLUGIN_WANT_PARAMETER_VALUE_CHANGE_REQUEST
     71     bool requestParameterValueChange(uint32_t, float)
     72     {
     73         return true;
     74     }
     75 
     76     static bool requestParameterValueChangeCallback(void* const ptr, const uint32_t index, const float value)
     77     {
     78         return ((PluginStub*)ptr)->requestParameterValueChange(index, value);
     79     }
     80    #endif
     81 
     82    #if DISTRHO_PLUGIN_WANT_STATE
     83     bool updateState(const char*, const char*)
     84     {
     85         return true;
     86     }
     87 
     88     static bool updateStateValueCallback(void* const ptr, const char* const key, const char* const value)
     89     {
     90         return ((PluginStub*)ptr)->updateState(key, value);
     91     }
     92    #endif
     93 };
     94 
     95 END_NAMESPACE_DISTRHO
     96 
     97 // --------------------------------------------------------------------------------------------------------------------