Mercurial > minori
comparison dep/toml11/toml/storage.hpp @ 318:3b355fa948c7
config: use TOML instead of INI
unfortunately, INI is not enough, and causes some paths including
semicolons to break with our current storage of the library folders.
so, I decided to switch to TOML which does support real arrays...
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Wed, 12 Jun 2024 05:25:41 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
317:b1f4d1867ab1 | 318:3b355fa948c7 |
---|---|
1 // Copyright Toru Niina 2017. | |
2 // Distributed under the MIT License. | |
3 #ifndef TOML11_STORAGE_HPP | |
4 #define TOML11_STORAGE_HPP | |
5 #include "utility.hpp" | |
6 | |
7 namespace toml | |
8 { | |
9 namespace detail | |
10 { | |
11 | |
12 // this contains pointer and deep-copy the content if copied. | |
13 // to avoid recursive pointer. | |
14 template<typename T> | |
15 struct storage | |
16 { | |
17 using value_type = T; | |
18 | |
19 explicit storage(value_type const& v): ptr(toml::make_unique<T>(v)) {} | |
20 explicit storage(value_type&& v): ptr(toml::make_unique<T>(std::move(v))) {} | |
21 ~storage() = default; | |
22 storage(const storage& rhs): ptr(toml::make_unique<T>(*rhs.ptr)) {} | |
23 storage& operator=(const storage& rhs) | |
24 { | |
25 this->ptr = toml::make_unique<T>(*rhs.ptr); | |
26 return *this; | |
27 } | |
28 storage(storage&&) = default; | |
29 storage& operator=(storage&&) = default; | |
30 | |
31 bool is_ok() const noexcept {return static_cast<bool>(ptr);} | |
32 | |
33 value_type& value() & noexcept {return *ptr;} | |
34 value_type const& value() const& noexcept {return *ptr;} | |
35 value_type&& value() && noexcept {return std::move(*ptr);} | |
36 | |
37 private: | |
38 std::unique_ptr<value_type> ptr; | |
39 }; | |
40 | |
41 } // detail | |
42 } // toml | |
43 #endif// TOML11_STORAGE_HPP |