aboutsummaryrefslogtreecommitdiffstats
path: root/gr-filter/lib
diff options
context:
space:
mode:
authorThomas Habets <habets@google.com>2019-11-20 12:30:19 +0000
committerMartin Braun <martin.braun@ettus.com>2020-01-04 22:35:12 -0800
commit27a466a9c8a03392270fadde9e5bafef5c062e61 (patch)
treeb7b8ce04ef2b95cb663fc06faad4a866062007e6 /gr-filter/lib
parentSimpleXMLRPCServer was moved in Python3 (diff)
downloadgnuradio-27a466a9c8a03392270fadde9e5bafef5c062e61.tar.xz
gnuradio-27a466a9c8a03392270fadde9e5bafef5c062e61.zip
Replace many `const` variables with `constexpr`
constexpr is like const but (for variables) guarantees evaluation at compile time (as opposed to runtime). Likely this change will do nothing on its own (though it could, since it gives the compiler more information). But it still has benefits. It allows programmer to know that initialization is not expensive (it was done at compile time), and reduces risk of a refactoring regressing the compiletimeness. Runtime initialization can be nonobvious in larger codebases. E.g.: struct S { static int foo(); }; const int bar = S::foo(); // Called and initialized at *runtime*. int S::foo() { return 10; } With constexpr: struct S { static constexpr int foo(); }; constexpr int bar = S::foo(); // Error: used before definition. constexpr int S::foo() { return 10; } Initializing at runtime is not just startup costs, but also can save memory since it'll end up in a R/O section of a binary and therefore doesn't need to be swapped out, but can be shared (in the mmap() sense of the word).
Diffstat (limited to 'gr-filter/lib')
-rw-r--r--gr-filter/lib/gen_interpolator_taps/gen_interp_differentiator_taps.c8
-rw-r--r--gr-filter/lib/gen_interpolator_taps/gen_interpolator_taps.c8
2 files changed, 8 insertions, 8 deletions
diff --git a/gr-filter/lib/gen_interpolator_taps/gen_interp_differentiator_taps.c b/gr-filter/lib/gen_interpolator_taps/gen_interp_differentiator_taps.c
index aadd80114..a162058fd 100644
--- a/gr-filter/lib/gen_interpolator_taps/gen_interp_differentiator_taps.c
+++ b/gr-filter/lib/gen_interpolator_taps/gen_interp_differentiator_taps.c
@@ -162,11 +162,11 @@ int main(int argc, char** argv)
*/\n\n");
- printf("static const int DNTAPS = %4d;\n", ntaps);
- printf("static const int DNSTEPS = %4d;\n", nsteps);
- printf("static const double DBANDWIDTH = %g;\n\n", global_B);
+ printf("static constexpr int DNTAPS = %4d;\n", ntaps);
+ printf("static constexpr int DNSTEPS = %4d;\n", nsteps);
+ printf("static constexpr double DBANDWIDTH = %g;\n\n", global_B);
- printf("static const float Dtaps[DNSTEPS+1][DNTAPS] = {\n");
+ printf("static constexpr float Dtaps[DNSTEPS+1][DNTAPS] = {\n");
printf(" // -4 -3 -2 -1 0 "
" 1 2 3 mu\n");
diff --git a/gr-filter/lib/gen_interpolator_taps/gen_interpolator_taps.c b/gr-filter/lib/gen_interpolator_taps/gen_interpolator_taps.c
index 3b22c74c2..4dd13a40a 100644
--- a/gr-filter/lib/gen_interpolator_taps/gen_interpolator_taps.c
+++ b/gr-filter/lib/gen_interpolator_taps/gen_interpolator_taps.c
@@ -177,11 +177,11 @@ int main(int argc, char** argv)
*/\n\n");
- printf("static const int NTAPS = %4d;\n", ntaps);
- printf("static const int NSTEPS = %4d;\n", nsteps);
- printf("static const double BANDWIDTH = %g;\n\n", global_B);
+ printf("static constexpr int NTAPS = %4d;\n", ntaps);
+ printf("static constexpr int NSTEPS = %4d;\n", nsteps);
+ printf("static constexpr double BANDWIDTH = %g;\n\n", global_B);
- printf("static const float taps[NSTEPS+1][NTAPS] = {\n");
+ printf("static constexpr float taps[NSTEPS+1][NTAPS] = {\n");
printf(" // -4 -3 -2 -1 0 "
" 1 2 3 mu\n");