zengine-old/engine/3rdparty/zlib/include/yaml/yaml.h
2024-07-03 21:59:02 +08:00

31 lines
774 B
C++

#pragma once
#include "serialize/binary.inl"
#include "serialize/text.inl"
#include "meta/result.inl"
namespace YAML
{
using meta::result;
enum class SerializeError : char
{
TEXT_EMPTY,
TYPE_ERROR,
};
inline string Text_Serialize(const Any& any) {
return Dump(TextArchive::Serialize(any));
}
template<typename T>
inline result<T, SerializeError> Text_Unserialize(const string& text) {
if (text.empty()) {
return SerializeError::TEXT_EMPTY;
}
char data[sizeof(T)];
Any any(&data, &TypeInfo<T>::StaticClass);
if (!TextArchive::Unserialize(Load(text), any)) {
return SerializeError::TYPE_ERROR;
}
return *any.CastTo<T*>();
}
inline bool Text_Unserialize(const string& text, Any any) {
return TextArchive::Unserialize(Load(text), any);
}
}