summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Habets <thomas@habets.se>2020-08-12 11:53:20 +0100
committerMartin Braun <martin@gnuradio.org>2020-08-14 04:08:48 -0700
commit752593a347de25cc28ec981c27b2e5f381f843a6 (patch)
treef9c1f17eeaa35832345eb7bc36711b3b0040dddc
parent91c5b60465d8a932f54b979a3303b24c0f1eb696 (diff)
digital/glfsr_source: Remove manual memory management
-rw-r--r--gr-digital/lib/glfsr_source_b_impl.cc11
-rw-r--r--gr-digital/lib/glfsr_source_b_impl.h2
-rw-r--r--gr-digital/lib/glfsr_source_f_impl.cc11
-rw-r--r--gr-digital/lib/glfsr_source_f_impl.h2
4 files changed, 10 insertions, 16 deletions
diff --git a/gr-digital/lib/glfsr_source_b_impl.cc b/gr-digital/lib/glfsr_source_b_impl.cc
index f10eafb71c..13ee0393da 100644
--- a/gr-digital/lib/glfsr_source_b_impl.cc
+++ b/gr-digital/lib/glfsr_source_b_impl.cc
@@ -32,6 +32,7 @@ glfsr_source_b_impl::glfsr_source_b_impl(unsigned int degree,
: sync_block("glfsr_source_b",
io_signature::make(0, 0, 0),
io_signature::make(1, 1, sizeof(unsigned char))),
+ d_glfsr(mask ? mask : glfsr::glfsr_mask(degree), seed),
d_repeat(repeat),
d_index(0),
d_length((((uint32_t)1) << degree) - 1)
@@ -39,15 +40,11 @@ glfsr_source_b_impl::glfsr_source_b_impl(unsigned int degree,
if (degree < 1 || degree > 32)
throw std::runtime_error(
"glfsr_source_b_impl: degree must be between 1 and 32 inclusive");
-
- if (mask == 0)
- mask = glfsr::glfsr_mask(degree);
- d_glfsr = new glfsr(mask, seed);
}
-glfsr_source_b_impl::~glfsr_source_b_impl() { delete d_glfsr; }
+glfsr_source_b_impl::~glfsr_source_b_impl() {}
-uint32_t glfsr_source_b_impl::mask() const { return d_glfsr->mask(); }
+uint32_t glfsr_source_b_impl::mask() const { return d_glfsr.mask(); }
int glfsr_source_b_impl::work(int noutput_items,
gr_vector_const_void_star& input_items,
@@ -59,7 +56,7 @@ int glfsr_source_b_impl::work(int noutput_items,
int i;
for (i = 0; i < noutput_items; i++) {
- out[i] = d_glfsr->next_bit();
+ out[i] = d_glfsr.next_bit();
d_index++;
if (d_index > d_length && d_repeat == false)
break;
diff --git a/gr-digital/lib/glfsr_source_b_impl.h b/gr-digital/lib/glfsr_source_b_impl.h
index 1f5b27bc39..95633be95c 100644
--- a/gr-digital/lib/glfsr_source_b_impl.h
+++ b/gr-digital/lib/glfsr_source_b_impl.h
@@ -20,7 +20,7 @@ namespace digital {
class glfsr_source_b_impl : public glfsr_source_b
{
private:
- glfsr* d_glfsr;
+ glfsr d_glfsr;
bool d_repeat;
uint32_t d_index;
diff --git a/gr-digital/lib/glfsr_source_f_impl.cc b/gr-digital/lib/glfsr_source_f_impl.cc
index ad4fc96fd2..41559b570e 100644
--- a/gr-digital/lib/glfsr_source_f_impl.cc
+++ b/gr-digital/lib/glfsr_source_f_impl.cc
@@ -33,6 +33,7 @@ glfsr_source_f_impl::glfsr_source_f_impl(unsigned int degree,
: sync_block("glfsr_source_f",
io_signature::make(0, 0, 0),
io_signature::make(1, 1, sizeof(float))),
+ d_glfsr(mask ? mask : glfsr::glfsr_mask(degree), seed),
d_repeat(repeat),
d_index(0),
d_length((((uint32_t)1) << degree) - 1)
@@ -40,15 +41,11 @@ glfsr_source_f_impl::glfsr_source_f_impl(unsigned int degree,
if (degree < 1 || degree > 32)
throw std::runtime_error(
"glfsr_source_f_impl: degree must be between 1 and 32 inclusive");
-
- if (mask == 0)
- mask = glfsr::glfsr_mask(degree);
- d_glfsr = new glfsr(mask, seed);
}
-glfsr_source_f_impl::~glfsr_source_f_impl() { delete d_glfsr; }
+glfsr_source_f_impl::~glfsr_source_f_impl() {}
-uint32_t glfsr_source_f_impl::mask() const { return d_glfsr->mask(); }
+uint32_t glfsr_source_f_impl::mask() const { return d_glfsr.mask(); }
int glfsr_source_f_impl::work(int noutput_items,
gr_vector_const_void_star& input_items,
@@ -60,7 +57,7 @@ int glfsr_source_f_impl::work(int noutput_items,
int i;
for (i = 0; i < noutput_items; i++) {
- out[i] = (float)d_glfsr->next_bit() * 2.0 - 1.0;
+ out[i] = (float)d_glfsr.next_bit() * 2.0 - 1.0;
d_index++;
if (d_index > d_length && d_repeat == false)
break;
diff --git a/gr-digital/lib/glfsr_source_f_impl.h b/gr-digital/lib/glfsr_source_f_impl.h
index 0f90a9ce63..9975b5c27f 100644
--- a/gr-digital/lib/glfsr_source_f_impl.h
+++ b/gr-digital/lib/glfsr_source_f_impl.h
@@ -20,7 +20,7 @@ namespace digital {
class glfsr_source_f_impl : public glfsr_source_f
{
private:
- glfsr* d_glfsr;
+ glfsr d_glfsr;
bool d_repeat;
uint32_t d_index;