/* ******************************************************************************* * Copyright (c) 1996 Martin Poole * ******************************************************************************* ** ** WARNING !! WARNING !! WARNING !! WARNING !! WARNING !! WARNING !! ** ** Any changes to be made to this file should first be checked with ** mplib1 source control for library integrity. ** ** mplib1 source control can be reached at mplib1@quatermass.co.uk ** * * $Source$ * $Author$ * $Date$ * $Revision$ * Purpose : min list handling * ******************************************************************************* * * Change History * * $Log$ * ******************************************************************************* */ #ident "$Header$" /* ------------------------------------------------------------------ Include files ------------------------------------------------------------------ */ #include #include /* ------------------------------------------------------------------ defines ------------------------------------------------------------------ */ #ifndef NULL #define NULL ((void *)0) #endif /* ------------------------------------------------------------------ Code starts here ------------------------------------------------------------------ */ int Init_Min_Node( Min_Node *node ) { INIT_MIN_NODE(node); return(0); } int Init_Min_List( Min_List *list ) { list->ln_Head.ln_Pred = NULL; list->ln_Head.ln_Succ = &list->ln_Tail; list->ln_Tail.ln_Pred = &list->ln_Head; list->ln_Tail.ln_Succ = NULL; return(0); } int Remove_Min_Node ( Min_Node *node ) { if (node->ln_Succ) node->ln_Succ->ln_Pred = node->ln_Pred; if (node->ln_Pred) node->ln_Pred->ln_Succ = node->ln_Succ; return(0); } int Add_To_Min_Head ( Min_List *list, Min_Node *node ) { /* First remove node from previous list (if any) */ Remove_Min_Node( node ); /* Now set up Node in new position */ ADD_MIN_AFTER( &list->ln_Head, node ); return(0); } int Add_To_Min_Tail ( Min_List *list, Min_Node *node ) { /* First remove node from previous list (if any) */ Remove_Min_Node( node ); /* Now set up Node in new position */ ADD_MIN_BEFORE( &list->ln_Tail, node ); return(0); } int Add_Min_After ( Min_Node *node1, Min_Node *node2 ) { /* First remove node from previous list (if any) */ Remove_Min_Node( node2 ); /* Now set up Node in new position */ ADD_MIN_AFTER( node1, node2 ); return(0); } int Add_Min_Before ( Min_Node *node1, Min_Node *node2 ) { /* First remove node from previous list (if any) */ Remove_Min_Node( node2 ); /* Now set up Node in new position */ ADD_MIN_BEFORE( node1, node2 ); return(0); } /* -- End of File -- */