19 extern int _rpmgi_debug;
23 typedef enum rpmgiFlags_e {
25 RPMGI_TSADD = (1 << 0),
26 RPMGI_TSORDER = (1 << 1),
27 RPMGI_NOGLOB = (1 << 2),
28 RPMGI_NOMANIFEST = (1 << 3),
29 RPMGI_NOHEADER = (1 << 4)
32 extern rpmgiFlags giFlags;
34 #if defined(_RPMGI_INTERNAL)
39 rpmts ts; /*!< Iterator transaction set. */
40 int tag; /*!< Iterator type. */
41 const void * keyp; /*!< Iterator key. */
42 size_t keylen; /*!< Iterator key length. */
44 rpmgiFlags flags; /*!< Iterator control bits. */
45 int active; /*!< Iterator is active? */
46 int i; /*!< Element index. */
47 const char * hdrPath; /*!< Path to current iterator header. */
48 Header h; /*!< Current iterator header. */
52 rpmdbMatchIterator mi;
63 int nrefs; /*!< Reference count. */
68 * Unreference a generalized iterator instance.
69 * @param gi generalized iterator
73 rpmgi rpmgiUnlink (rpmgi gi,
76 /** @todo Remove debugging entry from the ABI. */
77 rpmgi XrpmgiUnlink (rpmgi gi,
78 const char * msg, const char * fn, unsigned ln);
79 #define rpmgiUnlink(_gi, _msg) XrpmgiUnlink(_gi, _msg, __FILE__, __LINE__)
82 * Reference a generalized iterator instance.
83 * @param gi generalized iterator
85 * @return new generalized iterator reference
87 rpmgi rpmgiLink (rpmgi gi, const char * msg);
89 /** @todo Remove debugging entry from the ABI. */
90 rpmgi XrpmgiLink (rpmgi gi, const char * msg,
91 const char * fn, unsigned ln);
92 #define rpmgiLink(_gi, _msg) XrpmgiLink(_gi, _msg, __FILE__, __LINE__)
94 /** Destroy a generalized iterator.
95 * @param gi generalized iterator
98 rpmgi rpmgiFree(rpmgi gi);
101 * Return a generalized iterator.
102 * @param ts transaction set
104 * @param keyp key data (NULL for sequential access)
105 * @param keylen key data length (0 will use strlen(keyp))
106 * @return new iterator
108 rpmgi rpmgiNew(rpmts ts, int tag, const void * keyp,
112 * Perform next iteration step.
113 * @param gi generalized iterator
114 * @returns RPMRC_OK on success, RPMRC_NOTFOUND on EOI
116 rpmRC rpmgiNext(rpmgi gi);
119 * Return current header path.
120 * @param gi generalized iterator
121 * @returns header path
123 const char * rpmgiHdrPath(rpmgi gi);
126 * Return current iteration header.
127 * @param gi generalized iterator
130 Header rpmgiHeader(rpmgi gi);
133 * Return current iteration transaction set.
134 * @param gi generalized iterator
135 * @returns transaction set
137 rpmts rpmgiTs(rpmgi gi);
140 * Load iterator args.
141 * @param gi generalized iterator
142 * @param argv arg list
143 * @param ftsOpts fts(3) flags
144 * @param flags iterator flags
145 * @returns RPMRC_OK on success
147 rpmRC rpmgiSetArgs(rpmgi gi, ARGV_t argv,
148 int ftsOpts, rpmgiFlags flags);