annotate foosdk/sdk/foobar2000/SDK/link_resolver.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 //! Interface for resolving different sorts of link files.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 //! Utilized by mechanisms that convert filesystem path into list of playable locations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 //! For security reasons, link may only point to playable object path, not to a playlist or another link.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 class NOVTABLE link_resolver : public service_base
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 public:
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 //! Tests whether specified file is supported by this link_resolver service.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 //! @param p_path Path of file being queried.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 //! @param p_extension Extension of file being queried. This is provided for performance reasons, path already includes it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 virtual bool is_our_path(const char * p_path,const char * p_extension) = 0;
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 //! Resolves a link file. Before this is called, path must be accepted by is_our_path().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 //! @param p_filehint Optional file interface to use. If null/empty, implementation should open file by itself.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 //! @param p_path Path of link file to resolve.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 //! @param p_out Receives path the link is pointing to.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 //! @param p_abort abort_callback object signaling user aborting the operation.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 virtual void resolve(service_ptr_t<file> p_filehint,const char * p_path,pfc::string_base & p_out,abort_callback & p_abort) = 0;
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 //! Helper function; finds link_resolver interface that supports specified link file.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 //! @param p_out Receives link_resolver interface on success.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 //! @param p_path Path of file to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 //! @returns True on success, false on failure (no interface that supports specified path could be found).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 static bool g_find(service_ptr_t<link_resolver> & p_out,const char * p_path);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(link_resolver);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 };