20#ifndef ORES_UTILITY_RFL_REFLECTORS_HPP
21#define ORES_UTILITY_RFL_REFLECTORS_HPP
26#include <boost/uuid/uuid.hpp>
27#include <boost/uuid/uuid_io.hpp>
28#include <boost/lexical_cast.hpp>
29#include <boost/asio/ip/address.hpp>
40struct Reflector<boost::uuids::uuid> {
41 using ReflType = std::string;
43 static boost::uuids::uuid to(
const ReflType& str) {
44 return boost::lexical_cast<boost::uuids::uuid>(str);
47 static ReflType from(
const boost::uuids::uuid& v) {
48 return boost::lexical_cast<std::string>(v);
63struct Reflector<
std::chrono::system_clock::time_point> {
64 using ReflType = std::string;
74 static std::chrono::system_clock::time_point
to(
const ReflType& str) {
77 std::istringstream ss(str);
78 ss >> std::get_time(&tm,
"%Y-%m-%d %H:%M:%S");
80 auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
91 static ReflType
from(
const std::chrono::system_clock::time_point& v) {
97 return std::format(
"{:%F %T}Z", v);
107struct Reflector<boost::asio::ip::address> {
108 using ReflType = std::string;
110 static boost::asio::ip::address to(
const ReflType& str) {
111 return boost::asio::ip::make_address(str);
114 static ReflType from(
const boost::asio::ip::address& v) {
115 return v.to_string();
static std::chrono::system_clock::time_point to(const ReflType &str)
Parses a string into a time_point.
Definition reflectors.hpp:74
static ReflType from(const std::chrono::system_clock::time_point &v)
Formats a time_point into a string.
Definition reflectors.hpp:91