home *** CD-ROM | disk | FTP | other *** search
- ////////////////////////////////////////////////////////////////////////
- // DIVE Laboratories, Inc.
- // Copyright(c) 1995
- //**********************************************************************
- // NOTICE: THIS [PROGRAM, DATABASE, DOCUMENT].CONSISTS OF TRADE SECRETS
- // THAT ARE THE PROPERTY OF DIVE LABORATORIES, INC. THE CONTENTS MAY NOT
- // BE USED OR DISCLOSED WITHOUT EXPRESS WRITTEN PERMISSION OF THE OWNER.
- //**********************************************************************
- // FILE: SLINK.HPP
- // ** VERSION: 2.0 ** ALPHA
- //
- // DESCRIPTION
- //
- // Author: Brian D. Green
- //
- // Modification History:
- // 12/22/93 Created
- // 11/21/95 Version 2.0
- // 12/01/95 cat, += added
- // 12/03/95 find( void* ) added
- //
- ////////////////////////////////////////////////////////////////////////
-
- #ifndef _SLINK2_HPP
- #define _SLINK2_HPP
- #include <stddef.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
-
- #ifndef TRUE
- #define FALSE 0
- #define TRUE 1
- #endif
-
- #define DEFAULT -1
-
- ////////////////////////////////////////////////////////////////////////
- // SINGLE LINK NODE CLASS
- //
- ////////////////////////////////////////////////////////////////////////
-
- class sLinkNodeClass {
-
- private:
-
- static int nTotal;
- static int nAlloc;
- static int nDelete;
-
- #ifdef SLINK_DEBUG
- char tword[64];
- #endif
-
- public:
-
- int key;
- void *obj;
- sLinkNodeClass *next;
-
- void stats( void );
-
- sLinkNodeClass( void* dataOBJ, int listKEY = DEFAULT );
- sLinkNodeClass();
- ~sLinkNodeClass();
- };
-
-
- ////////////////////////////////////////////////////////////////////////
- // DOUBLE LINK NODE CLASS
- //
- ////////////////////////////////////////////////////////////////////////
-
- class dLinkNodeClass {
-
- private:
-
- static int nTotal;
-
- public:
-
- int key;
- void *obj;
- dLinkNodeClass *next, *last;
-
- void statistics( void );
-
- dLinkNodeClass( void* dataOBJ, int listKEY = DEFAULT );
- dLinkNodeClass();
- ~dLinkNodeClass();
- };
-
-
- ////////////////////////////////////////////////////////////////////////
- // SINGLE LINK LIST CLASS
- //
- ////////////////////////////////////////////////////////////////////////
-
- class sLinkClass {
-
- protected:
-
- sLinkNodeClass *head, *tail, *listPtr;
-
- int listSZ;
-
-
- void remove( sLinkNodeClass *nPtr, sLinkNodeClass *pPtr );
-
-
- public:
-
- ///////////////////////////////////////////////
- // LIST MANIPULATION FCNS
-
- void next();
- void clear();
- void reset();
-
- int isEmpty();
- int atEnd();
- int length();
-
-
- ///////////////////////////////////////////////
- // DATA MANIPULATION FCNS
-
- int find( int listKEY );
- int find( void *obj );
- int findNext( int listKEY );
-
- int inList( int listKEY );
- int inList( void *listOBJ);
-
- int getKey();
-
- void *get( void );
- void *getData( void );
- void *getData( int listKEY);
- void *getDataK( int& listKEY );
-
-
- int iterate( void* );
- int iterate( void* listOBJ, int& listKEY );
-
-
- ///////////////////////////////////////////////
- // DELETION FCNS
-
- void remove( int listKEY=DEFAULT );
- void remove( void *listOBJ );
-
-
- ///////////////////////////////////////////////
- // LIST INSERTIONS:
- // add(): add node at the head of list
- // insert(): add node at current list position
- // append(): add node at tail of list
- // cat(): add list2 to end of the list
-
-
- void add( void *dataOBJ, int dataKEY = DEFAULT );
- void insert( void *dataOBJ, int dataKEY = DEFAULT );
- void append( void *dataOBJ, int dataKEY = DEFAULT );
-
- void cat( sLinkClass *list2 );
-
- void orderedAdd( void *dataOBJ, int dataKEY );
-
-
- ///////////////////////////////////////////////
- // PRINTING: debug only
-
- void printK( int entireList = TRUE );
-
-
- ///////////////////////////////////////////////
- // overloaded operators
-
- void operator=( sLinkClass* otherList );
- void operator+=( sLinkClass* otherList );
-
- ///////////////////////////////////////////////
- // constructors & destructors
-
- sLinkClass();
- sLinkClass( sLinkClass* otherList );
-
- ~sLinkClass();
- };
-
- #endif
- //**********************************************************************
- // NOTICE: THIS [PROGRAM, DATABASE, DOCUMENT].CONSISTS OF TRADE SECRETS
- // THAT ARE THE PROPERTY OF DIVE LABORATORIES, INC. THE CONTENTS MAY NOT
- // BE USED OR DISCLOSED WITHOUT EXPRESS WRITTEN PERMISSION OF THE OWNER.
- //**********************************************************************
-
-