9#include "graphics/graphics.h"
15template<
typename T0,
typename T1>
16requires(
requires (ostream &o, T0 t0, T1 t1) { o << t0; o << t1; })
17ostream &
operator<<(ostream &o,
const pair<T0, T1> &
p) {
18 return o <<
'{' <<
p.first <<
", " <<
p.second <<
'}';
21template<
typename T,
typename A>
22requires(
requires (ostream &o,
T t) { o << t; })
23ostream &
operator<<(ostream &o,
const vector<T, A> &
v) {
27 for(
auto b = cbegin(
v) + 1,
e = cend(
v); b !=
e; ++b)
38template<
template<
typename>
typename V,
typename T, std::size_t
N>
43template<
typename T0,
typename T1>
44inline std::string
vdiff(
const T0 &v0,
const T1 &v1);
46template<
template<
typename>
typename V,
typename T, std::size_t
N>
51 for(std::size_t
i = 1;
i <
N; ++
i)
57 return os <<
"{" <<
m[0] <<
", " <<
m[1] <<
", " <<
m[2] <<
"}";
63 <<
m[0] <<
", " <<
m[1] <<
", "
64 <<
m[2] <<
", " <<
m[3]
69 {
return os <<
"{" <<
v.pos <<
", " <<
v.norm <<
", " <<
v.color <<
"}"; }
71template<
typename T0,
typename T1>
72inline std::string
vdiff(
const T0 &v0,
const T1 &v1) {
75 const auto b0 = cbegin(v0), e0 = cend(v0);
76 const auto e1 = cend(v1);
79 while(p0 != e0 && *p0 == *p1) { ++p0; ++p1; }
80 if(p0 == e0 && p1 == e1)
82 const auto i = p0 - b0;
84 const auto fmt = [&
s,
i](
const char *
n,
auto p,
const auto e) {
85 s <<
"\n" <<
n <<
"[" <<
i <<
":]:";
for i
Definition: font.lua:5
std::string vdiff(const T0 &v0, const T1 &v1)
Definition: debug.h:72
std::ostream & operator<<(std::ostream &os, const nngn::vec< V, T, N > &v)
Definition: debug.h:47
n
Definition: dump_lights.lua:5
v[1]
Definition: math.lua:19
function fmt(name, size, n, max)
std::chrono::seconds s
Definition: timing.cpp:6
Definition: graphics.h:136