~ubuntu-branches/debian/squeeze/erlang/squeeze

« back to all changes in this revision

Viewing changes to erts/emulator/beam/erl_db_tree.h

  • Committer: Bazaar Package Importer
  • Author(s): Erlang Packagers, Sergei Golovan
  • Date: 2006-12-03 17:07:44 UTC
  • mfrom: (2.1.11 feisty)
  • Revision ID: james.westby@ubuntu.com-20061203170744-rghjwupacqlzs6kv
Tags: 1:11.b.2-4
[ Sergei Golovan ]
Fixed erlang-base and erlang-base-hipe prerm scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
#ifndef _DB_TREE_H
19
19
#define _DB_TREE_H
20
20
 
21
 
#include "erl_db_util.h" /* DbTerm */
 
21
#include "erl_db_util.h"
22
22
 
23
23
typedef struct tree_db_term {
24
24
    struct  tree_db_term *left, *right;  /* left and right child */
27
27
} TreeDbTerm;
28
28
 
29
29
typedef struct db_table_tree {
30
 
    Eterm  owner;             /* Pid of the creator */
31
 
    Eterm  the_name;          /* an atom   */
32
 
    Eterm  id;                /* atom | integer */
33
 
    Uint32 status;            /* bit masks defining type etc */
34
 
    int slot;                 /* slot in db_tables */
35
 
    int keypos;               /* defaults to 1 */
36
 
    int nitems;               /* Total number of items */
37
 
    Uint memory;              /* Total memory size */
38
 
    int kept_items;           /* Always empty for trees */
39
 
    Uint megasec,sec,microsec; /* Last fixation time */
40
 
    DbFixation *fixations;     /* List of processes who have fixed 
41
 
                                  the table */
 
30
    DbTableCommon common;
42
31
 
 
32
    /* Tree-specific fields */
43
33
    TreeDbTerm *root;         /* The tree root */
44
34
    TreeDbTerm **stack;       /* The first/next stack */
45
35
    Uint stack_pos;           /* Current position on stack */
46
36
    Uint slot_pos;            /* Current "slot" */
 
37
    Uint deletion;              /* Being deleted */
47
38
} DbTableTree;
48
39
 
49
40
/*
51
42
** table types. The process is always an [in out] parameter.
52
43
*/
53
44
void db_initialize_tree(void);
54
 
int db_create_tree(Process *p, DbTableTree *tb /* [in out] */);
55
 
int db_first_tree(Process *p, DbTableTree *tb /* [in out] */, 
56
 
                  Eterm *ret /* [out] */);
57
 
int db_next_tree(Process *p, DbTableTree *tb /* [in out] */, 
58
 
                 Eterm key /* [in] */,
59
 
                 Eterm *ret /* [out] */);
60
 
int db_last_tree(Process *p, DbTableTree *tb /* [in out] */, 
61
 
                  Eterm *ret /* [out] */);
62
 
int db_prev_tree(Process *p, DbTableTree *tb /* [in out] */, 
63
 
                 Eterm key /* [in] */,
64
 
                 Eterm *ret /* [out] */);
65
 
int db_update_counter_tree(Process *p, DbTableTree *tb /* [in out] */, 
66
 
                           Eterm key /* [in] */,
67
 
                           Eterm incr, /* [in] */
68
 
                           int warp, /* [in] */
69
 
                           int counterpos, /* [in] */
70
 
                           Eterm *ret /* [out] */);
71
 
int db_put_tree(Process *p, DbTableTree *tb /* [in out] */, 
72
 
                Eterm obj /* [in] */,
73
 
                Eterm *ret /* [out] */);
74
 
int db_get_tree(Process *p, DbTableTree *tb /* [in out] */, 
75
 
                Eterm key /* [in] */,
76
 
                Eterm *ret /* [out] */);
77
 
int db_member_tree(Process *p, DbTableTree *tb /* [in out] */, 
78
 
                   Eterm key /* [in] */,
79
 
                   Eterm *ret /* [out] */);
80
 
int db_get_element_tree(Process *p, DbTableTree *tb /* [in out] */, 
81
 
                        Eterm key /* [in] */,
82
 
                        int ndex, /* [in] */
83
 
                        Eterm *ret /* [out] */);
84
 
int db_erase_tree(Process *p, DbTableTree *tb /* [in out] */, 
85
 
                  Eterm key /* [in] */,
86
 
                  Eterm *ret /* [out] */);
87
 
int db_erase_object_tree(Process *p, DbTableTree *tb /* [in out] */, 
88
 
                         Eterm object /* [in] */,
89
 
                         Eterm *ret /* [out] */);
90
 
int db_slot_tree(Process *p, DbTableTree *tb /* [in out] */, 
91
 
                  Eterm slot_term /* [in] */,
92
 
                  Eterm *ret /* [out] */);
93
 
int db_select_tree(Process *p, DbTableTree *tb /* [in out] */, 
94
 
                   Eterm pattern /* [in] */, 
95
 
                   int reversed /* [in] */,
96
 
                   Eterm *ret /* [out] */);
97
 
int db_select_count_tree(Process *p, DbTableTree *tb /* [in out] */, 
98
 
                         Eterm pattern /* [in] */, 
99
 
                         Eterm *ret /* [out] */);
100
 
int db_select_chunk_tree(Process *p, DbTableTree *tb /* [in out] */, 
101
 
                         Eterm pattern /* [in] */, 
102
 
                         Sint chunk_size /* [in] */,
103
 
                         int reversed /* [in] */,
104
 
                         Eterm *ret /* [out] */);
105
 
int db_select_tree_continue(Process *p, 
106
 
                            DbTableTree *tb /* [in out] */,
107
 
                            Eterm continuation /* [in] */,
108
 
                            Eterm *ret /* [out] */);
109
 
int db_select_count_tree_continue(Process *p, 
110
 
                                  DbTableTree *tb /* [in out] */,
111
 
                                  Eterm continuation /* [in] */,
112
 
                                  Eterm *ret /* [out] */);
113
 
int db_select_delete_tree(Process *p, DbTableTree *tb /* [in out] */, 
114
 
                          Eterm pattern /* [in] */, 
115
 
                          Eterm *ret /* [out] */);
116
 
int db_select_delete_continue_tree(Process *p, 
117
 
                                   DbTableTree *tb /* [in out] */, 
118
 
                                   Eterm continuation /* [in] */,
119
 
                                   Eterm *ret);
120
 
void db_print_tree(CIO fd /* [in] */, 
121
 
                   int show /* [in] */,
122
 
                   DbTableTree *tb /* [in] */);
123
 
void free_tree_table(DbTableTree *tb /* [in out] */);
124
 
 
125
 
void erts_db_tree_foreach_offheap(DbTableTree *tab,
126
 
                                  void (*)(ErlOffHeap *, void *),
127
 
                                  void *);
128
 
 
129
 
#ifdef HARDDEBUG
130
 
void db_check_table_tree(DbTableTree *tb);
131
 
#endif
 
45
 
 
46
int db_create_tree(Process *p, DbTable *tbl);
132
47
 
133
48
#endif /* _DB_TREE_H */