| @@ -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': | ||||