rpm/lib/rpmal.h

137 lines
3.4 KiB
C

#ifndef H_RPMAL
#define H_RPMAL
/** \ingroup rpmdep rpmtrans
* \file lib/rpmal.h
* Structures used for managing added/available package lists.
*/
/*@-exportlocal@*/
/*@unchecked@*/
extern int _rpmal_debug;
/*@=exportlocal@*/
/**
*/
typedef /*@abstract@*/ struct rpmal_s * rpmal;
#ifdef __cplusplus
extern "C" {
#endif
/**
* Initialize available packckages, items, and directory list.
* @param delta no. of entries to add on each realloc
* @return al new available list
*/
/*@-exportlocal@*/
/*@only@*/
rpmal rpmalCreate(int delta)
/*@*/;
/*@=exportlocal@*/
/**
* Free available packages, items, and directory members.
* @param al available list
* @return NULL always
*/
/*@null@*/
rpmal rpmalFree(/*@only@*/ /*@null@*/ rpmal al)
/*@globals fileSystem @*/
/*@modifies al, fileSystem @*/;
/**
* Delete package from available list.
* @param al available list
* @param pkgKey package key
*/
/*@-exportlocal@*/
void rpmalDel(/*@null@*/ rpmal al, /*@null@*/ alKey pkgKey)
/*@globals fileSystem @*/
/*@modifies al, fileSystem @*/;
/*@=exportlocal@*/
/**
* Add package to available list.
* @param alistp address of available list
* @param pkgKey package key, RPMAL_NOMATCH to force an append
* @param key associated file name/python object
* @param provides provides dependency set
* @param fi file info set
* @return available package index
*/
alKey rpmalAdd(rpmal * alistp,
/*@dependent@*/ /*@null@*/ alKey pkgKey,
/*@dependent@*/ /*@null@*/ fnpyKey key,
/*@null@*/ rpmds provides, /*@null@*/ rpmfi fi)
/*@globals fileSystem @*/
/*@modifies *alistp, provides, fi, fileSystem @*/;
/**
* Add package provides to available list index.
* @param al available list
* @param pkgKey package key
* @param provides added package provides
*/
/*@-exportlocal@*/
void rpmalAddProvides(rpmal al,
/*@dependent@*/ /*@null@*/ alKey pkgKey,
/*@null@*/ rpmds provides)
/*@modifies al, provides @*/;
/*@=exportlocal@*/
/**
* Generate index for available list.
* @param al available list
*/
void rpmalMakeIndex(/*@null@*/ rpmal al)
/*@modifies al @*/;
/**
* Check added package file lists for package(s) that provide a file.
* @param al available list
* @param ds dependency set
* @retval keyp added package key pointer (or NULL)
* @return associated package key(s), NULL if none
*/
/*@-exportlocal@*/
/*@only@*/ /*@null@*/
fnpyKey * rpmalAllFileSatisfiesDepend(/*@null@*/ const rpmal al,
/*@null@*/ const rpmds ds, /*@null@*/ alKey * keyp)
/*@globals fileSystem @*/
/*@modifies al, *keyp, fileSystem @*/;
/*@=exportlocal@*/
/**
* Check added package file lists for package(s) that have a provide.
* @param al available list
* @param ds dependency set
* @retval keyp added package key pointer (or NULL)
* @return associated package key(s), NULL if none
*/
/*@only@*/ /*@null@*/
fnpyKey * rpmalAllSatisfiesDepend(const rpmal al, const rpmds ds,
/*@null@*/ alKey * keyp)
/*@globals fileSystem @*/
/*@modifies al, *keyp, fileSystem @*/;
/**
* Check added package file lists for first package that has a provide.
* @todo Eliminate.
* @param al available list
* @param ds dependency set
* @retval keyp added package key pointer (or NULL)
* @return associated package key, NULL if none
*/
/*@null@*/
fnpyKey rpmalSatisfiesDepend(const rpmal al, const rpmds ds,
/*@null@*/ alKey * keyp)
/*@globals fileSystem @*/
/*@modifies al, *keyp, fileSystem @*/;
#ifdef __cplusplus
}
#endif
#endif /* H_RPMAL */