head	1.5;
access;
symbols
	r0_10:1.5
	Eglin_alpha_1:1.5;
locks; strict;
comment	@// @;


1.5
date	93.05.27.11.22.49;	author thoth;	state Exp;
branches;
next	1.4;

1.4
date	93.04.17.18.45.18;	author thoth;	state Exp;
branches;
next	1.3;

1.3
date	93.02.20.12.43.39;	author thoth;	state Exp;
branches;
next	1.2;

1.2
date	93.01.19.14.56.47;	author jnw;	state Exp;
branches;
next	1.1;

1.1
date	92.11.12.17.05.36;	author jnw;	state Exp;
branches;
next	;


desc
@Created this new value iterator
@


1.5
log
@Copyright Notices
@
text
@// Emacs: -*- C++ -*-

//
//	Copyright 1993, Center for Computer Vision and Visualization,
//	University of Florida.  All rights reserved.
//


// $Log:	VectorDIVIter.h,v $
// Revision 1.4  93/04/17  18:45:18  thoth
// Iterator support is no longer based on a switch statement.  We now
// use a virtual method.  The user can now provide faster iterators.
// 
// Revision 1.3  93/02/20  12:43:39  thoth
// There are now two sorts of BaseDIIters.
// 
// Revision 1.2  93/01/19  14:56:47  jnw
// Modified to support IA_ naming convention
// 
// Revision 1.1  92/11/12  17:05:36  jnw
// Initial revision
// 
// Revision 1.1  92/10/05  11:46:15  jnw
// Initial revision
// 

#ifndef VectorDIVIter_h_
#define VectorDIVIter_h_

#include <stdlib.h>
#include "IPSIter.h"
#include "BaseDIIter.h"
#include "VectorDI.h"

template <class T>
class IA_VectorDIVIter: public IA_BaseDIVIter<T> {
protected:
    // num_left stores the number of points in this image\'s PointSet
    // remaining to be iterated.
    int num_left;

    // index stores the index of the current point within the value vector
    int index;

    // vdip points at the base image over which we're iterating.
    IA_VectorDI<T> *vdip() const { return (IA_VectorDI<T> *)domain; }

public:

    IA_VectorDIVIter(const IA_VectorDI<T> *);
    IA_VectorDIVIter(const IA_VectorDIVIter&);

    ~IA_VectorDIVIter() {}

    IA_BaseDIVIter<T> * clone_self() { return new IA_VectorDIVIter(*this); }
    int next(T&);
    void reset() { this->num_left = this->domain->domain().card();
		   this->index =0; }

    IA_BaseDI<T> *domain_() const { return this->domain; }
};

#endif
@


1.4
log
@Iterator support is no longer based on a switch statement.  We now
use a virtual method.  The user can now provide faster iterators.
@
text
@d3 6
d10 4
@


1.3
log
@There are now two sorts of BaseDIIters.
@
text
@d4 3
d35 2
a36 2
    // bdip points at the base image over which we're iterating.
    IA_VectorDI<T> *bdip;
d40 1
a40 1
    IA_VectorDIVIter(const IA_DiscreteImage<T> &, IA_VectorDI<T> *);
d47 2
a48 1
    void reset() { this->num_left = this->domain.card(); this->index =0; }
d50 1
a50 1
    IA_DiscreteImage<T> domain_() const { return this->domain; }
@


1.2
log
@Modified to support IA_ naming convention
@
text
@d4 3
d23 1
a23 1
class IA_VectorDIVIter: public IA_BaseDIIter<T> {
d42 1
a42 1
    IA_BaseDIIter<T> * clone_self() { return new IA_VectorDIVIter(*this); }
a43 4
    int next(T&, IA_IntPoint&) {
	abort();
	return 0;
    }
@


1.1
log
@Initial revision
@
text
@d4 3
d20 1
a20 1
class VectorDIVIter: public BaseDIIter<T> {
d30 1
a30 1
    VectorDI<T> *bdip;
d34 2
a35 2
    VectorDIVIter(const DiscreteImage<T> &, VectorDI<T> *);
    VectorDIVIter(const VectorDIVIter&);
d37 1
a37 1
    ~VectorDIVIter() {}
d39 1
a39 1
    BaseDIIter<T> * clone_self() { return new VectorDIVIter(*this); }
d41 1
a41 1
    int next(T&, IntPoint&) {
d47 1
a47 1
    DiscreteImage<T> domain_() const { return this->domain; }
@
