summaryrefslogtreecommitdiffhomepage
path: root/migration/20160906_01-axis-signs.cpp
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 /migration/20160906_01-axis-signs.cpp
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 'migration/20160906_01-axis-signs.cpp')
-rw-r--r--migration/20160906_01-axis-signs.cpp77
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();
+}