PLearn 0.1
Public Member Functions | Private Attributes
PLearn::TTensorElementIterator< T > Class Template Reference

#include <Tensor.h>

Collaboration diagram for PLearn::TTensorElementIterator< T >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 TTensorElementIterator ()
 TTensorElementIterator (TTensor< T > *tensor_, const IVec &pos)
TTensorElementIterator< T > & operator++ ()
T * operator-> () const
T & operator* () const
bool operator== (const TTensorElementIterator &other)
bool operator!= (const TTensorElementIterator &other)
IVec position () const
bool end () const

Private Attributes

TTensor< T > * tensor
IVec position_
IVec stride_minus_width
T * ptr
bool end_met

Detailed Description

template<class T>
class PLearn::TTensorElementIterator< T >

Definition at line 57 of file Tensor.h.


Constructor & Destructor Documentation

template<class T>
PLearn::TTensorElementIterator< T >::TTensorElementIterator ( ) [inline]

Definition at line 72 of file Tensor.h.

        :tensor(NULL),ptr(NULL),end_met(false)
    {
    }
template<class T>
PLearn::TTensorElementIterator< T >::TTensorElementIterator ( TTensor< T > *  tensor_,
const IVec pos 
) [inline]

Definition at line 77 of file Tensor.h.

References i.

        :tensor(tensor_),position_(pos),end_met(false)
    {
        ptr = tensor->data()+tensor->linearIndex(pos);
        stride_minus_width.resize(tensor->ndims());
        for(int i=0;i<(signed)tensor->ndims()-1;i++)
            stride_minus_width[i] = tensor->stride_[i+1] - tensor->stride_[i] * tensor->width_[i];
    }

Member Function Documentation

template<class T>
bool PLearn::TTensorElementIterator< T >::end ( ) const [inline]

Definition at line 102 of file Tensor.h.

{return end_met;}
template<class T>
bool PLearn::TTensorElementIterator< T >::operator!= ( const TTensorElementIterator< T > &  other) [inline]

Definition at line 97 of file Tensor.h.

References PLearn::TTensorElementIterator< T >::ptr.

    { return ptr!=other.ptr; }
template<class T>
T& PLearn::TTensorElementIterator< T >::operator* ( ) const [inline]

Definition at line 91 of file Tensor.h.

    { return *ptr; }
template<class T >
TTensorElementIterator< T > & PLearn::TTensorElementIterator< T >::operator++ ( ) [inline]

Definition at line 405 of file Tensor.h.

References i.

{ 
    ptr+=tensor->stride_[0];
    position_[0]++;
    // if we hit the end of the first dimension
    // we need to compute a few things
    if(position_[0]==tensor->width_[0])
    {
        bool found=false;
        int idx=0;
        // find the lowest index of the position vector we can increment
        // a.k.a get the next element of the tensor
        while(!found && idx<(signed int)(tensor->ndims()-1))
        {
            idx++;
            found = position_[idx]<tensor->width_[idx]-1;
        }
        if(found)
        {
            position_[idx]++;
            for(int i=0;i<idx;i++)
            {
                ptr+=stride_minus_width[i];
                position_[i]=0;
            }      
        }
        else 
            // all elements of the tensor have been visited           
            end_met=true;
    }
    return *this;
}
template<class T>
T* PLearn::TTensorElementIterator< T >::operator-> ( ) const [inline]

Definition at line 88 of file Tensor.h.

    { return ptr; }
template<class T>
bool PLearn::TTensorElementIterator< T >::operator== ( const TTensorElementIterator< T > &  other) [inline]

Definition at line 94 of file Tensor.h.

References PLearn::TTensorElementIterator< T >::ptr.

    { return ptr==other.ptr; }
template<class T>
IVec PLearn::TTensorElementIterator< T >::position ( ) const [inline]

Definition at line 100 of file Tensor.h.

{return position_;}

Member Data Documentation

template<class T>
bool PLearn::TTensorElementIterator< T >::end_met [private]

Definition at line 68 of file Tensor.h.

template<class T>
IVec PLearn::TTensorElementIterator< T >::position_ [private]

Definition at line 62 of file Tensor.h.

template<class T>
T* PLearn::TTensorElementIterator< T >::ptr [private]
template<class T>
IVec PLearn::TTensorElementIterator< T >::stride_minus_width [private]

Definition at line 65 of file Tensor.h.

template<class T>
TTensor<T>* PLearn::TTensorElementIterator< T >::tensor [private]

Definition at line 61 of file Tensor.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines