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 /tracker-pt | |
| 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 'tracker-pt')
| -rw-r--r-- | tracker-pt/ftnoir_tracker_pt.h | 2 | ||||
| -rw-r--r-- | tracker-pt/ftnoir_tracker_pt_dialog.cpp | 2 | ||||
| -rw-r--r-- | tracker-pt/point_tracker.cpp | 2 | ||||
| -rw-r--r-- | tracker-pt/point_tracker.h | 2 | 
4 files changed, 3 insertions, 5 deletions
diff --git a/tracker-pt/ftnoir_tracker_pt.h b/tracker-pt/ftnoir_tracker_pt.h index d1f7e1d7..3cb5f67b 100644 --- a/tracker-pt/ftnoir_tracker_pt.h +++ b/tracker-pt/ftnoir_tracker_pt.h @@ -81,7 +81,7 @@ private:      std::atomic<unsigned> point_count = 0;      std::atomic<bool> ever_success = false; -    static constexpr f rad2deg = f(180/M_PI); +    static constexpr inline f rad2deg = f(180/M_PI);      //static constexpr float deg2rad = float(M_PI/180);  }; diff --git a/tracker-pt/ftnoir_tracker_pt_dialog.cpp b/tracker-pt/ftnoir_tracker_pt_dialog.cpp index 10a2c6cb..5bd1a4c8 100644 --- a/tracker-pt/ftnoir_tracker_pt_dialog.cpp +++ b/tracker-pt/ftnoir_tracker_pt_dialog.cpp @@ -90,7 +90,7 @@ TrackerDialog_PT::TrackerDialog_PT(const QString& module_name) :      connect(this, &TrackerDialog_PT::poll_tracker_info, this, &TrackerDialog_PT::poll_tracker_info_impl, Qt::DirectConnection); -    static constexpr pt_color_type color_types[] = { +    constexpr pt_color_type color_types[] = {          pt_color_average,          pt_color_natural,          pt_color_red_only, diff --git a/tracker-pt/point_tracker.cpp b/tracker-pt/point_tracker.cpp index 5efbbfe8..6116bec5 100644 --- a/tracker-pt/point_tracker.cpp +++ b/tracker-pt/point_tracker.cpp @@ -16,8 +16,6 @@ using namespace types;  #include <QDebug> -constexpr unsigned PointModel::N_POINTS; -  static void get_row(const mat33& m, int i, vec3& v)  {      v[0] = m(i,0); diff --git a/tracker-pt/point_tracker.h b/tracker-pt/point_tracker.h index 6abe5df9..5e741c75 100644 --- a/tracker-pt/point_tracker.h +++ b/tracker-pt/point_tracker.h @@ -32,7 +32,7 @@ using namespace types;  struct PointModel final  { -    static constexpr unsigned N_POINTS = 3; +    static constexpr inline unsigned N_POINTS = 3;      vec3 M01;      // M01 in model frame      vec3 M02;      // M02 in model frame  | 
