summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Interleaver.cpp20
-rw-r--r--src/Interleaver.h5
2 files changed, 9 insertions, 16 deletions
diff --git a/src/Interleaver.cpp b/src/Interleaver.cpp
index 7d69810..cf0d235 100644
--- a/src/Interleaver.cpp
+++ b/src/Interleaver.cpp
@@ -28,23 +28,17 @@
#endif // _WIN32
-Interleaver::Interleaver(unsigned short I, unsigned short M, bool reverse)
+Interleaver::Interleaver(unsigned short I, unsigned short M, bool reverse) :
+ I(I),
+ M(M),
+ N(I * M),
+ memSize((this->N * I) - 1)
{
- this->I = I;
- this->M = M;
- this->N = I * M;
- this->memSize = (this->N * I) - 1;
- this->mem = new char[memSize];
+ mem.resize(memSize);
setReverse(reverse);
}
-Interleaver::~Interleaver()
-{
- delete []mem;
-}
-
-
void Interleaver::setReverse(bool state)
{
reverse = state;
@@ -56,7 +50,7 @@ void Interleaver::reset()
{
j = 0;
index = 0;
- bzero(mem, memSize);
+ memset(mem.data(), 0, memSize * sizeof(mem[0]));
}
diff --git a/src/Interleaver.h b/src/Interleaver.h
index 3afe8f0..2a32c47 100644
--- a/src/Interleaver.h
+++ b/src/Interleaver.h
@@ -26,13 +26,12 @@
# include "config.h"
#endif
+#include <vector>
class Interleaver
{
public:
Interleaver(unsigned short I, unsigned short M, bool reverse = false);
- Interleaver(Interleaver& clone);
- virtual ~Interleaver();
void setReverse(bool state);
void encode(void* data, unsigned long size);
@@ -48,7 +47,7 @@ private:
unsigned long j;
unsigned long index;
unsigned long memSize;
- char* mem;
+ std::vector<char> mem;
bool reverse;
};