feat(reflect-cpp): Switched from glaze -> reflect cpp
A bug was discovered in glaze which prevented valid toml output. We have switched to toml++ and reflect-cpp. The interface has remained the same so this should not break any code
This commit is contained in:
51
build-config/reflect-cpp/include/rfl/toml/write.hpp
Normal file
51
build-config/reflect-cpp/include/rfl/toml/write.hpp
Normal file
@@ -0,0 +1,51 @@
|
||||
#ifndef RFL_TOML_WRITE_HPP_
|
||||
#define RFL_TOML_WRITE_HPP_
|
||||
|
||||
#include <ostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <toml++/toml.hpp>
|
||||
#include <type_traits>
|
||||
|
||||
#include "../Processors.hpp"
|
||||
#include "../parsing/Parent.hpp"
|
||||
#include "Parser.hpp"
|
||||
|
||||
namespace rfl::toml {
|
||||
|
||||
/// Writes a TOML into an ostream.
|
||||
template <class... Ps>
|
||||
std::ostream& write(const auto& _obj, std::ostream& _stream) {
|
||||
using T = std::remove_cvref_t<decltype(_obj)>;
|
||||
using ParentType = parsing::Parent<Writer>;
|
||||
::toml::table root;
|
||||
auto w = Writer(&root);
|
||||
using ProcessorsType = Processors<Ps...>;
|
||||
static_assert(!ProcessorsType::no_field_names_,
|
||||
"The NoFieldNames processor is not supported for BSON, XML, "
|
||||
"TOML, or YAML.");
|
||||
Parser<T, ProcessorsType>::write(w, _obj, typename ParentType::Root{});
|
||||
_stream << root;
|
||||
return _stream;
|
||||
}
|
||||
|
||||
/// Returns a TOML string.
|
||||
template <class... Ps>
|
||||
std::string write(const auto& _obj) {
|
||||
using T = std::remove_cvref_t<decltype(_obj)>;
|
||||
using ParentType = parsing::Parent<Writer>;
|
||||
std::stringstream sstream;
|
||||
::toml::table root;
|
||||
auto w = Writer(&root);
|
||||
using ProcessorsType = Processors<Ps...>;
|
||||
static_assert(!ProcessorsType::no_field_names_,
|
||||
"The NoFieldNames processor is not supported for BSON, XML, "
|
||||
"TOML, or YAML.");
|
||||
Parser<T, ProcessorsType>::write(w, _obj, typename ParentType::Root{});
|
||||
sstream << root;
|
||||
return sstream.str();
|
||||
}
|
||||
|
||||
} // namespace rfl::toml
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user