// dl_list_private.h - declarations that are not for public use

#ifndef __dl_list_private_h__
#define __dl_list_private_h__

// private access functions for DLList

void setFirstInDLList(DLList *list,DLListNode *node);
DLListNode *getFirstFromDLList(DLList *list);
void setLastInDLList(DLList *list,DLListNode *node);
DLListNode *getLastFromDLList(DLList *list);

// list node and access functions for it (completely private!)

struct _DLListNode_
{
  void *content;
  DLListNode *previous;
  DLListNode *next;
};

DLListNode *newDLListNode(void *content);
void deleteDLListNode(DLListNode *node);
void setNextInDLListNode(DLListNode *node,DLListNode *next);
DLListNode *getNextFromDLListNode(DLListNode *node);
void setPreviousInDLListNode(DLListNode *node,
                             DLListNode *next);
DLListNode *getPreviousFromDLListNode(DLListNode *node);
void setContentInDLListNode(DLListNode *node,void *content);
void* getContentFromDLListNode(DLListNode *node);

#endif // __dl_list_private_h__

