1234567891011121314151617181920212223242526272829303132333435363738 |
- /*
- * Copyright (c) 2023, Andrew Kaster <akaster@serenityos.org>
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
- #pragma once
- #include <AK/RefPtr.h>
- #include <AK/StringView.h>
- #include <LibCore/Resource.h>
- namespace Core {
- class ResourceImplementation {
- public:
- ErrorOr<NonnullRefPtr<Resource>> load_from_uri(StringView);
- Vector<String> child_names(Resource const&);
- String filesystem_path(Resource const&);
- virtual ~ResourceImplementation() = default;
- static void install(OwnPtr<ResourceImplementation>);
- static ResourceImplementation& the();
- protected:
- virtual ErrorOr<NonnullRefPtr<Resource>> load_from_resource_scheme_uri(StringView) = 0;
- virtual Vector<String> child_names_for_resource_scheme(Resource const&) = 0;
- virtual String filesystem_path_for_resource_scheme(String const&) = 0;
- static bool is_directory(StringView filesystem_path);
- static NonnullRefPtr<Resource> make_resource(String full_path, NonnullOwnPtr<Core::MappedFile>);
- static NonnullRefPtr<Resource> make_resource(String full_path, ByteBuffer);
- static NonnullRefPtr<Resource> make_directory_resource(String full_path);
- };
- }
|