summaryrefslogtreecommitdiffhomepage
path: root/logic
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2018-02-15 09:06:13 +0100
committerStanislaw Halik <sthalik@misaki.pl>2018-02-15 10:23:11 +0100
commit0a92bc147f91f3ecacdf66d995f01f9577107a86 (patch)
treed748f1b081cd37eb2b4a6cd6b5254433ba8b8dab /logic
parentd8327db8025e56500ebb0bef2ab45aa8963a36ca (diff)
clean up "static" and "constexpr" types
- use `static constexpr inline' to avoid requiring explicit declarations in object code - use `const Foo* const' to maybe put into readonly binary segment (at least for ELF DSOs) - `constexpr' in function scope has storage, avoid `static' - don't use `constexpr' where there's no advantage, like arrays We'd like to avoid overhead of atomic initialization for each function call. No idea how `static constexpr' requiring storage in the standard plays with atomic initialization requirement. Hearsay points that `constexpr' without `static' in block scope behaves more to our liking. It's all hazy though. I'm not 100% sure if `static inline constexpr' has any storage. Hopefully none, like a #define, and stuff bigger than registers gets coalesced within the same module, with small stuff being immediates.
Diffstat (limited to 'logic')
-rw-r--r--logic/pipeline.cpp7
-rw-r--r--logic/pipeline.hpp4
2 files changed, 5 insertions, 6 deletions
diff --git a/logic/pipeline.cpp b/logic/pipeline.cpp
index d690b406..9059a251 100644
--- a/logic/pipeline.cpp
+++ b/logic/pipeline.cpp
@@ -190,8 +190,6 @@ static bool is_nan(const dmat<u,w>& r)
return false;
}
-constexpr double pipeline::c_mult;
-constexpr double pipeline::c_div;
template<typename x, typename y, typename... xs>
static inline bool nan_check_(const x& datum, const y& next, const xs&... rest)
{
@@ -480,8 +478,9 @@ void pipeline::run()
#endif
{
- static constexpr const char* posechannels[6] = { "TX", "TY", "TZ", "Yaw", "Pitch", "Roll" };
- static constexpr const char* datachannels[5] = { "dt", "raw", "corrected", "filtered", "mapped" };
+ static const char* const posechannels[6] = { "TX", "TY", "TZ", "Yaw", "Pitch", "Roll" };
+ static const char* const datachannels[5] = { "dt", "raw", "corrected", "filtered", "mapped" };
+
logger.write(datachannels[0]);
char buffer[128];
for (unsigned j = 1; j < 5; ++j)
diff --git a/logic/pipeline.hpp b/logic/pipeline.hpp
index 0061e439..1e1919f4 100644
--- a/logic/pipeline.hpp
+++ b/logic/pipeline.hpp
@@ -114,8 +114,8 @@ private:
void run() override;
// note: float exponent base is 2
- static constexpr double c_mult = 16;
- static constexpr double c_div = 1./c_mult;
+ static constexpr inline double c_mult = 16;
+ static constexpr inline double c_div = 1./c_mult;
public:
pipeline(Mappings& m, runtime_libraries& libs, event_handler& ev, TrackLogger& logger);
~pipeline();