AmpGen 2.1
Loading...
Searching...
No Matches
enum.h File Reference
#include "AmpGen/MsgService.h"
#include "AmpGen/Utilities.h"
#include <string.h>

Go to the source code of this file.

Namespaces

namespace  AmpGen
namespace  AmpGen::detail

Macros

#define declare_enum(name, ...)
#define complete_enum(name, ...)
#define make_enum(name, ...)

Functions

template<class T>
AmpGen::parse (const std::string &word)
template<class T>
std::string AmpGen::to_string (const T &enumItem)
template<class T>
AmpGen::detail::parse (const std::string &word, const char *args)
template<class T>
std::string AmpGen::detail::to_string (const T &enumItem, const char *args)

Macro Definition Documentation

◆ complete_enum

#define complete_enum ( name,
... )
Value:
template <> name parse(const std::string &word) { \
constexpr auto args = #__VA_ARGS__; \
return AmpGen::detail::parse<name>(word, args); \
} \
template <> std::string to_string(const name &enumItem) { \
constexpr auto args = #__VA_ARGS__; \
return AmpGen::detail::to_string<name>(enumItem, args); \
} \
template <> name lexical_cast(const std::string &word, bool & /*status*/) { return parse<name>(word); } \
std::ostream &operator<<(std::ostream &os, const name &np) { return os << to_string<name>(np); }
T parse(const std::string &word, const char *args)
Definition enum.h:43
std::string to_string(const T &enumItem, const char *args)
Definition enum.h:72
std::ostream & operator<<(std::ostream &os, const CompiledExpressionBase &expression)
return_type lexical_cast(const std::string &word, bool &status)

Definition at line 13 of file enum.h.

◆ declare_enum

#define declare_enum ( name,
... )
Value:
enum class name { __VA_ARGS__, Invalid }; \
template <> name parse(const std::string &word); \
template <> std::string to_string(const name &enumItem); \
std::ostream &operator<<(std::ostream &os, const name &np)

Definition at line 7 of file enum.h.

◆ make_enum

#define make_enum ( name,
... )
Value:
enum class name { __VA_ARGS__, Invalid }; \
template <> inline name parse(const std::string &word) { \
constexpr auto args = #__VA_ARGS__; \
return AmpGen::detail::parse<name>(word, args); \
} \
template <> inline std::string to_string(const name &enumItem) { \
constexpr auto args = #__VA_ARGS__; \
return AmpGen::detail::to_string<name>(enumItem, args); \
} \
template <> inline name lexical_cast(const std::string &word, bool & /*status*/) { return parse<name>(word); } \
inline std::ostream &operator<<(std::ostream &os, const name &np) { return os << to_string<name>(np); }
std::string to_string(const T &enumItem)
Definition enum.h:40

Definition at line 25 of file enum.h.