@@ -97,7 +97,7 @@ protected: | |||||
class BaseThreadManager : public Entity | class BaseThreadManager : public Entity | ||||
{ | { | ||||
public: | public: | ||||
char const *GetName() { return "<BaseThreadManager>"; } | |||||
std::string GetName() const { return "<BaseThreadManager>"; } | |||||
BaseThreadManager(int thread_max); | BaseThreadManager(int thread_max); | ||||
BaseThreadManager(int thread_max, int thread_min); | BaseThreadManager(int thread_max, int thread_min); | ||||
virtual ~BaseThreadManager(); | virtual ~BaseThreadManager(); | ||||
@@ -163,7 +163,7 @@ private: | |||||
class DefaultThreadManager : public BaseThreadManager | class DefaultThreadManager : public BaseThreadManager | ||||
{ | { | ||||
public: | public: | ||||
char const *GetName() { return "<DefaultThreadManager>"; } | |||||
std::string GetName() const { return "<DefaultThreadManager>"; } | |||||
DefaultThreadManager(int thread_max) | DefaultThreadManager(int thread_max) | ||||
: BaseThreadManager(thread_max, thread_max) | : BaseThreadManager(thread_max, thread_max) | ||||
{ } | { } | ||||
@@ -222,7 +222,7 @@ public: | |||||
} | } | ||||
}; | }; | ||||
public: | public: | ||||
char const *GetName() { return "<FileUpdateTester>"; } | |||||
std::string GetName() const { return "<FileUpdateTester>"; } | |||||
FileUpdateTester(uint32_t frame_skip = 4) | FileUpdateTester(uint32_t frame_skip = 4) | ||||
: BaseThreadManager(1) | : BaseThreadManager(1) | ||||
{ m_frame_skip = frame_skip; } | { m_frame_skip = frame_skip; } | ||||
@@ -252,7 +252,7 @@ typedef FileUpdateTester::Status FileUpdateStatus; | |||||
class AsyncImageLoader : public BaseThreadManager | class AsyncImageLoader : public BaseThreadManager | ||||
{ | { | ||||
public: | public: | ||||
char const *GetName() { return "<AsyncImageLoader>"; } | |||||
std::string GetName() const { return "<AsyncImageLoader>"; } | |||||
AsyncImageLoader(int thread_max) | AsyncImageLoader(int thread_max) | ||||
: BaseThreadManager(thread_max, 0) | : BaseThreadManager(thread_max, 0) | ||||
{ | { | ||||
@@ -1,7 +1,7 @@ | |||||
// | // | ||||
// Lol Engine | // 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> | // © 2016 Guillaume Bittoun <guillaume.bittoun@gmail.com> | ||||
// | // | ||||
// Lol Engine is free software. It comes without any warranty, to | // Lol Engine is free software. It comes without any warranty, to | ||||
@@ -45,11 +45,11 @@ public: | |||||
private: | private: | ||||
std::chrono::steady_clock::time_point m_tp; | 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; | auto tp = std::chrono::steady_clock::now(), tp0 = m_tp; | ||||
if (reset) | |||||
if (do_reset) | |||||
m_tp = tp; | m_tp = tp; | ||||
return std::chrono::duration_cast<std::chrono::duration<float>>(tp - tp0).count(); | return std::chrono::duration_cast<std::chrono::duration<float>>(tp - tp0).count(); | ||||
@@ -1,7 +1,7 @@ | |||||
// | // | ||||
// Lol Engine | // 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 | // Lol Engine is free software. It comes without any warranty, to | ||||
// the extent permitted by applicable law. You can redistribute it | // the extent permitted by applicable law. You can redistribute it | ||||
@@ -22,7 +22,11 @@ namespace lol | |||||
/* | /* | ||||
* First handle explicit specialisation of our templates. | * First handle explicit specialisation of our templates. | ||||
* | |||||
*/ | |||||
template<> int real::DEFAULT_BIGIT_COUNT = 16; | |||||
/* | |||||
* Initialisation order is not important because everything is | * Initialisation order is not important because everything is | ||||
* done on demand, but here is the dependency list anyway: | * done on demand, but here is the dependency list anyway: | ||||
* - fast_log() requires R_1 | * - 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. | * Now carry on with the rest of the Real class. | ||||
*/ | */ | ||||
template<> | |||||
int real::DEFAULT_BIGIT_COUNT = 16; | |||||
template<> real::Real() | template<> real::Real() | ||||
: m_exponent(0), | : m_exponent(0), | ||||
m_sign(false), | m_sign(false), | ||||
@@ -116,7 +117,7 @@ template<> real::Real(uint64_t i) | |||||
if (i) | if (i) | ||||
{ | { | ||||
/* Only works with 32-bit bigits for now */ | /* 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; | int delta = 1; | ||||
while ((i >> 63) == 0) | while ((i >> 63) == 0) | ||||
@@ -155,7 +156,7 @@ template<> real::Real(double d) | |||||
break; | break; | ||||
default: | default: | ||||
/* Only works with 32-bit bigits for now */ | /* 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_exponent = exponent - ((1 << 10) - 1); | ||||
m_mantissa.resize(DEFAULT_BIGIT_COUNT); | m_mantissa.resize(DEFAULT_BIGIT_COUNT); | ||||
m_mantissa[0] = (bigit_t)(u.x >> 20); | m_mantissa[0] = (bigit_t)(u.x >> 20); | ||||
@@ -271,7 +272,7 @@ template<> real::Real(char const *str) | |||||
finished = true; | finished = true; | ||||
break; | 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 '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': | case '0': case '1': case '2': case '3': case '4': | ||||