Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
enum_serialization.h File Reference

Generic enum serialization utilities using C++20 concepts. More...

#include <algorithm>
#include <array>
#include <cctype>
#include <span>
#include <string>
#include <string_view>
#include <type_traits>
#include <utility>
#include "../patterns/result.h"
Include dependency graph for enum_serialization.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  kcenon
 
namespace  kcenon::common
 Core interfaces.
 

Concepts

concept  kcenon::common::EnumSerializable
 Concept to check if an enum has valid traits defined.
 

Functions

template<EnumSerializable Enum>
std::string kcenon::common::enum_to_string (Enum value)
 Convert an enum value to its string representation.
 
template<EnumSerializable Enum>
Result< Enum > kcenon::common::enum_from_string (std::string_view str)
 Convert a string to its enum value (case-insensitive)
 

Detailed Description

Generic enum serialization utilities using C++20 concepts.

This header provides a type-safe, compile-time approach to enum serialization and deserialization. It eliminates duplicated switch/case patterns across multiple enum types.

Usage:

// 1. Define enum_traits specialization for your enum
template<>
struct enum_traits<my_enum> {
static constexpr auto values = std::array{
std::pair{my_enum::value1, std::string_view{"VALUE1"}},
std::pair{my_enum::value2, std::string_view{"VALUE2"}},
};
static constexpr std::string_view module_name = "my_module";
};
// 2. Use generic functions
auto str = enum_to_string(my_enum::value1); // "VALUE1"
auto result = enum_from_string<my_enum>("VALUE1"); // Result<my_enum>
std::string enum_to_string(Enum value)
Convert an enum value to its string representation.
Note
Issue #293: Created to eliminate duplicated enum serialization patterns.

Definition in file enum_serialization.h.