CPPConsole
Loading...
Searching...
No Matches
console.hpp
Go to the documentation of this file.
1#ifndef __CPP_CONSOLE_HPP__
2#define __CPP_CONSOLE_HPP__
3
4#include <iostream>
5#include <iterator>
6
7#include "template.hpp"
8
12namespace console {
19template <typename T>
20void print(const T& value) {
21 if constexpr (console::is_map<T>::is) {
22 print("{ ");
23 for (auto it = value.begin(); it != value.end(); ++it) {
24 print("{");
25 print(it->first);
26 print(", ");
27 print(it->second);
28 print("}");
29 if (it != std::prev(value.end())) print(", ");
30 }
31 print(" }");
32 } else if constexpr (console::iterable<T>::is) {
33 print("{ ");
34 std::size_t count = 0;
35 for (const auto& element : value) {
36 print(element);
37 if (count != value.size() - 1) print(", ");
38 count++;
39 }
40 print(" }");
41 } else {
42 std::cout << value;
43 }
44}
45
53template <typename T, size_t N,
54 typename std::enable_if_t<is_not_string<T>::value, int> = 0>
55void print(const T (&arr)[N]) {
56 std::cout << "{ ";
57 std::size_t count = 0;
58 for (const auto& element : arr) {
59 print(element);
60 if (count != N - 1) std::cout << ", ";
61 count++;
62 }
63 std::cout << " }";
64}
65
72template <size_t N>
73void print(const char (&arr)[N]) {
74 std::cout << arr;
75}
76
82void print(const std::string& str) { std::cout << str; }
83void print() {}
84
91template <typename T>
92void println(const T& value) {
93 print(value);
94 std::cout << std::endl;
95}
96
100void println() { std::cout << std::endl; }
101} // namespace console
102
103#endif
Namespace Containing all console commands.
Definition ansi.hpp:16
void println()
Prints out a newline.
Definition console.hpp:100
void print()
Definition console.hpp:83
Template for a map-like data type. Matches things like map and unordered_map.
Definition template.hpp:33
Template for a iterable data type. Matches things like vector, deque, map, etc.
Definition template.hpp:17