namespace hemplate
{
template<std::size_t N>
struct string_literal
{
// NOLINTNEXTLINE
constexpr string_literal(const char (&str)[N])
: m_value(std::to_array(str))
{
}
constexpr std::size_t size() const { return N; }
constexpr const char* data() const { return m_value.data(); }
std::array<char, N> m_value;
};
template<string_literal Name>
template<based::string_literal Name>
struct tag
{
static char const* get_name() { return Name.data(); }
static auto get_name() { return Name.data(); }
static auto get_size() { return Name.size(); }
};
using comment = element_builder<tag<"comment">, element::Type::Comment>;
class xml : public element_builder<tag<"xml">, element::Type::Xml>
class HEMPLATE_EXPORT xml
: public element_builder<tag<"xml">, element::Type::Xml>
{
public:
static constexpr const auto default_version = "1.0";