Modules | |
group | Parser |
Data Structures | |
struct | di_packages |
Packages file. More... | |
struct | di_packages_allocator |
Packages file - Allocator. More... | |
struct | di_packages_resolve_dependencies_check |
struct | di_packages_resolve_dependencies_do_real_list_append_data |
Typedefs | |
typedef bool | di_packages_resolve_dependencies_check_package (di_packages_resolve_dependencies_check *r, di_package *package, di_package_dependency *d) |
typedef di_package_dependency * | di_packages_resolve_dependencies_check_provide (di_package *package, di_package_dependency *best, di_package_dependency *d, void *data) |
typedef void | di_packages_resolve_dependencies_do_package (di_package *package, void *data) |
Functions | |
di_packages * | di_packages_alloc (void) |
void | di_packages_free (di_packages *packages) |
di_packages_allocator * | di_packages_allocator_alloc (void) |
void | di_packages_allocator_free (di_packages_allocator *packages) |
void | di_packages_append_package (di_packages *packages, di_package *package, di_packages_allocator *allocator) |
di_package * | di_packages_get_package (di_packages *packages, const char *name, size_t n) |
di_package * | di_packages_get_package_new (di_packages *packages, di_packages_allocator *allocator, char *name, size_t n) |
di_slist * | di_packages_resolve_dependencies (di_packages *packages, di_slist *list, di_packages_allocator *allocator) |
di_slist * | di_packages_resolve_dependencies_array (di_packages *packages, di_package **array, di_packages_allocator *allocator) |
void | di_packages_resolve_dependencies_mark (di_packages *packages) |
di_packages_allocator * | internal_di_packages_allocator_alloc (void) |
di_slist * | di_packages_resolve_dependencies_special (di_packages *packages, di_slist *list, di_packages_resolve_dependencies_check *s, di_packages_allocator *allocator) |
di_slist * | di_packages_resolve_dependencies_array_special (di_packages *packages, di_package **array, di_packages_resolve_dependencies_check *s, di_packages_allocator *allocator) |
void | di_packages_resolve_dependencies_mark_special (di_packages *packages, di_packages_resolve_dependencies_check *s) |
void | di_packages_resolve_dependencies_marker (di_packages *packages) |
bool | di_packages_resolve_dependencies_recurse (di_packages_resolve_dependencies_check *r, di_package *package, di_package *dependend_package) |
Variables | |
di_packages_resolve_dependencies_check_package | di_packages_resolve_dependencies_check_real |
di_packages_resolve_dependencies_check_package | di_packages_resolve_dependencies_check_non_existant |
di_packages_resolve_dependencies_check_package | di_packages_resolve_dependencies_check_non_existant_quiet |
di_packages_resolve_dependencies_check_package | di_packages_resolve_dependencies_check_non_existant_permissive |
di_packages_resolve_dependencies_check_provide | di_packages_resolve_dependencies_check_virtual |
di_packages_resolve_dependencies_do_package | di_packages_resolve_dependencies_do_real_list_append |
di_packages_resolve_dependencies_do_package | di_packages_resolve_dependencies_do_real_mark |
|
Allocate di_packages 00039 { 00040 di_packages *ret; 00041 00042 ret = di_new0 (di_packages, 1); 00043 ret->table = di_hash_table_new_full (di_rstring_hash, di_rstring_equal, NULL, internal_di_package_destroy_func); 00044 00045 return ret; 00046 }
|
|
Allocate di_packages_allocator 00052 { 00053 di_packages_allocator *ret; 00054 00055 ret = internal_di_packages_allocator_alloc (); 00056 ret->package_mem_chunk = di_mem_chunk_new (sizeof (di_package), 16384); 00057 00058 return ret; 00059 }
|
|
00091 { 00092 di_mem_chunk_destroy (allocator->package_mem_chunk); 00093 di_mem_chunk_destroy (allocator->package_dependency_mem_chunk); 00094 di_mem_chunk_destroy (allocator->slist_node_mem_chunk); 00095 di_free (allocator); 00096 }
|
|
append a package.
00104 { 00105 di_package *tmp; 00106 00107 tmp = di_packages_get_package (packages, package->package, 0); 00108 00109 if (!tmp) 00110 di_slist_append_chunk (&packages->list, package, allocator->slist_node_mem_chunk); 00111 00112 di_hash_table_insert (packages->table, &package->key, package); 00113 }
|
|
Free di_packages 00080 { 00081 if (!packages) 00082 return; 00083 di_hash_table_destroy (packages->table); 00084 di_free (packages); 00085 }
|
|
get a named package.
00125 { 00126 di_rstring key; 00127 size_t size; 00128 00129 if (n) 00130 size = n; 00131 else 00132 size = strlen (name); 00133 00134 /* i know that is bad, but i know it is not written by the lookup */ 00135 key.string = (char *) name; 00136 key.size = size; 00137 00138 return di_hash_table_lookup (packages->table, &key); 00139 }
|
|
get a named package. creates a new one if non-existant.
00152 { 00153 di_package *ret = di_packages_get_package (packages, name, n); 00154 00155 if (!ret) 00156 { 00157 ret = di_package_alloc (allocator); 00158 ret->key.string = di_stradup (name, n); 00159 ret->key.size = n; 00160 00161 di_hash_table_insert (packages->table, &ret->key, ret); 00162 } 00163 00164 return ret; 00165 }
|
|
For internal use only. Partially allocate di_packages_allocator 00066 { 00067 di_packages_allocator *ret; 00068 00069 ret = di_new0 (di_packages_allocator, 1); 00070 ret->package_dependency_mem_chunk = di_mem_chunk_new (sizeof (di_package_dependency), 4096); 00071 ret->slist_node_mem_chunk = di_mem_chunk_new (sizeof (di_slist_node), 4096); 00072 00073 return ret; 00074 }
|