Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > bd5e9d9a5b950be222fd802c845ee12b > files > 12

libgds-devel-1.4.5-1mdv2009.1.i586.rpm

// ==================================================================
// @(#)enumerator.h
//
// List enumerator object.
//
// @author Bruno Quoitin (bqu@info.ucl.ac.be)
// @date 10/08/2005
// @lastdate 10/08/2005
// ==================================================================

#ifndef __GDS_ENUMERATOR_H__
#define __GDS_ENUMERATOR_H__

typedef int (*FEnumeratorHasNext)(void * pContext);
typedef void * (*FEnumeratorGetNext)(void * pContext);
typedef void (*FEnumeratorDestroy)(void * pContext);

typedef struct {
  void * pContext;
  FEnumeratorHasNext fHasNext;
  FEnumeratorGetNext fGetNext;
  FEnumeratorDestroy fDestroy;
} SEnumerator;

// ----- enum_create ------------------------------------------------
extern SEnumerator * enum_create(void * pContext,
				 FEnumeratorHasNext fHasNext,
				 FEnumeratorGetNext fGetNext,
				 FEnumeratorDestroy fDestroy);
// ----- enum_destroy -----------------------------------------------
extern void enum_destroy(SEnumerator ** ppEnum);
// ----- enum_has_next ----------------------------------------------
extern int enum_has_next(SEnumerator * pEnum);
// ----- enum_get_next ----------------------------------------------
extern void * enum_get_next(SEnumerator * pEnum);

#endif /* __GDS_ENUMERATOR_H__ */