[Top][All Lists]
[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);
+}
+