diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2018-02-15 09:06:13 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2018-02-15 10:23:11 +0100 |
commit | 0a92bc147f91f3ecacdf66d995f01f9577107a86 (patch) | |
tree | d748f1b081cd37eb2b4a6cd6b5254433ba8b8dab /migration/20160906_01-axis-signs.cpp | |
parent | d8327db8025e56500ebb0bef2ab45aa8963a36ca (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 'migration/20160906_01-axis-signs.cpp')
-rw-r--r-- | migration/20160906_01-axis-signs.cpp | 77 |
1 files changed, 39 insertions, 38 deletions
diff --git a/migration/20160906_01-axis-signs.cpp b/migration/20160906_01-axis-signs.cpp index 6dfa0d7c..7b0be70a 100644 --- a/migration/20160906_01-axis-signs.cpp +++ b/migration/20160906_01-axis-signs.cpp @@ -15,13 +15,18 @@ using namespace options; using namespace migrations; +const char* const axis_names[] = +{ + "yaw", "pitch", "roll", + "x", "y", "z", +}; + +const QString alt_sign_fmt = QStringLiteral("%1-alt-axis-sign"); + struct axis_signs_split_rc11 : migration { axis_signs_split_rc11() = default; - static const char* axis_names[6]; - static const QString fmt; - QString unique_date() const override { return "20160909_01"; @@ -32,47 +37,43 @@ struct axis_signs_split_rc11 : migration return "asymmetric axis option to other section"; } - bool should_run() const override + bool should_run() const override; + void run() override; +}; + +OPENTRACK_MIGRATION(axis_signs_split_rc11); + +bool axis_signs_split_rc11::should_run() const +{ + bundle new_bundle = make_bundle("opentrack-mappings"); + bundle old_bundle = make_bundle("opentrack-ui"); + + for (const char* name : axis_names) { - bundle new_bundle = make_bundle("opentrack-mappings"); - bundle old_bundle = make_bundle("opentrack-ui"); - - for (const char* name : axis_names) - { - // new present, already applied - if (new_bundle->contains(fmt.arg(name))) - return false; - } - - for (const char* name : axis_names) - { - // old present - if (old_bundle->contains(fmt.arg(name))) - return true; - } - - // nothing to copy - return false; + // new present, already applied + if (new_bundle->contains(alt_sign_fmt.arg(name))) + return false; } - void run() override + for (const char* name : axis_names) { - bundle new_bundle = make_bundle("opentrack-mappings"); - bundle old_bundle = make_bundle("opentrack-ui"); - - for (const char* name : axis_names) - new_bundle->store_kv(fmt.arg(name), QVariant(old_bundle->get<bool>(fmt.arg(name)))); - - new_bundle->save(); + // old present + if (old_bundle->contains(alt_sign_fmt.arg(name))) + return true; } -}; -const char* axis_signs_split_rc11::axis_names[] = + // nothing to copy + return false; +} + +void axis_signs_split_rc11::run() { - "yaw", "pitch", "roll", - "x", "y", "z", -}; + bundle new_bundle = make_bundle("opentrack-mappings"); + bundle old_bundle = make_bundle("opentrack-ui"); -const QString axis_signs_split_rc11::fmt = QStringLiteral("%1-alt-axis-sign"); + for (const char* name : axis_names) + new_bundle->store_kv(alt_sign_fmt.arg(name), + QVariant(old_bundle->get<bool>(alt_sign_fmt.arg(name)))); -OPENTRACK_MIGRATION(axis_signs_split_rc11); + new_bundle->save(); +} |