From 0a92bc147f91f3ecacdf66d995f01f9577107a86 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Thu, 15 Feb 2018 09:06:13 +0100 Subject: 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. --- logic/pipeline.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'logic/pipeline.cpp') 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& r) return false; } -constexpr double pipeline::c_mult; -constexpr double pipeline::c_div; template 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) -- cgit v1.2.3