|
|
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 }
|
1.3.5