1 /* obnode-set.h:
2  *
3  ****************************************************************
4  * Copyright (C) 2004 Tom Lord
5  *
6  * See the file "COPYING" for further information about
7  * the copyright and warranty status of this work.
8  */
9 
10 #ifndef INCLUDE__LIBAWIKI__OBNODE_SET_H
11 #define INCLUDE__LIBAWIKI__OBNODE_SET_H
12 
13 
14 #include "hackerlab/obtables/obtable.h"
15 #include "hackerlab/oblists/oblist.h"
16 #include "hackerlab/properties/property.h"
17 
18 
19 
20 typedef struct obnode_set t_obnode_set;
21 typedef struct obnode t_obnode;
22 typedef struct obnode_out_edge t_obnode_out_edge;
23 typedef struct obnode_in_edge t_obnode_in_edge;
24 
25 
26 
27 struct obnode_set
28 {
29   t_obtable _obnodes;
30   ssize_t _representation_type;
31   t_property_table _property_table;
32 };
33 
34 struct obnode
35 {
36   struct obtable_elt _obtable_elt;
37   t_oblist _out_edges;
38   t_oblist _in_edges;
39   ssize_t _handle_set;
40 };
41 
42 struct obnode_out_edge
43 {
44   ssize_t _dest_node;
45 };
46 
47 struct obnode_in_edge
48 {
49   ssize_t _source_node;
50   ssize_t _out_edge_slot;
51 };
52 
53 
54 
55 /* automatically generated __STDC__ prototypes */
56 extern int init_obnode_set (t_obnode_set * os,
57                             alloc_limits limits,
58                             ssize_t representation_type);
59 extern int uninit_obnode_set (t_obnode_set * os,
60                               alloc_limits limits);
61 extern ssize_t obnode_set_n_nodes (t_obnode_set * os,
62                                    alloc_limits limits);
63 extern ssize_t obnode_set_alloc_node (t_obnode_set * os,
64                                       alloc_limits limits);
65 extern int obnode_set_free_node (t_obnode_set * os,
66                                  alloc_limits limits,
67                                  ssize_t id);
68 extern int obnode_set__init_node (t_obnode * node,
69                                   t_obnode_set * os,
70                                   alloc_limits limits,
71                                   ssize_t id);
72 extern ssize_t obnode_n_subnodes (t_obnode_set * os,
73                                   alloc_limits limits,
74                                   ssize_t n);
75 extern t_obnode_out_edge * obnode__subnode_k (t_obnode_set * os,
76                                               alloc_limits limits,
77                                               ssize_t n,
78                                               ssize_t k);
79 extern ssize_t obnode_subnode_data_k (t_obnode_set * os,
80                                       alloc_limits limits,
81                                       ssize_t n,
82                                       ssize_t k);
83 extern ssize_t obnode_n_parent_nodes (t_obnode_set * os,
84                                       alloc_limits limits,
85                                       ssize_t n);
86 extern t_obnode_in_edge * obnode__parent_k (t_obnode_set * os,
87                                             alloc_limits limits,
88                                             ssize_t n,
89                                             ssize_t k);
90 extern ssize_t obnode_parent_data_k (ssize_t * out_edge_slot,
91                                      t_obnode_set * os,
92                                      alloc_limits limits,
93                                      ssize_t n,
94                                      ssize_t k);
95 extern int obnode_insert_edge (t_obnode_set * os,
96                                alloc_limits limits,
97                                ssize_t source,
98                                ssize_t insert_order,
99                                ssize_t dest);
100 extern int obnode_delete_edge (t_obnode_set * os,
101                                alloc_limits limits,
102                                ssize_t source,
103                                ssize_t insert_order);
104 extern void * obnode_property_soft_ref (t_obnode_set * os,
105                                         alloc_limits limits,
106                                         ssize_t elt_size,
107                                         ssize_t node,
108                                         ssize_t global_property_id);
109 extern void * obnode_property_ref (t_obnode_set * os,
110                                    alloc_limits limits,
111                                    ssize_t elt_size,
112                                    ssize_t node,
113                                    ssize_t global_property_id,
114                                    t_property_type * type);
115 extern ssize_t obnode_handle_set (t_obnode_set * os,
116                                   alloc_limits limits,
117                                   ssize_t elt_size,
118                                   ssize_t n);
119 #endif  /* INCLUDE__LIBAWIKI__OBNODE_SET_H */
120 
121 
122 /* tag: Tom Lord Tue Oct 26 16:22:59 2004 (obnode-set.h)
123  */
124