2 * (c) Oleg Puchinin 2005,2006
3 * graycardinalster@gmail.com
5 * June 2006 - [DEPRECATED] Use EHash instead.
8 #include <gclib/gclib.h>
9 #include <gclib/gclib_c.h>
11 DHash::DHash (int asize
)
18 keys
= CNEW(char *, size
);
19 values
= CNEW(char *, size
);
20 types
= CNEW(int, size
);
21 memset (keys
, 0, sizeof (char *) * size
);
22 memset (values
, 0, sizeof (char *) * size
);
23 memset (types
, 0, (sizeof (int)) * size
);
30 for (i
= 0; i
< size
; i
++) {
39 bool DHash::set (char * KEY
, char * VALUE
, int TYPE
)
43 for (i
= 0; i
< size
; i
++) {
44 if (keys
[i
] && EQ (keys
[i
], KEY
)) {
51 for (i
= 0; i
< size
; i
++) {
52 if (keys
[i
] == NULL
) {
53 keys
[i
] = strdup (KEY
);
63 bool DHash::set (char * KEY
, long VALUE
, int TYPE
)
65 return set (KEY
, LPCHAR (VALUE
), DHASH_INT
);
68 char * DHash::get (char * KEY
)
72 for (i
= 0; i
< size
; i
++) {
73 if (keys
[i
] && EQ (keys
[i
], KEY
)) {
81 char * DHash::del (char * KEY
)
85 for (i
= 0; i
< size
; i
++) {
86 if (keys
[i
] && EQ (keys
[i
], KEY
)) {
95 void DHash::foreach (Dhash_f func
)
99 for (i
= 0; i
< size
; i
++)
100 func (keys
[i
], values
[i
]);
103 int DHash::from_file (char *f_name
)
110 m_buf
= CNEW (char, 4096);
111 f
= fopen (f_name
, "r");
116 if (fgets (m_buf
, 256, f
) == NULL
)
123 d_key
= strchr (m_buf
, '=');
129 while ((*(--d_key
) == ' ' || *d_key
== '\t')
133 while (*(++d_set
) && (*d_set
== ' ' || *d_set
== '\t'));
135 set (m_buf
, strdup (d_set
));