1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-06-25 22:53:19 +00:00

glhr:: a more efficient stringbuilder (previous version caused stack overflow in web)

This commit is contained in:
Zeno Rogue 2019-10-12 11:21:29 +02:00
parent adee8aa699
commit 54a9345777

View File

@ -412,13 +412,19 @@ GLprogram *programs[gmMAX][int(shader_projection::MAX)];
string stringbuilder() { return ""; } string stringbuilder() { return ""; }
template<class... T> string stringbuilder(bool i, const string& s, T... t) { bool use_next = false;
if(i) return s +
#if DEBUG_GL int stringbuilder_helper(string& output, bool i) { use_next = i; return 0; }
"\n" + int stringbuilder_helper(string& output, const char *s) { if(use_next) output += s; return 0; }
#endif int stringbuilder_helper(string& output, const string& s) { if(use_next) output += s; return 0; }
stringbuilder(t...);
else return stringbuilder(t...); template<class... T> string stringbuilder(T... t) {
use_next = true;
string output;
std::initializer_list<int> dummy = {stringbuilder_helper(output, t)...};
ignore(dummy);
println(hlog, "output = '", output, "'");
return output;
} }
glmatrix current_matrix, current_modelview, current_projection; glmatrix current_matrix, current_modelview, current_projection;