toon-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Toon-members] TooN/internal vector.hh


From: Edward Rosten
Subject: [Toon-members] TooN/internal vector.hh
Date: Fri, 09 Jan 2009 15:11:50 +0000

CVSROOT:        /cvsroot/toon
Module name:    TooN
Changes by:     Edward Rosten <edrosten>        09/01/09 15:11:50

Modified files:
        internal       : vector.hh 

Log message:
        Added some missing Precision bits.
        
        Added some more slice bits.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/vector.hh?cvsroot=toon&r1=1.2&r2=1.3

Patches:
Index: vector.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/vector.hh,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- vector.hh   9 Jan 2009 14:45:02 -0000       1.2
+++ vector.hh   9 Jan 2009 15:11:50 -0000       1.3
@@ -20,9 +20,8 @@
 template <int Size, int Type, typename Precision>
 class VBase;
 
-template <typename Precision>
-class SDVBase;
-
+template<int Stride, typename Precision> 
+class SDVBase; //Sliced Dynamic VBase. No ownership of data, Static stride.
 
 template<int Size, typename Precision>
 class VBase<Size, 0, Precision> {
@@ -40,7 +39,7 @@
   
   // constructor from arbitrary vector
   template<int Size2, class Base2>
-  inline VBase(const Vector<Size2,Base2>& from){}
+  inline VBase(const Vector<Size2, Precision, Base2>& from){}
 
   Precision* data(){return my_data;}
   const Precision* data() const {return my_data;}
@@ -58,13 +57,13 @@
   }
 
   template <int Start, int Length>
-  Vector<Length, Precision, SVBase<Length,1> >
+  Vector<Length, Precision, SVBase<Length,1,Precision> >
   slice(){
     Internal::CheckSlice<Size, Start, Length>::check();
     return Vector<Length, Precision, SVBase<Length,1,Precision> 
>(&(my_data[Start]));
   }
 
-  Vector<-1, Precision, SDVBase>
+  Vector<-1, Precision, SDVBase<1, Precision> >
   slice(int start, int length);
 
 private:
@@ -72,7 +71,7 @@
 };
 
 template<int Size, typename Precision>
-class VBase<Size,1>{
+class VBase<Size,1, Precision>{
 public:
 
   // Constructors
@@ -111,7 +110,7 @@
   }
 
   Precision* data(){return my_data;}
-  const Precsion* data() const {return my_data;}
+  const Precision* data() const {return my_data;}
   
   static int size(){return Size;}
   static int stride(){return 1;}
@@ -124,11 +123,14 @@
   }
 
   template <int Start, int Length>
-  Vector<Length, Precision, SVBase<Length,1> >
+  Vector<Length, Precision, SVBase<Length,1, Precision> >
   slice(){
     return Vector<Length, Precision, SVBase<Length,1,Precision> 
>(&(my_data[Start]));
   }
 
+  Vector<-1, Precision, SDVBase<1, Precision> >
+  slice(int start, int length);
+
 private:
   Precision* const my_data;
 };
@@ -161,7 +163,7 @@
   }
 
   template <int Start, int Length>
-  Vector<Length, Precision, SVBase<Length,Stride> >
+  Vector<Length, Precision, SVBase<Length,Stride,Precision> >
   slice(){
     return Vector<Length, Precision, SVBase<Length,1,Precision> 
>(&(my_data[Start*Stride]));
   }
@@ -204,7 +206,7 @@
 
   // constructor from arbitrary vector
   template<int Size2, class Base2>
-  inline DVBase(const Vector<Size2,Base2>& from):
+  inline DVBase(const Vector<Size2, Precision, Base2>& from):
     my_data(new Precision[from.size()]),
     my_size(from.size()) {
   }
@@ -245,7 +247,7 @@
 
   SDVBase(const SDVBase& from)
     : my_data(from.my_data),
-      my_size(from.my_size),
+      my_size(from.my_size){
   }
 
   Precision* data(){return my_data;}
@@ -276,7 +278,7 @@
     my_stride=stride_in;
   };
 
-  SSDVBase(const SDVBase& from)
+  SSDVBase(const SSDVBase& from)
     : my_data(from.my_data),
       my_size(from.my_size),
       my_stride(from.my_stride){
@@ -291,6 +293,7 @@
   Precision& operator[](int i){
     return my_data[i*my_stride];
   }
+
   const Precision& operator[](int i) const {
     return my_data[i*my_stride];
   }
@@ -364,7 +367,7 @@
   }
 
   // operator = from copy
-  inline Vector<Size,Base >& operator= (const Vector& from){
+  inline Vector& operator= (const Vector& from){
     SizeMismatch<Size,Size>::test(Base::size(), from.size());
     const int s=Base::size();
     for(int i=0; i<s; i++){
@@ -386,4 +389,18 @@
 
 };
 
-#endif
+////////////////////////////////////////////////////////////////////////////////
+//
+// Fill in function calls, now everything is visible
+
+template<int Size, typename Precision>
+Vector<-1, Precision, SDVBase<1, Precision> > VBase<Size, 0, Precision>:: 
slice(int start, int length){
+  Internal::CheckSlice<>::check(Size, start, length);
+  return Vector<-1, Precision, SDVBase<1, Precision> >(my_data + start, 
length);
+}
+
+template<int Size, typename Precision>
+Vector<-1, Precision, SDVBase<1, Precision> > VBase<Size, 1, Precision>:: 
slice(int start, int length){
+  Internal::CheckSlice<>::check(Size, start, length);
+  return Vector<-1, Precision, SDVBase<1, Precision> >(my_data + start, 
length);
+}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]