From b2b5116d8c3451f4f5699e328b46beea6c994d21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Gl=C3=B6ckner?= Date: Fri, 22 Jan 2016 12:55:09 +0100 Subject: improved engine factory structure --- drumgizmo/enginefactory.h | 54 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 7 deletions(-) (limited to 'drumgizmo/enginefactory.h') diff --git a/drumgizmo/enginefactory.h b/drumgizmo/enginefactory.h index 93ce67b..c599040 100644 --- a/drumgizmo/enginefactory.h +++ b/drumgizmo/enginefactory.h @@ -25,18 +25,58 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #pragma once +#include +#include #include #include "cpp11fix.h" // required for c++11 #include "audioinputengine.h" #include "audiooutputengine.h" -// todo: ifdef jack enabled -#include "jackclient.h" +#if defined(HAVE_INPUT_JACKMIDI) || defined(HAVE_OUTPUT_JACKAUDIO) + #define USE_JACK + #include "jackclient.h" +#endif -using JackClientPtr = std::unique_ptr; -using InputEnginePtr = std::unique_ptr; -using OutputEnginePtr = std::unique_ptr; +#ifdef HAVE_INPUT_DUMMY + #include "input/inputdummy.h" +#endif -InputEnginePtr createInputEngine(JackClientPtr& jack, std::string const & name); -OutputEnginePtr createOutputEngine(JackClientPtr& jack, std::string const & name); +#ifdef HAVE_INPUT_MIDIFILE + #include "input/midifile.h" +#endif + +#ifdef HAVE_OUTPUT_DUMMY + #include "output/outputdummy.h" +#endif + +#ifdef HAVE_OUTPUT_WAVFILE + #include "output/wavfile.h" +#endif + +#ifdef HAVE_OUTPUT_ALSA + #include "output/alsa.h" +#endif + +#ifdef HAVE_OUTPUT_JACKAUDIO + #include "output/jackaudio.h" +#endif + +class EngineFactory { + private: + std::list input, output; // available engines +#ifdef USE_JACK + std::unique_ptr jack; + + void prepareJack(); +#endif + + public: + EngineFactory(); + + std::list const & getInputEngines() const; + std::list const & getOutputEngines() const; + + std::unique_ptr createInput(std::string const & name); + std::unique_ptr createOutput(std::string const & name); +}; -- cgit v1.2.3