Main Page | Modules | Data Structures | File List | Data Fields | Related Pages

Packages file


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_dependencydi_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_packagesdi_packages_alloc (void)
void di_packages_free (di_packages *packages)
di_packages_allocatordi_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_packagedi_packages_get_package (di_packages *packages, const char *name, size_t n)
di_packagedi_packages_get_package_new (di_packages *packages, di_packages_allocator *allocator, char *name, size_t n)
di_slistdi_packages_resolve_dependencies (di_packages *packages, di_slist *list, di_packages_allocator *allocator)
di_slistdi_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_allocatorinternal_di_packages_allocator_alloc (void)
di_slistdi_packages_resolve_dependencies_special (di_packages *packages, di_slist *list, di_packages_resolve_dependencies_check *s, di_packages_allocator *allocator)
di_slistdi_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

Function Documentation

di_packages* di_packages_alloc void   ) 
 

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 }

di_packages_allocator* di_packages_allocator_alloc void   ) 
 

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 }

void di_packages_allocator_free di_packages_allocator allocator  ) 
 

Free di_packages_allocator

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 }

void di_packages_append_package di_packages packages,
di_package package,
di_packages_allocator allocator
 

append a package.

Parameters:
packages a di_packages

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 }

void di_packages_free di_packages packages  ) 
 

Free di_packages

00080 { 00081 if (!packages) 00082 return; 00083 di_hash_table_destroy (packages->table); 00084 di_free (packages); 00085 }

di_package* di_packages_get_package di_packages packages,
const char *  name,
size_t  n
 

get a named package.

Parameters:
packages a di_packages
name the name of the package
n size of the name or 0
Returns:
the package or NULL

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 }

di_package* di_packages_get_package_new di_packages packages,
di_packages_allocator allocator,
char *  name,
size_t  n
 

get a named package. creates a new one if non-existant.

Parameters:
packages a di_packages
name the name of the package
n size of the name
Returns:
the package

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 }

di_packages_allocator* internal_di_packages_allocator_alloc void   ) 
 

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 }


Generated on Tue Jun 15 13:02:18 2004 for libdebian-installer by doxygen 1.3.7