00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef EXPRESSO_FIXITERATOR_HDR
00022 #define EXPRESSO_FIXITERATOR_HDR
00023
00024 namespace esso {
00025
00026 template<int N, class T0>
00027 class Array<N,Iterator<Fix<T0> > > {
00028 typedef Fix<T0> Type;
00029 public:
00030 typedef typename Array<N,Type>::T T;
00031 typedef Array<N,Iterator<Type> > IteratorType;
00032 enum { hasdata=0 };
00033
00034 inline IXTYPE L(int i) const { return src.L(i); }
00035 inline IXTYPE U(int i) const { return src.U(i); }
00036 inline IXTYPE Len(int i) const { return U(i)-L(i); }
00037 inline void Step(int n) { origo+=src.Stride(n); }
00038 inline void Step(int n, IXTYPE i) { origo+=src.Stride(n)*i; }
00039 inline T CGet() const { return *origo; }
00040 inline T CGet(IXTYPE i) const { return origo[i]; std::cout<<"Y";}
00041 inline T & Get() const { return *origo; }
00042 inline T & Get(IXTYPE i) const { return origo[i]; std::cout<<"X";}
00043
00044 inline Array(const Array<N,Type> &src0): src(src0), origo(src0.Origo()) {}
00045 private:
00046 const Array<N,Type> & src;
00047 T * origo;
00048 };
00049 }
00050 #endif