cemplateSimple C++ template engine |
git clone git://git.dimitrijedobrota.com/cemplate.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |
commit | 5c98605db5534f704898311e1dbfe06e275f1f4c |
parent | b52130ffd3fd9d9efdfa7eddeadc59d0cf9ca65d |
author | Dimitrije Dobrota <mail@dimitrijedobrota.com> |
date | Thu, 13 Mar 2025 20:09:35 +0100 |
Some things should be free functions
Diffstat:M | include/cemplate/cemplate.hpp | | | +++++++++--------- |
M | source/cemplate.cpp | | | +++++++++++++++++------------------- |
2 files changed, 26 insertions(+), 28 deletions(-)
diff --git a/include/cemplate/cemplate.hpp b/include/cemplate/cemplate.hpp
@@ -123,7 +123,14 @@ static auto indent(std::size_t lvl)
return std::string(lvl * 2, ' ');
}
std::string string(const std::string& value);
using s_t = const std::string&;
using l_t = const std::vector<std::string>&;
using p_t = const std::vector<param_t>&;
using i_t = const InitlistNode&;
std::string string(s_t value);
std::string call(s_t func, l_t args);
std::string template_def(s_t var, l_t params);
class Program
{
@@ -133,17 +140,11 @@ public:
{
}
using s_t = const std::string&;
using l_t = const std::vector<std::string>&;
using p_t = const std::vector<param_t>&;
using i_t = const InitlistNode&;
// NOLINTBEGIN
Program& line_empty();
Program& line_value(s_t value);
Program& value(s_t value);
Program& string(s_t value);
Program& pragma(s_t value);
Program& include(s_t header);
Program& includeL(s_t header);
@@ -152,8 +153,8 @@ public:
Program& multilineComment(l_t values);
Program& call(s_t func, l_t args);
Program& call(s_t func, s_t args);
Program& statement(s_t content);
Program& ret(s_t value);
Program& declaration(s_t type, s_t name, s_t value);
@@ -161,7 +162,6 @@ public:
Program& require(s_t value);
Program& template_decl(l_t params);
Program& template_def(s_t var, l_t params);
Program& function_decl(s_t name, s_t ret, l_t params = {});
diff --git a/source/cemplate.cpp b/source/cemplate.cpp
@@ -25,6 +25,18 @@ std::string string(const std::string& value)
return std::format(R"("{}")", value);
}
std::string call(s_t func, l_t args)
{
return std::format(
"{}({})", func, join(std::begin(args), std::end(args), ", "));
}
std::string template_def(s_t var, l_t params)
{
return std::format(
"{}<{}>", var, join(std::begin(params), std::end(params), ", "));
}
Program& Program::line_empty()
{
m_ost << "\n";
@@ -43,12 +55,6 @@ Program& Program::value(s_t value)
return *this;
}
Program& Program::string(s_t value)
{
m_ost << ::cemplate::string(value);
return *this;
}
Program& Program::pragma(s_t value)
{
m_ost << std::format("#pragma {}\n", value);
@@ -82,17 +88,16 @@ Program& Program::multilineComment(l_t values)
return *this;
}
Program& Program::call(s_t func, l_t args)
Program& Program::call(s_t func, s_t args)
{
m_ost << std::format(
"{}({})", func, join(std::begin(args), std::end(args), ", "));
m_ost << std::format("{}{}({});\n", indent(), func, args);
return *this;
}
Program& Program::statement(s_t content)
Program& Program::call(s_t func, l_t args)
{
m_ost << std::format("{}{};\n", indent(), content);
return *this;
const std::string val = join(std::begin(args), std::end(args), ", ");
return call(func, val);
}
Program& Program::ret(s_t value)
@@ -133,13 +138,6 @@ Program& Program::template_decl(l_t params)
return *this;
}
Program& Program::template_def(s_t var, l_t params)
{
m_ost << std::format(
"{}<{}>", var, join(std::begin(params), std::end(params), ", "));
return *this;
}
Program& Program::function_decl(s_t name, s_t ret, l_t params)
{
m_ost << std::format("{} {}({});\n",