00001
00002
00003
00004
00005 #if !defined(_INCLUDED_SOS_DEPENDS_H_HEADER__)
00006 #define _INCLUDED_SOS_DEPENDS_H_HEADER__
00007
00014 SUL_PEER_DECLARE(node_deps);
00015
00020 typedef struct sos_dependencies_t
00021 {
00022 apr_array_header_t *edges;
00023 apr_hash_t *hash_on;
00024 apr_hash_t *hash_of;
00025 } sos_dependencies_t;
00026
00031 typedef struct sos_dep_edge_t
00032 {
00033 sul_key_t of_id;
00034 sul_key_t on_id;
00035 sul_boolean_t nflag;
00036 } sos_dep_edge_t;
00037
00046 SOS_DECLARE(sul_error_t *)
00047 sos_dependencies_create_nodes(sos_dependencies_t **deps, sos_fs_txn_t *txn,
00048 apr_pool_t *pool);
00049
00058 SOS_DECLARE(sul_error_t *)
00059 sos_dependencies_create_empty(sos_dependencies_t **deps, sos_fs_txn_t *txn,
00060 apr_pool_t *pool);
00061
00068 SOS_DECLARE(sul_error_t *)
00069 sos_dependencies_build_tables(sos_dependencies_t *deps, apr_pool_t *pool);
00070
00079 SOS_DECLARE(sul_error_t *)
00080 sos_dependencies_get_below(apr_array_header_t **edges,
00081 sos_dependencies_t *deps, sul_key_t id,
00082 apr_pool_t *pool);
00083
00092 SOS_DECLARE(sul_error_t *)
00093 sos_dependencies_get_above(apr_array_header_t **edges,
00094 sos_dependencies_t *deps, sul_key_t id,
00095 apr_pool_t *pool);
00096
00106 SOS_DECLARE(sul_error_t *)
00107 sos_dependencies_find(sos_dependencies_t *deps, sos_dep_edge_t **edge,
00108 sul_key_t of_id, sul_key_t on_id, apr_pool_t *pool);
00109
00119 SOS_DECLARE(sul_error_t *)
00120 sos_dependencies_add(sos_dependencies_t *deps, sos_dep_edge_t **edge,
00121 sul_key_t of_id, sul_key_t on_id, apr_pool_t *pool);
00122
00130 SOS_DECLARE(sul_error_t *)
00131 sos_dependencies_save(sos_dependencies_t *deps, sos_fs_txn_t *txn,
00132 apr_pool_t *pool);
00133
00136 #endif