alec

Abstraction Layer for Escape Codes
git clone git://git.dimitrijedobrota.com/alec.git
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING |

commit14a27ded286897a25bfc24151e5324ef375b127f
parenta363d81f66d03573e5600c468e18eca19973d212
authorDimitrije Dobrota <mail@dimitrijedobrota.com>
dateSat, 22 Jun 2024 15:08:32 +0200

Improve string_literal

Diffstat:
MCMakeLists.txt|+-
Msrc/alec.rules.hpp|+++++++++-----

2 files changed, 10 insertions(+), 6 deletions(-)


diff --git a/CMakeLists.txt b/CMakeLists.txt

@@ -3,7 +3,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

project(
Alec
VERSION 1.0.7
VERSION 1.0.8
DESCRIPTION "Abstraction Layer for Escape Codes"
HOMEPAGE_URL https://git.dimitrijedobrota.com/alec.git
LANGUAGES C CXX

diff --git a/src/alec.rules.hpp b/src/alec.rules.hpp

@@ -55,11 +55,15 @@ enum class Motion {

namespace details {
template <std::size_t N> struct string_literal {
constexpr string_literal(const char (&str)[N]) { std::copy_n(str, N, value); }
constexpr std::size_t size() const { return N; }
template<std::size_t N>
struct string_literal
{
constexpr string_literal(const char (&str)[N]) : m_value(std::to_array(str)) {}
char value[N];
constexpr std::size_t size() const { return N; }
constexpr const char* data() const { return m_value.data(); }
std::array<char, N> m_value;
};
namespace helper {

@@ -72,7 +76,7 @@ namespace helper {

}
template <std::size_t N> static constexpr char *append(char *ptr, string_literal<N> val) {
std::copy_n(val.value, N, ptr);
std::copy_n(val.data(), N, ptr);
return ptr + N;
}