IceShard 1
A personal game engine project, with development focused on 2D/2.5D games.
Loading...
Searching...
No Matches
config_builder.hxx
Go to the documentation of this file.
1
3
4#pragma once
5#include <ice/array.hxx>
8
9namespace ice
10{
11
13 {
14 using ConfigBuilderEntry = ice::config::detail::ConfigBuilderEntry;
15
18
21 auto operator=(ConfigBuilderValue&&) noexcept -> ConfigBuilderValue&;
22 auto operator=(ConfigBuilderValue const&) noexcept -> ConfigBuilderValue&;
23
24 auto operator[](ice::String key) noexcept -> ConfigBuilderValue;
25 auto operator[](ice::u32 idx) noexcept -> ConfigBuilderValue;
26
27 template<typename T> requires std::is_trivial_v<T>
28 auto set(T value) noexcept -> T&;
29
30 auto set(ice::String value) noexcept -> ice::HeapVarString<>&;
31 auto set(char const* value) noexcept -> ice::HeapVarString<>& { return set(ice::String{value}); }
32
33 template<typename T> requires std::is_trivial_v<T> || std::is_same_v<T, ice::String>
34 auto operator=(T value) noexcept -> decltype(set(T{}));
35
36 void reset();
37
41 };
42
43 template<typename T> requires std::is_trivial_v<T> || std::is_same_v<T, ice::String>
44 auto ConfigBuilderValue::operator=(T value) noexcept -> decltype(set(T{}))
45 {
46 return this->set(value);
47 }
48
50 {
51 public:
54 ~ConfigBuilder() noexcept;
55
56 auto merge(ice::String json) noexcept -> ice::ErrorCode;
57 auto merge(ice::Config const& config) noexcept -> ice::ErrorCode;
58
59 auto finalize(ice::Allocator& alloc) noexcept -> ice::Memory;
60 };
61
62 namespace config
63 {
64
65 auto from_json(ice::ConfigBuilder& builder, ice::String json) noexcept -> ice::ErrorCode;
66
67 } // namespace config
68
69} // namespace ice
Definition config_builder.hxx:50
auto merge(ice::String json) noexcept -> ice::ErrorCode
ConfigBuilder(ice::Allocator &alloc) noexcept
ConfigBuilder(ice::Allocator &alloc, ice::Config const &config) noexcept
auto finalize(ice::Allocator &alloc) noexcept -> ice::Memory
~ConfigBuilder() noexcept
Definition config_types.hxx:34
Definition config.hxx:9
auto from_json(ice::Allocator &alloc, ice::String json, ice::Memory &out_memory) noexcept -> ice::Config
SPDX-License-Identifier: MIT.
Definition array.hxx:12
ice::BasicString< char > String
Definition string.hxx:82
auto alloc(ice::usize size) noexcept -> ice::AllocResult
std::uint32_t u32
Definition types.hxx:26
ice::AllocatorBase< ice::build::is_debug||ice::build::is_develop > Allocator
Definition mem_types.hxx:25
ice::u32 _idx
Definition config_builder.hxx:40
~ConfigBuilderValue() noexcept
ice::Allocator * _alloc
Definition config_builder.hxx:38
auto set(T value) noexcept -> T &
auto operator=(ConfigBuilderValue &&) noexcept -> ConfigBuilderValue &
ConfigBuilderEntry * _internal
Definition config_builder.hxx:39
ConfigBuilderValue(ice::Allocator *alloc, ConfigBuilderEntry *entry, ice::u32 ref) noexcept
ice::config::detail::ConfigBuilderEntry ConfigBuilderEntry
Definition config_builder.hxx:14
auto set(char const *value) noexcept -> ice::HeapVarString<> &
Definition config_builder.hxx:31
Definition error.hxx:19
Definition heap_varstring.hxx:14
Definition mem_memory.hxx:13