Move per-header method typedefs etc out of main header.h
- new header_method.h include
This commit is contained in:
parent
67b68cbeb9
commit
8f9eea953f
|
@ -45,6 +45,7 @@ pkginclude_HEADERS += rpmio/rpmsq.h
|
|||
pkginclude_HEADERS += rpmio/rpmsw.h
|
||||
|
||||
pkginclude_HEADERS += rpmdb/header.h
|
||||
pkginclude_HEADERS += rpmdb/header_method.h
|
||||
pkginclude_HEADERS += rpmdb/hdrinline.h
|
||||
pkginclude_HEADERS += rpmdb/rpmdb.h
|
||||
|
||||
|
|
367
rpmdb/header.h
367
rpmdb/header.h
|
@ -288,372 +288,7 @@ typedef struct HE_s {
|
|||
hCNT_t cnt;
|
||||
} * HE_t;
|
||||
|
||||
/** \ingroup header
|
||||
* Create new (empty) header instance.
|
||||
* @return header
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRnew) (void);
|
||||
|
||||
/** \ingroup header
|
||||
* Dereference a header instance.
|
||||
* @param h header
|
||||
* @return NULL always
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRfree) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Reference a header instance.
|
||||
* @param h header
|
||||
* @return referenced header instance
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRlink) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Dereference a header instance.
|
||||
* @param h header
|
||||
* @return NULL always
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRunlink) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Sort tags in header.
|
||||
* @todo Eliminate from API.
|
||||
* @param h header
|
||||
*/
|
||||
typedef
|
||||
void (*HDRsort) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Restore tags in header to original ordering.
|
||||
* @todo Eliminate from API.
|
||||
* @param h header
|
||||
*/
|
||||
typedef
|
||||
void (*HDRunsort) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Return size of on-disk header representation in bytes.
|
||||
* @param h header
|
||||
* @param magicp include size of 8 bytes for (magic, 0)?
|
||||
* @return size of on-disk header
|
||||
*/
|
||||
typedef
|
||||
unsigned int (*HDRsizeof) (Header h, enum hMagic magicp);
|
||||
|
||||
/** \ingroup header
|
||||
* Convert header to on-disk representation.
|
||||
* @param h header (with pointers)
|
||||
* @return on-disk header blob (i.e. with offsets)
|
||||
*/
|
||||
typedef
|
||||
void * (*HDRunload) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Convert header to on-disk representation, and then reload.
|
||||
* This is used to insure that all header data is in one chunk.
|
||||
* @param h header (with pointers)
|
||||
* @param tag region tag
|
||||
* @return on-disk header (with offsets)
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRreload) (Header h, int tag);
|
||||
|
||||
/** \ingroup header
|
||||
* Duplicate a header.
|
||||
* @param h header
|
||||
* @return new header instance
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRcopy) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Convert header to in-memory representation.
|
||||
* @param uh on-disk header blob (i.e. with offsets)
|
||||
* @return header
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRload) (void * uh);
|
||||
|
||||
/** \ingroup header
|
||||
* Make a copy and convert header to in-memory representation.
|
||||
* @param uh on-disk header blob (i.e. with offsets)
|
||||
* @return header
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRcopyload) (const void * uh);
|
||||
|
||||
/** \ingroup header
|
||||
* Read (and load) header from file handle.
|
||||
* @param fd file handle
|
||||
* @param magicp read (and verify) 8 bytes of (magic, 0)?
|
||||
* @return header (or NULL on error)
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRread) (FD_t fd, enum hMagic magicp);
|
||||
|
||||
/** \ingroup header
|
||||
* Write (with unload) header to file handle.
|
||||
* @param fd file handle
|
||||
* @param h header
|
||||
* @param magicp prefix write with 8 bytes of (magic, 0)?
|
||||
* @return 0 on success, 1 on error
|
||||
*/
|
||||
typedef
|
||||
int (*HDRwrite) (FD_t fd, Header h, enum hMagic magicp);
|
||||
|
||||
/** \ingroup header
|
||||
* Check if tag is in header.
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRisentry) (Header h, int_32 tag);
|
||||
|
||||
/** \ingroup header
|
||||
* Free data allocated when retrieved from header.
|
||||
* @param h header
|
||||
* @param data address of data (or NULL)
|
||||
* @param type type of data (or -1 to force free)
|
||||
* @return NULL always
|
||||
*/
|
||||
typedef
|
||||
void * (*HDRfreetag) (Header h,
|
||||
const void * data, rpmTagType type);
|
||||
|
||||
/** \ingroup header
|
||||
* Retrieve tag value.
|
||||
* Will never return RPM_I18NSTRING_TYPE! RPM_STRING_TYPE elements with
|
||||
* RPM_I18NSTRING_TYPE equivalent entries are translated (if HEADER_I18NTABLE
|
||||
* entry is present).
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @retval type address of tag value data type (or NULL)
|
||||
* @retval p address of pointer to tag value(s) (or NULL)
|
||||
* @retval c address of number of values (or NULL)
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRget) (Header h, int_32 tag,
|
||||
hTYP_t type,
|
||||
void ** p,
|
||||
hCNT_t c);
|
||||
|
||||
/** \ingroup header
|
||||
* Retrieve tag value using header internal array.
|
||||
* Get an entry using as little extra RAM as possible to return the tag value.
|
||||
* This is only an issue for RPM_STRING_ARRAY_TYPE.
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @retval type address of tag value data type (or NULL)
|
||||
* @retval p address of pointer to tag value(s) (or NULL)
|
||||
* @retval c address of number of values (or NULL)
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRgetmin) (Header h, int_32 tag,
|
||||
hTYP_t type,
|
||||
hPTR_t * p,
|
||||
hCNT_t c);
|
||||
|
||||
/** \ingroup header
|
||||
* Add tag to header.
|
||||
* Duplicate tags are okay, but only defined for iteration (with the
|
||||
* exceptions noted below). While you are allowed to add i18n string
|
||||
* arrays through this function, you probably don't mean to. See
|
||||
* headerAddI18NString() instead.
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @param type tag value data type
|
||||
* @param p pointer to tag value(s)
|
||||
* @param c number of values
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRadd) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
|
||||
|
||||
/** \ingroup header
|
||||
* Append element to tag array in header.
|
||||
* Appends item p to entry w/ tag and type as passed. Won't work on
|
||||
* RPM_STRING_TYPE. Any pointers into header memory returned from
|
||||
* headerGetEntryMinMemory() for this entry are invalid after this
|
||||
* call has been made!
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @param type tag value data type
|
||||
* @param p pointer to tag value(s)
|
||||
* @param c number of values
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRappend) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
|
||||
|
||||
/** \ingroup header
|
||||
* Add or append element to tag array in header.
|
||||
* @todo Arg "p" should have const.
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @param type tag value data type
|
||||
* @param p pointer to tag value(s)
|
||||
* @param c number of values
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRaddorappend) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
|
||||
|
||||
/** \ingroup header
|
||||
* Add locale specific tag to header.
|
||||
* A NULL lang is interpreted as the C locale. Here are the rules:
|
||||
* \verbatim
|
||||
* - If the tag isn't in the header, it's added with the passed string
|
||||
* as new value.
|
||||
* - If the tag occurs multiple times in entry, which tag is affected
|
||||
* by the operation is undefined.
|
||||
* - If the tag is in the header w/ this language, the entry is
|
||||
* *replaced* (like headerModifyEntry()).
|
||||
* \endverbatim
|
||||
* This function is intended to just "do the right thing". If you need
|
||||
* more fine grained control use headerAddEntry() and headerModifyEntry().
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @param string tag value
|
||||
* @param lang locale
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRaddi18n) (Header h, int_32 tag, const char * string,
|
||||
const char * lang);
|
||||
|
||||
/** \ingroup header
|
||||
* Modify tag in header.
|
||||
* If there are multiple entries with this tag, the first one gets replaced.
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @param type tag value data type
|
||||
* @param p pointer to tag value(s)
|
||||
* @param c number of values
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRmodify) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
|
||||
|
||||
/** \ingroup header
|
||||
* Delete tag in header.
|
||||
* Removes all entries of type tag from the header, returns 1 if none were
|
||||
* found.
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @return 0 on success, 1 on failure (INCONSISTENT)
|
||||
*/
|
||||
typedef
|
||||
int (*HDRremove) (Header h, int_32 tag);
|
||||
|
||||
/** \ingroup header
|
||||
* Return formatted output string from header tags.
|
||||
* The returned string must be free()d.
|
||||
*
|
||||
* @param h header
|
||||
* @param fmt format to use
|
||||
* @param tags array of tag name/value pairs
|
||||
* @param extensions chained table of formatting extensions.
|
||||
* @retval errmsg error message (if any)
|
||||
* @return formatted output string (malloc'ed)
|
||||
*/
|
||||
typedef
|
||||
char * (*HDRsprintf) (Header h, const char * fmt,
|
||||
const struct headerTagTableEntry_s * tags,
|
||||
const struct headerSprintfExtension_s * extensions,
|
||||
errmsg_t * errmsg);
|
||||
|
||||
/** \ingroup header
|
||||
* Duplicate tag values from one header into another.
|
||||
* @param headerFrom source header
|
||||
* @param headerTo destination header
|
||||
* @param tagstocopy array of tags that are copied
|
||||
*/
|
||||
typedef
|
||||
void (*HDRcopytags) (Header headerFrom, Header headerTo, hTAG_t tagstocopy);
|
||||
|
||||
/** \ingroup header
|
||||
* Destroy header tag iterator.
|
||||
* @param hi header tag iterator
|
||||
* @return NULL always
|
||||
*/
|
||||
typedef
|
||||
HeaderIterator (*HDRfreeiter) (HeaderIterator hi);
|
||||
|
||||
/** \ingroup header
|
||||
* Create header tag iterator.
|
||||
* @param h header
|
||||
* @return header tag iterator
|
||||
*/
|
||||
typedef
|
||||
HeaderIterator (*HDRinititer) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Return next tag from header.
|
||||
* @param hi header tag iterator
|
||||
* @retval tag address of tag
|
||||
* @retval type address of tag value data type
|
||||
* @retval p address of pointer to tag value(s)
|
||||
* @retval c address of number of values
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRnextiter) (HeaderIterator hi,
|
||||
hTAG_t tag,
|
||||
hTYP_t type,
|
||||
hPTR_t * p,
|
||||
hCNT_t c);
|
||||
|
||||
/** \ingroup header
|
||||
* Header method vectors.
|
||||
*/
|
||||
typedef struct HV_s * HV_t;
|
||||
struct HV_s {
|
||||
HDRlink hdrlink;
|
||||
HDRunlink hdrunlink;
|
||||
HDRfree hdrfree;
|
||||
HDRnew hdrnew;
|
||||
HDRsort hdrsort;
|
||||
HDRunsort hdrunsort;
|
||||
HDRsizeof hdrsizeof;
|
||||
HDRunload hdrunload;
|
||||
HDRreload hdrreload;
|
||||
HDRcopy hdrcopy;
|
||||
HDRload hdrload;
|
||||
HDRcopyload hdrcopyload;
|
||||
HDRread hdrread;
|
||||
HDRwrite hdrwrite;
|
||||
HDRisentry hdrisentry;
|
||||
HDRfreetag hdrfreetag;
|
||||
HDRget hdrget;
|
||||
HDRgetmin hdrgetmin;
|
||||
HDRadd hdradd;
|
||||
HDRappend hdrappend;
|
||||
HDRaddorappend hdraddorappend;
|
||||
HDRaddi18n hdraddi18n;
|
||||
HDRmodify hdrmodify;
|
||||
HDRremove hdrremove;
|
||||
HDRsprintf hdrsprintf;
|
||||
HDRcopytags hdrcopytags;
|
||||
HDRfreeiter hdrfreeiter;
|
||||
HDRinititer hdrinititer;
|
||||
HDRnextiter hdrnextiter;
|
||||
void * hdrvecs;
|
||||
void * hdrdata;
|
||||
int hdrversion;
|
||||
};
|
||||
#include "header_method.h"
|
||||
|
||||
/** \ingroup header
|
||||
* Free data allocated when retrieved from header.
|
||||
|
|
|
@ -0,0 +1,378 @@
|
|||
#ifndef H_HEADER_METHOD
|
||||
#define H_HEADER_METHOD
|
||||
|
||||
/** \ingroup header
|
||||
* \file rpmdb/header_method.h
|
||||
* Header method prototypes
|
||||
*/
|
||||
|
||||
#include "header.h"
|
||||
|
||||
/** \ingroup header
|
||||
* Create new (empty) header instance.
|
||||
* @return header
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRnew) (void);
|
||||
|
||||
/** \ingroup header
|
||||
* Dereference a header instance.
|
||||
* @param h header
|
||||
* @return NULL always
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRfree) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Reference a header instance.
|
||||
* @param h header
|
||||
* @return referenced header instance
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRlink) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Dereference a header instance.
|
||||
* @param h header
|
||||
* @return NULL always
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRunlink) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Sort tags in header.
|
||||
* @todo Eliminate from API.
|
||||
* @param h header
|
||||
*/
|
||||
typedef
|
||||
void (*HDRsort) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Restore tags in header to original ordering.
|
||||
* @todo Eliminate from API.
|
||||
* @param h header
|
||||
*/
|
||||
typedef
|
||||
void (*HDRunsort) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Return size of on-disk header representation in bytes.
|
||||
* @param h header
|
||||
* @param magicp include size of 8 bytes for (magic, 0)?
|
||||
* @return size of on-disk header
|
||||
*/
|
||||
typedef
|
||||
unsigned int (*HDRsizeof) (Header h, enum hMagic magicp);
|
||||
|
||||
/** \ingroup header
|
||||
* Convert header to on-disk representation.
|
||||
* @param h header (with pointers)
|
||||
* @return on-disk header blob (i.e. with offsets)
|
||||
*/
|
||||
typedef
|
||||
void * (*HDRunload) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Convert header to on-disk representation, and then reload.
|
||||
* This is used to insure that all header data is in one chunk.
|
||||
* @param h header (with pointers)
|
||||
* @param tag region tag
|
||||
* @return on-disk header (with offsets)
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRreload) (Header h, int tag);
|
||||
|
||||
/** \ingroup header
|
||||
* Duplicate a header.
|
||||
* @param h header
|
||||
* @return new header instance
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRcopy) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Convert header to in-memory representation.
|
||||
* @param uh on-disk header blob (i.e. with offsets)
|
||||
* @return header
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRload) (void * uh);
|
||||
|
||||
/** \ingroup header
|
||||
* Make a copy and convert header to in-memory representation.
|
||||
* @param uh on-disk header blob (i.e. with offsets)
|
||||
* @return header
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRcopyload) (const void * uh);
|
||||
|
||||
/** \ingroup header
|
||||
* Read (and load) header from file handle.
|
||||
* @param fd file handle
|
||||
* @param magicp read (and verify) 8 bytes of (magic, 0)?
|
||||
* @return header (or NULL on error)
|
||||
*/
|
||||
typedef
|
||||
Header (*HDRread) (FD_t fd, enum hMagic magicp);
|
||||
|
||||
/** \ingroup header
|
||||
* Write (with unload) header to file handle.
|
||||
* @param fd file handle
|
||||
* @param h header
|
||||
* @param magicp prefix write with 8 bytes of (magic, 0)?
|
||||
* @return 0 on success, 1 on error
|
||||
*/
|
||||
typedef
|
||||
int (*HDRwrite) (FD_t fd, Header h, enum hMagic magicp);
|
||||
|
||||
/** \ingroup header
|
||||
* Check if tag is in header.
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRisentry) (Header h, int_32 tag);
|
||||
|
||||
/** \ingroup header
|
||||
* Free data allocated when retrieved from header.
|
||||
* @param h header
|
||||
* @param data address of data (or NULL)
|
||||
* @param type type of data (or -1 to force free)
|
||||
* @return NULL always
|
||||
*/
|
||||
typedef
|
||||
void * (*HDRfreetag) (Header h,
|
||||
const void * data, rpmTagType type);
|
||||
|
||||
/** \ingroup header
|
||||
* Retrieve tag value.
|
||||
* Will never return RPM_I18NSTRING_TYPE! RPM_STRING_TYPE elements with
|
||||
* RPM_I18NSTRING_TYPE equivalent entries are translated (if HEADER_I18NTABLE
|
||||
* entry is present).
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @retval type address of tag value data type (or NULL)
|
||||
* @retval p address of pointer to tag value(s) (or NULL)
|
||||
* @retval c address of number of values (or NULL)
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRget) (Header h, int_32 tag,
|
||||
hTYP_t type,
|
||||
void ** p,
|
||||
hCNT_t c);
|
||||
|
||||
/** \ingroup header
|
||||
* Retrieve tag value using header internal array.
|
||||
* Get an entry using as little extra RAM as possible to return the tag value.
|
||||
* This is only an issue for RPM_STRING_ARRAY_TYPE.
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @retval type address of tag value data type (or NULL)
|
||||
* @retval p address of pointer to tag value(s) (or NULL)
|
||||
* @retval c address of number of values (or NULL)
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRgetmin) (Header h, int_32 tag,
|
||||
hTYP_t type,
|
||||
hPTR_t * p,
|
||||
hCNT_t c);
|
||||
|
||||
/** \ingroup header
|
||||
* Add tag to header.
|
||||
* Duplicate tags are okay, but only defined for iteration (with the
|
||||
* exceptions noted below). While you are allowed to add i18n string
|
||||
* arrays through this function, you probably don't mean to. See
|
||||
* headerAddI18NString() instead.
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @param type tag value data type
|
||||
* @param p pointer to tag value(s)
|
||||
* @param c number of values
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRadd) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
|
||||
|
||||
/** \ingroup header
|
||||
* Append element to tag array in header.
|
||||
* Appends item p to entry w/ tag and type as passed. Won't work on
|
||||
* RPM_STRING_TYPE. Any pointers into header memory returned from
|
||||
* headerGetEntryMinMemory() for this entry are invalid after this
|
||||
* call has been made!
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @param type tag value data type
|
||||
* @param p pointer to tag value(s)
|
||||
* @param c number of values
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRappend) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
|
||||
|
||||
/** \ingroup header
|
||||
* Add or append element to tag array in header.
|
||||
* @todo Arg "p" should have const.
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @param type tag value data type
|
||||
* @param p pointer to tag value(s)
|
||||
* @param c number of values
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRaddorappend) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
|
||||
|
||||
/** \ingroup header
|
||||
* Add locale specific tag to header.
|
||||
* A NULL lang is interpreted as the C locale. Here are the rules:
|
||||
* \verbatim
|
||||
* - If the tag isn't in the header, it's added with the passed string
|
||||
* as new value.
|
||||
* - If the tag occurs multiple times in entry, which tag is affected
|
||||
* by the operation is undefined.
|
||||
* - If the tag is in the header w/ this language, the entry is
|
||||
* *replaced* (like headerModifyEntry()).
|
||||
* \endverbatim
|
||||
* This function is intended to just "do the right thing". If you need
|
||||
* more fine grained control use headerAddEntry() and headerModifyEntry().
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @param string tag value
|
||||
* @param lang locale
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRaddi18n) (Header h, int_32 tag, const char * string,
|
||||
const char * lang);
|
||||
|
||||
/** \ingroup header
|
||||
* Modify tag in header.
|
||||
* If there are multiple entries with this tag, the first one gets replaced.
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @param type tag value data type
|
||||
* @param p pointer to tag value(s)
|
||||
* @param c number of values
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRmodify) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
|
||||
|
||||
/** \ingroup header
|
||||
* Delete tag in header.
|
||||
* Removes all entries of type tag from the header, returns 1 if none were
|
||||
* found.
|
||||
*
|
||||
* @param h header
|
||||
* @param tag tag
|
||||
* @return 0 on success, 1 on failure (INCONSISTENT)
|
||||
*/
|
||||
typedef
|
||||
int (*HDRremove) (Header h, int_32 tag);
|
||||
|
||||
/** \ingroup header
|
||||
* Return formatted output string from header tags.
|
||||
* The returned string must be free()d.
|
||||
*
|
||||
* @param h header
|
||||
* @param fmt format to use
|
||||
* @param tags array of tag name/value pairs
|
||||
* @param extensions chained table of formatting extensions.
|
||||
* @retval errmsg error message (if any)
|
||||
* @return formatted output string (malloc'ed)
|
||||
*/
|
||||
typedef
|
||||
char * (*HDRsprintf) (Header h, const char * fmt,
|
||||
const struct headerTagTableEntry_s * tags,
|
||||
const struct headerSprintfExtension_s * extensions,
|
||||
errmsg_t * errmsg);
|
||||
|
||||
/** \ingroup header
|
||||
* Duplicate tag values from one header into another.
|
||||
* @param headerFrom source header
|
||||
* @param headerTo destination header
|
||||
* @param tagstocopy array of tags that are copied
|
||||
*/
|
||||
typedef
|
||||
void (*HDRcopytags) (Header headerFrom, Header headerTo, hTAG_t tagstocopy);
|
||||
|
||||
/** \ingroup header
|
||||
* Destroy header tag iterator.
|
||||
* @param hi header tag iterator
|
||||
* @return NULL always
|
||||
*/
|
||||
typedef
|
||||
HeaderIterator (*HDRfreeiter) (HeaderIterator hi);
|
||||
|
||||
/** \ingroup header
|
||||
* Create header tag iterator.
|
||||
* @param h header
|
||||
* @return header tag iterator
|
||||
*/
|
||||
typedef
|
||||
HeaderIterator (*HDRinititer) (Header h);
|
||||
|
||||
/** \ingroup header
|
||||
* Return next tag from header.
|
||||
* @param hi header tag iterator
|
||||
* @retval tag address of tag
|
||||
* @retval type address of tag value data type
|
||||
* @retval p address of pointer to tag value(s)
|
||||
* @retval c address of number of values
|
||||
* @return 1 on success, 0 on failure
|
||||
*/
|
||||
typedef
|
||||
int (*HDRnextiter) (HeaderIterator hi,
|
||||
hTAG_t tag,
|
||||
hTYP_t type,
|
||||
hPTR_t * p,
|
||||
hCNT_t c);
|
||||
|
||||
/** \ingroup header
|
||||
* Header method vectors.
|
||||
*/
|
||||
typedef struct HV_s * HV_t;
|
||||
struct HV_s {
|
||||
HDRlink hdrlink;
|
||||
HDRunlink hdrunlink;
|
||||
HDRfree hdrfree;
|
||||
HDRnew hdrnew;
|
||||
HDRsort hdrsort;
|
||||
HDRunsort hdrunsort;
|
||||
HDRsizeof hdrsizeof;
|
||||
HDRunload hdrunload;
|
||||
HDRreload hdrreload;
|
||||
HDRcopy hdrcopy;
|
||||
HDRload hdrload;
|
||||
HDRcopyload hdrcopyload;
|
||||
HDRread hdrread;
|
||||
HDRwrite hdrwrite;
|
||||
HDRisentry hdrisentry;
|
||||
HDRfreetag hdrfreetag;
|
||||
HDRget hdrget;
|
||||
HDRgetmin hdrgetmin;
|
||||
HDRadd hdradd;
|
||||
HDRappend hdrappend;
|
||||
HDRaddorappend hdraddorappend;
|
||||
HDRaddi18n hdraddi18n;
|
||||
HDRmodify hdrmodify;
|
||||
HDRremove hdrremove;
|
||||
HDRsprintf hdrsprintf;
|
||||
HDRcopytags hdrcopytags;
|
||||
HDRfreeiter hdrfreeiter;
|
||||
HDRinititer hdrinititer;
|
||||
HDRnextiter hdrnextiter;
|
||||
void * hdrvecs;
|
||||
void * hdrdata;
|
||||
int hdrversion;
|
||||
};
|
||||
|
||||
#endif /* H_HEADER_METHOD */
|
Loading…
Reference in New Issue