Sophie

Sophie

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

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

// ==================================================================
// @(#)dllist.h
//
// Doubly-linked lists
//
// @author Bruno Quoitin (bqu@info.ucl.ac.be)
// @date 26/07/2006
// @lastdate 29/07/2006
// ==================================================================

#ifndef __DLLIST_H__
#define __DLLIST_H__

// -----[ SDLListItem ]----------------------------------------------
struct TDLListItem {
  struct TDLListItem * pPrevious;
  struct TDLListItem * pNext;
  void * pUserData;
};
typedef struct TDLListItem SDLListItem;

// -----[ FDLListForEach ]-------------------------------------------
typedef int (* FDLListForEach)(void * pUserData, void * pContext);
// -----[ FDLListDestroy ]-------------------------------------------
typedef void (* FDLListDestroy)(SDLListItem ** ppItem);

// -----[ SDLList ]--------------------------------------------------
typedef struct {
  SDLListItem * pRoot;
  FDLListDestroy fDestroy;
} SDLList;

// -----[ dllist_create ]--------------------------------------------
extern SDLList * dllist_create();
// -----[ dllist_destroy ]-------------------------------------------
extern void dllist_destroy(SDLList ** ppList);
// -----[ dllist_insert ]--------------------------------------------
extern int dllist_insert(SDLList * pList, unsigned int uIndex,
			 void * pUserData);
// -----[ dllist_remove ]--------------------------------------------
extern int dllist_remove(SDLList * pList, unsigned int uIndex);
// -----[ dllist_append ]--------------------------------------------
extern int dllist_append(SDLList * pList, void * pUserData);
// -----[ dllist_get ]-----------------------------------------------
extern int dllist_get(SDLList * pList, unsigned int uIndex,
		      void ** ppUserData);
// -----[ dllist_size ]-----------------------------------------------
extern unsigned int dllist_size(SDLList * pList);
// -----[ dllist_for_each ]------------------------------------------
extern int dllist_for_each(SDLList * pList, void * pContext,
			   FDLListForEach fForEach);

#endif /* __DLLIST_H__ */