annotate foosdk/sdk/foobar2000/SDK/component.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 #include "foobar2000.h"
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 // This is a helper class that gets reliably static-instantiated in all components so any special code that must be executed on startup can be shoved into its constructor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 class foobar2000_component_globals {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 foobar2000_component_globals() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 #if defined(_MSC_VER) && !defined(_DEBUG) && !defined(_DLL)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 // only with MSVC, non release build, static runtime
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 ::OverrideCrtAbort();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 #endif
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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 class NOVTABLE foobar2000_client
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 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 typedef service_factory_base* pservice_factory_base;
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 enum {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 FOOBAR2000_CLIENT_VERSION_COMPATIBLE = FOOBAR2000_TARGET_VERSION_COMPATIBLE,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 FOOBAR2000_CLIENT_VERSION = FOOBAR2000_TARGET_VERSION,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 virtual t_uint32 get_version() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 virtual pservice_factory_base get_service_list() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 virtual void get_config(stream_writer * p_stream,abort_callback & p_abort) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 virtual void set_config(stream_reader * p_stream,abort_callback & p_abort) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 virtual void set_library_path(const char * path,const char * name) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 virtual void services_init(bool val) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 virtual bool is_debug() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 protected:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 foobar2000_client() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 ~foobar2000_client() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 };
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 class NOVTABLE foobar2000_api {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 virtual service_class_ref service_enum_find_class(const GUID & p_guid) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 virtual bool service_enum_create(service_ptr_t<service_base> & p_out,service_class_ref p_class,t_size p_index) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 virtual t_size service_enum_get_count(service_class_ref p_class) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 virtual fb2k::hwnd_t get_main_window()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 virtual bool assert_main_thread()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 virtual bool is_main_thread()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 virtual bool is_shutting_down()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 virtual const char * get_profile_path()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 virtual bool is_initializing() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 //New in 0.9.6
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 virtual bool is_portable_mode_enabled() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 virtual bool is_quiet_mode_enabled() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 protected:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 foobar2000_api() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 ~foobar2000_api() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 };
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 extern foobar2000_api * g_foobar2000_api;