New plugins system
[opsoft.git] / gclib2 / modules / Core / hv.h
blobf71f3ef688ef227dd722098a12e2317453140df1
1 /*
2 * (c) Oleg Puchinin 2007
3 * graycardinalster@gmail.com
5 */
7 #ifndef DEFINE_HV_H
8 #define DEFINE_HV_H
10 /// Класс - хэш с сортировкой ключей.
11 class HV
13 public:
14 HV ();
15 ~HV ();
17 /* v2.0 */
18 char * get (char * key) ;
19 char * set (char * key, char * value) ;
21 inline void sort () {
22 do_sort (false);
24 inline void clean () {
25 do_sort (true);
27 inline int autoSort () {
28 return dfa;
30 inline int setAutoSort (int d_set) {
31 dfa = d_set;
32 return dfa;
34 inline bool autoCheck () {
35 return b_ac;
37 inline bool setAutoCheck (bool d_set) {
38 b_ac = d_set;
39 return b_ac;
41 inline EArray * sortedElements () {
42 return elements;
44 inline EArray * dirtyElements () {
45 return dirty_elements;
47 /***/
49 /* v2.2 */
50 List * keys ();
51 List * values ();
52 int from_file (char *f_name);
53 void foreach (Dhash_f f);
54 void dump ();
56 char * operator [] (char *S);
57 /**/
59 private:
60 dkey_t * __find_item (char * key) ;
61 dkey_t * __find_dirty_item (char * key) ;
62 void do_sort (bool b_clean) ;
63 char * pack_item (char * key, char * value) ;
64 char * set_item_value (char * pack, char * value) ;
65 char * get_item (char * key) ;
66 dkey_t * unpackItem (char * item, dkey_t * data);
67 List * keys_or_values (bool val);
69 char ** heap;
70 int dfa; // Dirty elements before autosorting.
71 bool b_ac;
72 EArray * elements;
73 EArray * dirty_elements;
76 #endif