33 #include <sys/types.h>
66 T *
Data() {
return keydata;}
68 unsigned long Hash() {
return keyhash;}
70 const char *
Key() {
return keyval;}
74 time_t
Time() {
return keytime;}
76 void Update(
int newcount, time_t newtime)
78 if (newtime) keytime = newtime;
81 int Same(
const unsigned long KeyHash,
const char *KeyVal)
82 {
return keyhash == KeyHash && !strcmp(keyval, KeyVal);}
94 else keyval = strdup(KeyVal);
96 else keydata = KeyData;
105 {
if (keydata && keydata != (T *)keyval
110 if (keyval) free((
void *)keyval);
112 keydata = 0; keyval = 0; keycount = 0;
119 unsigned long keyhash;
142 T *
Add(
const char *KeyVal, T *KeyData,
const int LifeTime=0,
154 T *
Find(
const char *KeyVal, time_t *KeyTime=0);
158 int Num() {
return hashnum;}
166 T *
Rep(
const char *KeyVal, T *KeyData,
const int LifeTime=0,
168 {
return Add(KeyVal, KeyData, LifeTime,
179 T *
Apply(
int (*func)(
const char *, T *,
void *),
void *Arg);
185 XrdOucHash(
int psize = 89,
int size=144,
int load=80);
192 const unsigned long khash,
196 unsigned long HashVal(
const char *KeyVal);
XrdOucHash_Item(unsigned long KeyHash, const char *KeyVal, T *KeyData, time_t KeyTime, XrdOucHash_Item< T > *KeyNext, XrdOucHash_Options KeyOpts)
int Same(const unsigned long KeyHash, const char *KeyVal)
void Update(int newcount, time_t newtime)
XrdOucHash_Item< T > * Next()
void SetNext(XrdOucHash_Item< T > *item)
int Del(const char *KeyVal, XrdOucHash_Options opt=Hash_default)
T * Rep(const char *KeyVal, T *KeyData, const int LifeTime=0, XrdOucHash_Options opt=Hash_default)
T * Apply(int(*func)(const char *, T *, void *), void *Arg)
T * Add(const char *KeyVal, T *KeyData, const int LifeTime=0, XrdOucHash_Options opt=Hash_default)
T * Find(const char *KeyVal, time_t *KeyTime=0)
XrdOucHash(int psize=89, int size=144, int load=80)