Missing c++ end marker in rpmdb_internal.h, oops
[platform/upstream/rpm.git] / lib / rpmdb_internal.h
1 #ifndef H_RPMDB_INTERNAL
2 #define H_RPMDB_INTERNAL
3
4 #include <assert.h>
5 #include <db.h>
6
7 #include <rpm/rpmsw.h>
8 #include <rpm/rpmtypes.h>
9 #include <rpm/rpmutil.h>
10 #include "lib/backend/dbi.h"
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 /** \ingroup rpmdb
17  * Add package header to rpm database and indices.
18  * @param db            rpm database
19  * @param h             header
20  * @return              0 on success
21  */
22 RPM_GNUC_INTERNAL
23 int rpmdbAdd(rpmdb db, Header h);
24
25 /** \ingroup rpmdb
26  * Remove package header from rpm database and indices.
27  * @param db            rpm database
28  * @param hdrNum        package instance number in database
29  * @return              0 on success
30  */
31 RPM_GNUC_INTERNAL
32 int rpmdbRemove(rpmdb db, unsigned int hdrNum);
33
34 /** \ingroup rpmdb
35  * Return rpmdb home directory (depending on chroot state)
36  * param db             rpmdb handle
37  * return               db home directory (or NULL on error)
38  */
39 RPM_GNUC_INTERNAL
40 const char *rpmdbHome(rpmdb db);
41
42 /** \ingroup rpmdb
43  * Return database iterator.
44  * @param mi            rpm database iterator
45  * @param keyp          key data (NULL for sequential access)
46  * @param keylen        key data length (0 will use strlen(keyp))
47  * @return              0 on success
48  */
49 int rpmdbExtendIterator(rpmdbMatchIterator mi,
50                         const void * keyp, size_t keylen);
51
52 /** \ingroup rpmdb
53  * sort the iterator by (recnum, filenum)
54  * Return database iterator.
55  * @param mi            rpm database iterator
56  */
57 void rpmdbSortIterator(rpmdbMatchIterator mi);
58
59 /* avoid importing rpmts_internal.h */
60 #undef HASHTYPE
61 #undef HTKEYTYPE
62 #undef HTDATATYPE
63 #define HASHTYPE intHash
64 #define HTKEYTYPE unsigned int
65 #include "rpmhash.H"
66 #undef HASHTYPE
67 #undef HTKEYTYPE
68
69 /** \ingroup rpmdb
70  * Remove items from set of package instances to iterate.
71  * @note Sorted hdrNums are always passed in rpmlib.
72  * @param mi            rpm database iterator
73  * @param hdrNums       hash of package instances
74  * @return              0 on success, 1 on failure (bad args)
75  */
76 int rpmdbPruneIterator(rpmdbMatchIterator mi, intHash hdrNums);
77
78 #ifndef __APPLE__
79 /**
80  *  * Mergesort, same arguments as qsort(2).
81  *   */
82 RPM_GNUC_INTERNAL
83 int mergesort(void *base, size_t nmemb, size_t size,
84                 int (*cmp) (const void *, const void *));
85 #else
86 /* mergesort is defined in stdlib.h on Mac OS X */
87 #endif /* __APPLE__ */
88
89 #ifdef __cplusplus
90 }
91 #endif
92
93 #endif