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 }

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to