|
Allocate di_packages
00038 { 00039 di_packages *ret; 00040 00041 ret = di_new0 (di_packages, 1); 00042 ret->table = di_hash_table_new_full (di_rstring_hash, di_rstring_equal, NULL, internal_di_package_destroy_func); 00043 00044 return ret; 00045 } |
|
Allocate di_packages_allocator
00051 { 00052 di_packages_allocator *ret; 00053 00054 ret = internal_di_packages_allocator_alloc (); 00055 ret->package_mem_chunk = di_mem_chunk_new (sizeof (di_package), 16384); 00056 00057 return ret; 00058 } |
|
00090 { 00091 di_mem_chunk_destroy (allocator->package_mem_chunk); 00092 di_mem_chunk_destroy (allocator->package_dependency_mem_chunk); 00093 di_mem_chunk_destroy (allocator->slist_node_mem_chunk); 00094 di_free (allocator); 00095 } |
|
append a package.
00103 { 00104 di_package *tmp; 00105 00106 tmp = di_packages_get_package (packages, package->package, 0); 00107 00108 if (!tmp) 00109 di_slist_append_chunk (&packages->list, package, allocator->slist_node_mem_chunk); 00110 00111 di_hash_table_insert (packages->table, &package->key, package); 00112 } |
|
Free di_packages
00079 { 00080 if (!packages) 00081 return; 00082 di_hash_table_destroy (packages->table); 00083 di_free (packages); 00084 } |
|
get a named package.
00124 { 00125 di_rstring key; 00126 size_t size; 00127 00128 if (n) 00129 size = n; 00130 else 00131 size = strlen (name); 00132 00133 /* i know that is bad, but i know it is not written by the lookup */ 00134 key.string = (char *) name; 00135 key.size = size; 00136 00137 return di_hash_table_lookup (packages->table, &key); 00138 } |
|
get a named package. creates a new one if non-existant.
00151 { 00152 di_package *ret = di_packages_get_package (packages, name, n); 00153 00154 if (!ret) 00155 { 00156 ret = di_package_alloc (allocator); 00157 ret->key.string = di_stradup (name, n); 00158 ret->key.size = n; 00159 00160 di_hash_table_insert (packages->table, &ret->key, ret); 00161 } 00162 00163 return ret; 00164 } |
|
For internal use only. Partially allocate di_packages_allocator
00065 { 00066 di_packages_allocator *ret; 00067 00068 ret = di_new0 (di_packages_allocator, 1); 00069 ret->package_dependency_mem_chunk = di_mem_chunk_new (sizeof (di_package_dependency), 4096); 00070 ret->slist_node_mem_chunk = di_mem_chunk_new (sizeof (di_slist_node), 4096); 00071 00072 return ret; 00073 } |