www.pudn.com > ccache.rar > node.h


/******************************************************************** 
	created:	2008/01/23 
	filename: 	node.h 
	author:		Lichuang 
                 
	purpose:     
*********************************************************************/ 
 
#ifndef __NODE_H__ 
#define __NODE_H__ 
 
#include "ccache.h" 
 
#ifndef USE_LIST 
enum color_t 
{ 
    RED, 
    BLACK 
}; 
#endif 
 
typedef struct node_t 
{ 
    int index; 
    int hashindex; 
    int keysize; 
    int datasize; 
    int lrunext, lruprev; 
 
#ifdef USE_LIST 
    int next, prev; 
#else     
    color_t color; 
    int parent, left, right; 
#endif 
 
    char end[0]; 
}node_t; 
 
int getfreenode(ccache_t* cache, cmpfun cmp, delfun fun); 
 
#define NODE_KEY(node)      ((char*)&((node)->end[0])) 
#define NODE_DATA(node)     ((char*)&((node)->end[0]) + (node)->keysize) 
 
#define NODE(cache, index)  (node_t*)((char*)&((cache)->data[0]) + (cache)->hashitemtolsize + (cache)->nodesize * (index))  
 
#endif /* __NODE_H__ */