X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fconfiguration.h;h=14a43e160c947c0f694a9c3ccd3b7c74c1ba4ad6;hb=43f7813b248686bfa89600f91dccd83017dfe669;hp=31cb74ab3343294f2e4fb41581ccd68aa7a6c4a1;hpb=99904735e066804358f1d0bd138a84f1e9ecda91;p=ardour.git diff --git a/libs/ardour/ardour/configuration.h b/libs/ardour/ardour/configuration.h index 31cb74ab33..14a43e160c 100644 --- a/libs/ardour/ardour/configuration.h +++ b/libs/ardour/ardour/configuration.h @@ -1,5 +1,5 @@ /* - Copyright (C) 1999 Paul Davis + Copyright (C) 2009 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,92 +20,30 @@ #ifndef __ardour_configuration_h__ #define __ardour_configuration_h__ -#include -#include - -#include -#include - -#include - -#include -#include -#include +#include +#include "pbd/signals.h" +#include "pbd/stateful.h" +#include "ardour/configuration_variable.h" class XMLNode; namespace ARDOUR { -class Configuration : public Stateful +class Configuration : public PBD::Stateful { public: Configuration(); virtual ~Configuration(); - struct MidiPortDescriptor { - std::string tag; - std::string device; - std::string type; - std::string mode; - - MidiPortDescriptor (const XMLNode&); - XMLNode& get_state(); - }; - - std::map midi_ports; - - void map_parameters (sigc::slot theSlot); - - int load_state (); - int save_state (); - - int set_state (const XMLNode&); - XMLNode& get_state (void); - XMLNode& get_variables (sigc::slot); - void set_variables (const XMLNode&, ConfigVariableBase::Owner owner); - - void set_current_owner (ConfigVariableBase::Owner); + virtual void map_parameters (boost::function&) = 0; + virtual int set_state (XMLNode const &, int) = 0; + virtual XMLNode & get_state () = 0; + virtual XMLNode & get_variables () = 0; + virtual void set_variables (XMLNode const &) = 0; - XMLNode* control_protocol_state () { return _control_protocol_state; } - - sigc::signal ParameterChanged; - - /* define accessor methods */ - -#undef CONFIG_VARIABLE -#undef CONFIG_VARIABLE_SPECIAL -#define CONFIG_VARIABLE(Type,var,name,value) \ - Type get_##var () const { return var.get(); } \ - bool set_##var (Type val) { bool ret = var.set (val, current_owner); if (ret) { ParameterChanged (name); } return ret; } -#define CONFIG_VARIABLE_SPECIAL(Type,var,name,value,mutator) \ - Type get_##var () const { return var.get(); } \ - bool set_##var (Type val) { bool ret = var.set (val, current_owner); if (ret) { ParameterChanged (name); } return ret; } -#include "ardour/configuration_vars.h" -#undef CONFIG_VARIABLE -#undef CONFIG_VARIABLE_SPECIAL - - private: - - /* declare variables */ - -#undef CONFIG_VARIABLE -#undef CONFIG_VARIABLE_SPECIAL -#define CONFIG_VARIABLE(Type,var,name,value) ConfigVariable var; -#define CONFIG_VARIABLE_SPECIAL(Type,var,name,value,mutator) ConfigVariableWithMutation var; -#include "ardour/configuration_vars.h" -#undef CONFIG_VARIABLE -#undef CONFIG_VARIABLE_SPECIAL - - ConfigVariableBase::Owner current_owner; - XMLNode* _control_protocol_state; - - XMLNode& state (sigc::slot); - bool save_config_options_predicate (ConfigVariableBase::Owner owner); + PBD::Signal1 ParameterChanged; }; -extern Configuration *Config; -extern gain_t speed_quietning; /* see comment in configuration.cc */ - } // namespace ARDOUR #endif /* __ardour_configuration_h__ */