annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 #include <SDK/cfg_var.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #include <SDK/dsp.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 #if FOOBAR2020
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 class cfg_dsp_chain_config : public cfg_blob {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 void reset() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 cfg_blob::set(nullptr);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 cfg_dsp_chain_config(const GUID& p_guid) : cfg_blob(p_guid) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 void get_data(dsp_chain_config& p_data) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 p_data.from_blob(cfg_blob::get());
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 void set_data(const dsp_chain_config& p_data) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 cfg_blob::set(p_data.to_blob());
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 typedef cfg_dsp_chain_config cfg_dsp_chain_config_mt;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 class cfg_dsp_chain_config : public cfg_var {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 protected:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 void get_data_raw(stream_writer * p_stream,abort_callback & p_abort) {m_data.contents_to_stream(p_stream,p_abort);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
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);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 void reset() { m_data.remove_all(); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 inline cfg_dsp_chain_config(const GUID & p_guid) : cfg_var(p_guid) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 t_size get_count() const {return m_data.get_count();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 const dsp_preset & get_item(t_size p_index) const {return m_data.get_item(p_index);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 void get_data(dsp_chain_config & p_data) const {p_data.copy(m_data);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 void set_data(const dsp_chain_config & p_data) {m_data.copy(p_data);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 dsp_chain_config_impl & _data() {return m_data; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 dsp_chain_config_impl m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 class cfg_dsp_chain_config_mt : private cfg_var {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 cfg_dsp_chain_config_mt( const GUID & id ) : cfg_var(id) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 void reset() { dsp_chain_config_impl dummy; set_data(dummy); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 void get_data(dsp_chain_config & p_data) { inReadSync( m_sync ); p_data.copy(m_data); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 template<typename arg_t>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 void set_data(arg_t && p_data) { inWriteSync( m_sync ); m_data = std::forward<arg_t>(p_data);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 protected:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 void get_data_raw(stream_writer* p_stream, abort_callback& p_abort) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 dsp_chain_config_impl temp;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 get_data( temp );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 temp.contents_to_stream( p_stream, p_abort );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 void set_data_raw(stream_reader* p_stream, t_size p_sizehint, abort_callback& p_abort) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 dsp_chain_config_impl temp; temp.contents_from_stream( p_stream, p_abort );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 set_data( temp );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 pfc::readWriteLock m_sync;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 dsp_chain_config_impl m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 #endif