@@ -97,7 +97,7 @@ protected: | |||
class BaseThreadManager : public Entity | |||
{ | |||
public: | |||
char const *GetName() { return "<BaseThreadManager>"; } | |||
std::string GetName() const { return "<BaseThreadManager>"; } | |||
BaseThreadManager(int thread_max); | |||
BaseThreadManager(int thread_max, int thread_min); | |||
virtual ~BaseThreadManager(); | |||
@@ -163,7 +163,7 @@ private: | |||
class DefaultThreadManager : public BaseThreadManager | |||
{ | |||
public: | |||
char const *GetName() { return "<DefaultThreadManager>"; } | |||
std::string GetName() const { return "<DefaultThreadManager>"; } | |||
DefaultThreadManager(int thread_max) | |||
: BaseThreadManager(thread_max, thread_max) | |||
{ } | |||
@@ -222,7 +222,7 @@ public: | |||
} | |||
}; | |||
public: | |||
char const *GetName() { return "<FileUpdateTester>"; } | |||
std::string GetName() const { return "<FileUpdateTester>"; } | |||
FileUpdateTester(uint32_t frame_skip = 4) | |||
: BaseThreadManager(1) | |||
{ m_frame_skip = frame_skip; } | |||
@@ -252,7 +252,7 @@ typedef FileUpdateTester::Status FileUpdateStatus; | |||
class AsyncImageLoader : public BaseThreadManager | |||
{ | |||
public: | |||
char const *GetName() { return "<AsyncImageLoader>"; } | |||
std::string GetName() const { return "<AsyncImageLoader>"; } | |||
AsyncImageLoader(int thread_max) | |||
: BaseThreadManager(thread_max, 0) | |||
{ | |||
@@ -1,7 +1,7 @@ | |||
// | |||
// Lol Engine | |||
// | |||
// Copyright © 2010—2016 Sam Hocevar <sam@hocevar.net> | |||
// Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net> | |||
// © 2016 Guillaume Bittoun <guillaume.bittoun@gmail.com> | |||
// | |||
// Lol Engine is free software. It comes without any warranty, to | |||
@@ -45,11 +45,11 @@ public: | |||
private: | |||
std::chrono::steady_clock::time_point m_tp; | |||
float get_seconds(bool reset) | |||
float get_seconds(bool do_reset) | |||
{ | |||
auto tp = std::chrono::steady_clock::now(), tp0 = m_tp; | |||
if (reset) | |||
if (do_reset) | |||
m_tp = tp; | |||
return std::chrono::duration_cast<std::chrono::duration<float>>(tp - tp0).count(); | |||
@@ -1,7 +1,7 @@ | |||
// | |||
// Lol Engine | |||
// | |||
// Copyright © 2010—2017 Sam Hocevar <sam@hocevar.net> | |||
// Copyright © 2010—2018 Sam Hocevar <sam@hocevar.net> | |||
// | |||
// Lol Engine is free software. It comes without any warranty, to | |||
// the extent permitted by applicable law. You can redistribute it | |||
@@ -22,7 +22,11 @@ namespace lol | |||
/* | |||
* First handle explicit specialisation of our templates. | |||
* | |||
*/ | |||
template<> int real::DEFAULT_BIGIT_COUNT = 16; | |||
/* | |||
* Initialisation order is not important because everything is | |||
* done on demand, but here is the dependency list anyway: | |||
* - fast_log() requires R_1 | |||
@@ -89,9 +93,6 @@ LOL_CONSTANT_GETTER(R_SQRT1_2, R_SQRT2() / 2); | |||
* Now carry on with the rest of the Real class. | |||
*/ | |||
template<> | |||
int real::DEFAULT_BIGIT_COUNT = 16; | |||
template<> real::Real() | |||
: m_exponent(0), | |||
m_sign(false), | |||
@@ -116,7 +117,7 @@ template<> real::Real(uint64_t i) | |||
if (i) | |||
{ | |||
/* Only works with 32-bit bigits for now */ | |||
static_assert(sizeof(bigit_t) == 4); | |||
static_assert(sizeof(bigit_t) == 4, "bigit_t must be 32-bit"); | |||
int delta = 1; | |||
while ((i >> 63) == 0) | |||
@@ -155,7 +156,7 @@ template<> real::Real(double d) | |||
break; | |||
default: | |||
/* Only works with 32-bit bigits for now */ | |||
static_assert(sizeof(bigit_t) == 4); | |||
static_assert(sizeof(bigit_t) == 4, "bigit_t must be 32-bit"); | |||
m_exponent = exponent - ((1 << 10) - 1); | |||
m_mantissa.resize(DEFAULT_BIGIT_COUNT); | |||
m_mantissa[0] = (bigit_t)(u.x >> 20); | |||
@@ -271,7 +272,7 @@ template<> real::Real(char const *str) | |||
finished = true; | |||
break; | |||
} | |||
LOL_ATTR_FALLTHROUGH /* FIXME: why doesn’t this seem to work? */ | |||
LOL_ATTR_FALLTHROUGH; | |||
case 'a': case 'b': case 'c': case 'd': case 'f': | |||
case 'A': case 'B': case 'C': case 'D': case 'F': | |||
case '0': case '1': case '2': case '3': case '4': | |||