DocWire SDK
DocWire SDK: Award-winning modern data processing in C++20. SourceForge Community Choice & Microsoft support. AI-driven processing. Supports nearly 100 data formats, including email boxes and OCR. Boost efficiency in text extraction, web data extraction, data mining, document analysis. Offline processing possible for security and confidentiality
serialization_enum.h
1 /*********************************************************************************************************************************************/
2 /* DocWire SDK: Award-winning modern data processing in C++20. SourceForge Community Choice & Microsoft support. AI-driven processing. */
3 /* Supports nearly 100 data formats, including email boxes and OCR. Boost efficiency in text extraction, web data extraction, data mining, */
4 /* document analysis. Offline processing possible for security and confidentiality */
5 /* */
6 /* Copyright (c) SILVERCODERS Ltd, http://silvercoders.com */
7 /* Project homepage: https://github.com/docwire/docwire */
8 /* */
9 /* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-DocWire-Commercial */
10 /*********************************************************************************************************************************************/
11 
12 #ifndef DOCWIRE_SERIALIZATION_ENUM_H
13 #define DOCWIRE_SERIALIZATION_ENUM_H
14 
15 #include "serialization_base.h"
16 #include <magic_enum/magic_enum.hpp>
17 
18 namespace docwire::serialization
19 {
20 
21 template <typename T> requires std::is_enum_v<T>
22 struct serializer<T>
23 {
24  value full(const T& value) const { return std::string{magic_enum::enum_name(value)}; }
25  value typed_summary(const T& value) const { return decorate_with_typeid(full(value), type_name::pretty<T>()); }
26 };
27 
28 } // namespace docwire::serialization
29 
30 #endif // DOCWIRE_SERIALIZATION_ENUM_H
Provides a generic, concept-based serialization framework.
value decorate_with_typeid(const value &base_val, const std::string &typeid_str)
Helper to decorate a serialized value with a typeid string.
requires(std::is_arithmetic_v< T > &&!value_alternative< T >) struct serializer< T >
Specialization for arithmetic types (integers, floats).
std::variant< std::nullptr_t, bool, std::int64_t, std::uint64_t, double, std::string, array, object > value
A variant type representing any serialized value.
value full(const T &value)
Serializes a value of type T into a docwire::serialization::value.