Mercurial > foo_out_sdl
comparison foosdk/sdk/foobar2000/helpers/cfg_dsp_chain_config.h @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 0:e9bb126753e7 | 1:20d02a178406 |
|---|---|
| 1 #pragma once | |
| 2 #include <SDK/cfg_var.h> | |
| 3 #include <SDK/dsp.h> | |
| 4 | |
| 5 #if FOOBAR2020 | |
| 6 class cfg_dsp_chain_config : public cfg_blob { | |
| 7 public: | |
| 8 void reset() { | |
| 9 cfg_blob::set(nullptr); | |
| 10 } | |
| 11 cfg_dsp_chain_config(const GUID& p_guid) : cfg_blob(p_guid) {} | |
| 12 | |
| 13 void get_data(dsp_chain_config& p_data) { | |
| 14 p_data.from_blob(cfg_blob::get()); | |
| 15 } | |
| 16 void set_data(const dsp_chain_config& p_data) { | |
| 17 cfg_blob::set(p_data.to_blob()); | |
| 18 } | |
| 19 }; | |
| 20 | |
| 21 typedef cfg_dsp_chain_config cfg_dsp_chain_config_mt; | |
| 22 #else | |
| 23 class cfg_dsp_chain_config : public cfg_var { | |
| 24 protected: | |
| 25 void get_data_raw(stream_writer * p_stream,abort_callback & p_abort) {m_data.contents_to_stream(p_stream,p_abort);} | |
| 26 void set_data_raw(stream_reader * p_stream,t_size p_sizehint,abort_callback & p_abort) {m_data.contents_from_stream(p_stream,p_abort);} | |
| 27 public: | |
| 28 void reset() { m_data.remove_all(); } | |
| 29 inline cfg_dsp_chain_config(const GUID & p_guid) : cfg_var(p_guid) {} | |
| 30 t_size get_count() const {return m_data.get_count();} | |
| 31 const dsp_preset & get_item(t_size p_index) const {return m_data.get_item(p_index);} | |
| 32 void get_data(dsp_chain_config & p_data) const {p_data.copy(m_data);} | |
| 33 void set_data(const dsp_chain_config & p_data) {m_data.copy(p_data);} | |
| 34 dsp_chain_config_impl & _data() {return m_data; } | |
| 35 private: | |
| 36 dsp_chain_config_impl m_data; | |
| 37 }; | |
| 38 | |
| 39 class cfg_dsp_chain_config_mt : private cfg_var { | |
| 40 public: | |
| 41 cfg_dsp_chain_config_mt( const GUID & id ) : cfg_var(id) {} | |
| 42 void reset() { dsp_chain_config_impl dummy; set_data(dummy); } | |
| 43 void get_data(dsp_chain_config & p_data) { inReadSync( m_sync ); p_data.copy(m_data); } | |
| 44 template<typename arg_t> | |
| 45 void set_data(arg_t && p_data) { inWriteSync( m_sync ); m_data = std::forward<arg_t>(p_data);} | |
| 46 protected: | |
| 47 void get_data_raw(stream_writer* p_stream, abort_callback& p_abort) { | |
| 48 dsp_chain_config_impl temp; | |
| 49 get_data( temp ); | |
| 50 temp.contents_to_stream( p_stream, p_abort ); | |
| 51 } | |
| 52 void set_data_raw(stream_reader* p_stream, t_size p_sizehint, abort_callback& p_abort) { | |
| 53 dsp_chain_config_impl temp; temp.contents_from_stream( p_stream, p_abort ); | |
| 54 set_data( temp ); | |
| 55 } | |
| 56 private: | |
| 57 pfc::readWriteLock m_sync; | |
| 58 dsp_chain_config_impl m_data; | |
| 59 }; | |
| 60 #endif |
