mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 05:47:34 +00:00
LibCore: Add Resource for platform agnostic application resource loading
The first implementation is simply raw files.
This commit is contained in:
parent
f4a89c31c6
commit
0d417cd604
8 changed files with 393 additions and 0 deletions
36
Userland/Libraries/LibCore/ResourceImplementation.h
Normal file
36
Userland/Libraries/LibCore/ResourceImplementation.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* 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&);
|
||||
Optional<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 Optional<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);
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue