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 /spline | |
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 'spline')
-rw-r--r-- | spline/spline-widget.cpp | 2 | ||||
-rw-r--r-- | spline/spline.cpp | 2 | ||||
-rw-r--r-- | spline/spline.hpp | 3 |
3 files changed, 3 insertions, 4 deletions
diff --git a/spline/spline-widget.cpp b/spline/spline-widget.cpp index b797a907..638b67a7 100644 --- a/spline/spline-widget.cpp +++ b/spline/spline-widget.cpp @@ -223,7 +223,7 @@ void spline_widget::drawFunction() painter.drawPath(path); #else - static constexpr int line_length_pixels = 3; + constexpr int line_length_pixels = 3; const qreal max = _config->maxInput(); const qreal step = clamp(line_length_pixels / c.x(), 5e-2, max); QPointF prev = point_to_pixel(QPoint(0, 0)); diff --git a/spline/spline.cpp b/spline/spline.cpp index 823fd64f..fc77bf8b 100644 --- a/spline/spline.cpp +++ b/spline/spline.cpp @@ -27,8 +27,6 @@ using namespace spline_detail; -constexpr std::size_t spline::value_count; - spline::spline(const QString& name, const QString& axis_name, Axis axis) : axis(axis) { diff --git a/spline/spline.hpp b/spline/spline.hpp index 0d080cef..a3532855 100644 --- a/spline/spline.hpp +++ b/spline/spline.hpp @@ -16,6 +16,7 @@ using namespace options; #include "export.hpp" +#include <cstddef> #include <vector> #include <limits> #include <memory> @@ -102,7 +103,7 @@ class OTR_SPLINE_EXPORT spline : public base_spline std::shared_ptr<spline_detail::settings> s; QMetaObject::Connection connection, conn_maxx, conn_maxy; - static constexpr std::size_t value_count = 4096; + static constexpr inline std::size_t value_count = 4096; std::vector<float> data = std::vector<float>(value_count, float(-16)); |