From 14d7e7275eb54efdfe59ba3ce3b53634286c3d05 Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Sat, 20 Jul 2019 23:22:45 +0200 Subject: Initial --- main.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 main.cpp (limited to 'main.cpp') diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..7a0ccd0 --- /dev/null +++ b/main.cpp @@ -0,0 +1,64 @@ +#include "cxxformat.hpp" +#include +#include + + +template +struct format::FormatConvert, char>>> +{ + template + static std::string accessConvert(const T *from) + { + if constexpr (_N == N) + { + return "}"; + } + else + { + return format::format("%v", from[_N]) + (_N + 1 < N ? ", " : "") + accessConvert<_N + 1>(from); + } + } + + static std::string convert(const T *from) + { + return "array[" + std::to_string(N) + "]{" + accessConvert<0>(from); + } +}; + +template +struct format::FormatConvert> +{ + static std::string convert(const std::array& from) + { + return format::FormatConvert::convert(from.data()); + } +}; + +template +struct format::AutoConversion> +{ + static std::string conversion(const std::array&) + { + return "s"; + } +}; + +template +struct format::AutoConversion, char>>> +{ + static std::string conversion(const T(&)[N]) + { + return "s"; + } +}; + +int main(int argc, char *argv[]) +{ + std::cout << format::format("%v%v%v%v%v", 'H', 'a', 'l', 'l', 'o') << std::endl; + const std::array array[] = {std::array{1, 2, 3, 4, 5}, std::array{1, 2, 3, 4, 5}, std::array{1, 2, 3, 4, 5}, std::array{1, 2, 3, 4, 5}, std::array{1, 2, 3, 4, 5}}; + std::cout << format::format("%V", &array) << std::endl; + std::cout << format::format("%s", std::array{1, 2, 3, 4, 5}) << std::endl; + std::cout << format::format("Hello %v: %-7v %v", "World", 3.5, 5) << std::endl; + std::cout << format::format("Hello %s: %d %03.5f", "World", 7, 3.5) << std::endl; + return 0; +} -- cgit v1.2.3-54-g00ecf