neoGFX
Cross-platform C++ app/game engine
Loading...
Searching...
No Matches
resource.hpp
Go to the documentation of this file.
1// resource.hpp
2/*
3 neogfx C++ App/Game Engine
4 Copyright (c) 2015, 2020 Leigh Johnston. All Rights Reserved.
5
6 This program is free software: you can redistribute it and / or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#pragma once
21
22#include <neogfx/neogfx.hpp>
23#include <optional>
24#include <neogfx/core/event.hpp>
27
28namespace neogfx
29{
30 class resource : public reference_counted<i_resource>
31 {
32 public:
33 define_declared_event(Downloaded, downloaded)
34 define_declared_event(FailedToDownload, failed_to_download)
35 public:
38 public:
39 resource() = delete;
40 resource(i_resource_manager& aManager, std::string const& aUri);
41 resource(i_resource_manager& aManager, std::string const& aUri, const void* aData, std::size_t aSize);
43 public:
44 bool available() const override;
45 bool downloading() const override;
46 double downloading_progress() const override;
47 bool error() const override;
48 i_string const& error_string() const override;
49 public:
50 i_string const& uri() const override;
51 bool is_empty() const override;
52 const void* cdata() const override;
53 const void* data() const override;
54 void* data() override;
55 std::size_t size() const override;
56 hash_digest_type const& hash() const override;
57 private:
58 i_resource_manager& iManager;
59 string iUri;
60 std::optional<string> iError;
61 std::size_t iSize;
62 data_type iData;
63 mutable std::optional<data_type> iHash;
64 };
65}
bool is_empty() const override
i_string const & error_string() const override
const void * data() const override
resource(i_resource_manager &aManager, std::string const &aUri, const void *aData, std::size_t aSize)
void * data() override
neolib::vector< uint8_t > data_type
Definition resource.hpp:36
double downloading_progress() const override
const void * cdata() const override
i_string const & uri() const override
bool downloading() const override
resource(i_resource_manager &aManager, std::string const &aUri)
bool available() const override
define_declared_event(Downloaded, downloaded) define_declared_event(FailedToDownload
bool error() const override
data_type hash_digest_type
Definition resource.hpp:37
std::size_t size() const override
hash_digest_type const & hash() const override
#define define_declared_event(name, declName,...)
Definition event.hpp:195