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:44:25 +0000

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

Modified files:
        internal       : vector.hh 

Log message:
        Complete set of slices.

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

Patches:
Index: vector.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/vector.hh,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- vector.hh   9 Jan 2009 15:40:22 -0000       1.6
+++ vector.hh   9 Jan 2009 15:44:24 -0000       1.7
@@ -239,7 +239,15 @@
     return my_data[i];
   }
 
-  // TODO slice still to go in here
+  template <int Start, int Length>
+  Vector<Length, Precision, SVBase<Length,1,Precision> >
+  slice(){
+    Internal::CheckSlice<>::check(my_size, Start, Length);
+    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;
@@ -275,6 +283,18 @@
     Internal::check_index(my_size, i);
     return my_data[i*Stride];
   }
+
+  template <int Start, int Length>
+  Vector<Length, Precision, SVBase<Length,Stride,Precision> >
+  slice(){
+    Internal::CheckSlice<>::check(my_size, Start, Length);
+    return Vector<Length, Precision, SVBase<Length,Stride,Precision> 
>(&(my_data[Start]));
+  }
+
+  Vector<-1, Precision, SDVBase<Stride, Precision> >
+  slice(int start, int length);
+
+
 private:
   Precision* const my_data;
   int my_size;
@@ -425,3 +445,18 @@
   Internal::CheckSlice<>::check(Size, start, length);
   return Vector<-1, Precision, SDVBase<Stride, Precision> >(my_data + start, 
length);
 }
+
+
+template<typename Precision>
+Vector<-1, Precision, SDVBase<1, Precision> > DVBase<Precision>:: slice(int 
start, int length){
+  Internal::CheckSlice<>::check(my_size, start, length);
+  return Vector<-1, Precision, SDVBase<1, Precision> >(my_data + start, 
length);
+}
+
+
+template<int Stride, typename Precision>
+Vector<-1, Precision, SDVBase<Stride, Precision> > SDVBase<Stride, 
Precision>:: slice(int start, int length){
+  Internal::CheckSlice<>::check(my_size, start, length);
+  return Vector<-1, Precision, SDVBase<Stride, Precision> >(my_data + start, 
length);
+}
+




reply via email to

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