annotate foosdk/sdk/foobar2000/helpers/advconfig_runtime.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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 // Alternate advconfig var implementations that discard their state across app restarts - use for debug options that should not stick
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 template<bool p_is_radio = false, uint32_t prefFlags = 0>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 class advconfig_entry_checkbox_runtime_impl : public advconfig_entry_checkbox_v2 {
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 advconfig_entry_checkbox_runtime_impl(const char * p_name,const GUID & p_guid,const GUID & p_parent,double p_priority,bool p_initialstate)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 : m_name(p_name), m_initialstate(p_initialstate), m_state(p_initialstate), m_parent(p_parent), m_priority(p_priority), m_guid(p_guid) {}
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 void get_name(pfc::string_base & p_out) {p_out = m_name;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 GUID get_guid() {return m_guid;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 GUID get_parent() {return m_parent;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 void reset() {m_state = m_initialstate;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 bool get_state() {return m_state;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 void set_state(bool p_state) {m_state = p_state;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 bool is_radio() {return p_is_radio;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 double get_sort_priority() {return m_priority;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 bool get_state_() const {return m_state;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 bool get_default_state() {return m_initialstate;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 bool get_default_state_() const {return m_initialstate;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 t_uint32 get_preferences_flags() {return prefFlags;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 pfc::string8 m_name;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 const bool m_initialstate;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 bool m_state;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 const GUID m_parent;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 const GUID m_guid;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 const double m_priority;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 template<bool p_is_radio, uint32_t prefFlags = 0>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 class advconfig_checkbox_factory_runtime_t : public service_factory_single_t<advconfig_entry_checkbox_runtime_impl<p_is_radio, prefFlags> > {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 advconfig_checkbox_factory_runtime_t(const char * p_name,const GUID & p_guid,const GUID & p_parent,double p_priority,bool p_initialstate)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 : service_factory_single_t<advconfig_entry_checkbox_runtime_impl<p_is_radio, prefFlags> >(p_name,p_guid,p_parent,p_priority,p_initialstate) {}
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 bool get() const {return this->get_static_instance().get_state_();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 void set(bool val) {this->get_static_instance().set_state(val);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 operator bool() const {return get();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 bool operator=(bool val) {set(val); return val;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 typedef advconfig_checkbox_factory_runtime_t<false> advconfig_checkbox_factory_runtime;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 typedef advconfig_checkbox_factory_runtime_t<true> advconfig_radio_factory_runtime;