summaryrefslogtreecommitdiffhomepage
path: root/spline
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 /spline
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 'spline')
-rw-r--r--spline/spline-widget.cpp2
-rw-r--r--spline/spline.cpp2
-rw-r--r--spline/spline.hpp3
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));