On Wednesday 28 January 2009 21:40:35 Stefan Bruens wrote: sorry, forgot to attach something ...
-- Stefan Brüns / Bergstraße 21 / 52062 Aachen phone: +49 241 53809034 mobile: +49 151 50412019
=== added file 'pmt/src/lib/simplevector.hpp'
--- pmt/src/lib/simplevector.hpp 1970-01-01 00:00:00 +0000
+++ pmt/src/lib/simplevector.hpp 2009-01-28 18:37:52 +0000
@@ -0,0 +1,68 @@
+#ifndef __SIMPLE_VECTOR__
+#define __SIMPLE_VECTOR__
+
+#include <string.h>
+#include <complex>
+
+template <typename T>
+class simplevector
+{
+public:
+ simplevector() : start(0), end(0) {};
+ simplevector(const size_t& size) { start = new T[size]; end=start+size; }
+ simplevector(const size_t& size, const T& fill);
+ ~simplevector() { delete[] start; }
+
+ size_t size() const { return end-start; }
+ T& at(const size_t& k) const;
+ T& operator[](const size_t& k) const { return *(start+k); }
+
+protected:
+ T* start;
+ T* end;
+};
+
+template <>
+inline simplevector<std::complex<double> >::simplevector(const size_t& size, const std::complex<double>& fill)
+{
+ start = new std::complex<double>[size];
+ end=start+size;
+ for(size_t i = 0; i < size; ++i) start[i] = fill;
+}
+
+template <>
+inline simplevector<std::complex<float> >::simplevector(const size_t& size, const std::complex<float>& fill)
+{
+ start = new std::complex<float>[size];
+ end=start+size;
+ for(size_t i = 0; i < size; ++i) start[i] = fill;
+}
+
+template <>
+inline simplevector<char>::simplevector(const size_t& size, const char& fill)
+{
+ start = new char[size];
+ end=start+size;
+ memset(start, fill, size*sizeof(char));
+}
+
+template <typename T>
+simplevector<T>::simplevector(const size_t& size, const T& fill)
+{
+ start = new T[size];
+ end=start+size;
+ if(fill == 0) { memset(start, 0, size*sizeof(T));}
+ else {
+ for(size_t i = 0; i < size; ++i) start[i] = fill;
+ }
+}
+
+template <typename T>
+T&
+simplevector<T>::at(const size_t& k) const
+{
+ assert(start+k < end);
+ return *(start+k);
+}
+
+#endif // __SIMPLE_VECTOR__
=== modified file 'pmt/src/lib/unv_template.cc.t'
--- pmt/src/lib/unv_template.cc.t 2008-06-26 17:17:15 +0000
+++ pmt/src/lib/unv_template.cc.t 2009-01-28 18:37:52 +0000
@@ -9,12 +9,13 @@
}
+p...@tag@vector::p...@tag@vector(size_t k)
+ : d_v(k)
+{ }
+
p...@tag@vector::p...@tag@vector(size_t k, @TYPE@ fill)
- : d_v(k)
-{
- for (size_t i = 0; i < k; i++)
- d_v[i] = fill;
-}
+ : d_v(k, fill)
+{ }
p...@tag@vector::p...@tag@vector(size_t k, const @TYPE@ *data)
: d_v(k)
=== modified file 'pmt/src/lib/unv_template.h.t'
--- pmt/src/lib/unv_template.h.t 2008-06-26 17:17:15 +0000
+++ pmt/src/lib/unv_template.h.t 2009-01-28 18:37:52 +0000
@@ -5,9 +5,11 @@
class p...@tag@vector : public pmt_uniform_vector
{
- std::vector< @TYPE@ > d_v;
+ // std::vector< @TYPE@ > d_v;
+ simplevector< @TYPE@ > d_v;
public:
+ p...@tag@vector(size_t k);
p...@tag@vector(size_t k, @TYPE@ fill);
p...@tag@vector(size_t k, const @TYPE@ *data);
// ~p...@tag@vector();
=== modified file 'pmt/src/lib/generate_unv.py'
--- pmt/src/lib/generate_unv.py 2007-07-21 02:44:38 +0000
+++ pmt/src/lib/generate_unv.py 2009-01-28 20:58:05 +0000
@@ -80,6 +80,11 @@
"""
+h_includes = """
+#include "simplevector.hpp"
+
+"""
+
qa_includes = """
#include <qa_pmt_unv.h>
#include <cppunit/TestAssert.h>
@@ -128,6 +133,7 @@
output_filename = 'pmt_unv_int.h'
output = open(output_filename, 'w')
output.write(header)
+ output.write(h_includes)
output.write(guard_head(output_filename))
for tag, typ in unv_types:
d = { 'TAG' : tag, 'TYPE' : typ }
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Discuss-gnuradio mailing list [email protected] http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
