annotate foosdk/sdk/foobar2000/SDK/config_object.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 #ifndef _CONFIG_OBJECT_H_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 #define _CONFIG_OBJECT_H_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 class config_object;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 class NOVTABLE config_object_notify_manager : public service_base
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 virtual void on_changed(const service_ptr_t<config_object> & p_object) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 static void g_on_changed(const service_ptr_t<config_object> & p_object);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11
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 FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(config_object_notify_manager);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 };
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 class NOVTABLE config_object : public service_base
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 //interface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 virtual GUID get_guid() const = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 virtual void get_data(stream_writer * p_stream,abort_callback & p_abort) const = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 virtual void set_data(stream_reader * p_stream,abort_callback & p_abort,bool p_sendnotify = true) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 //helpers
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 static bool g_find(service_ptr_t<config_object> & p_out,const GUID & p_guid);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 void set_data_raw(const void * p_data,t_size p_bytes,bool p_sendnotify = true);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 t_size get_data_raw(void * p_out,t_size p_bytes);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 t_size get_data_raw_length();
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 template<class T> void get_data_struct_t(T& p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 template<class T> void set_data_struct_t(const T& p_in);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 template<class T> static void g_get_data_struct_t(const GUID & p_guid,T & p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 template<class T> static void g_set_data_struct_t(const GUID & p_guid,const T & p_in);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 void set_data_string(const char * p_data,t_size p_length);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 void get_data_string(pfc::string_base & p_out);
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 void get_data_bool(bool & p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 void set_data_bool(bool p_val);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 void get_data_int32(t_int32 & p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 void set_data_int32(t_int32 p_val);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 bool get_data_bool_simple(bool p_default);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 t_int32 get_data_int32_simple(t_int32 p_default);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 static void g_get_data_string(const GUID & p_guid,pfc::string_base & p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 static void g_set_data_string(const GUID & p_guid,const char * p_data,t_size p_length = ~0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 static void g_get_data_bool(const GUID & p_guid,bool & p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 static void g_set_data_bool(const GUID & p_guid,bool p_val);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 static void g_get_data_int32(const GUID & p_guid,t_int32 & p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 static void g_set_data_int32(const GUID & p_guid,t_int32 p_val);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 static bool g_get_data_bool_simple(const GUID & p_guid,bool p_default);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 static t_int32 g_get_data_int32_simple(const GUID & p_guid,t_int32 p_default);
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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(config_object);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 };
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 class standard_config_objects
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 static const GUID bool_remember_window_positions, bool_ui_always_on_top,bool_playlist_stop_after_current;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 static const GUID bool_playback_follows_cursor, bool_cursor_follows_playback;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 static const GUID bool_show_keyboard_shortcuts_in_menus;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 static const GUID string_gui_last_directory_media,string_gui_last_directory_playlists;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 static const GUID int32_dynamic_bitrate_display_rate;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 inline static bool query_show_keyboard_shortcuts_in_menus() {return config_object::g_get_data_bool_simple(standard_config_objects::bool_show_keyboard_shortcuts_in_menus,true);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 inline static bool query_remember_window_positions() {return config_object::g_get_data_bool_simple(standard_config_objects::bool_remember_window_positions,true);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 class config_object_notify : public service_base
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 virtual t_size get_watched_object_count() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 virtual GUID get_watched_object(t_size p_index) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 virtual void on_watched_object_changed(const service_ptr_t<config_object> & p_object) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(config_object_notify);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 #endif // _CONFIG_OBJECT_H_