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