mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
b81844b173
tests pass.
43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
/* Header for pg xml parser interface */
|
|
|
|
static void *pgxml_palloc(size_t size);
|
|
static void *pgxml_repalloc(void *ptr, size_t size);
|
|
static void pgxml_pfree(void *ptr);
|
|
static void pgxml_mhs_init();
|
|
static void pgxml_handler_init();
|
|
Datum pgxml_parse(PG_FUNCTION_ARGS);
|
|
Datum pgxml_xpath(PG_FUNCTION_ARGS);
|
|
static void pgxml_starthandler(void *userData, const XML_Char * name,
|
|
const XML_Char ** atts);
|
|
static void pgxml_endhandler(void *userData, const XML_Char * name);
|
|
static void pgxml_charhandler(void *userData, const XML_Char * s, int len);
|
|
static void pgxml_pathcompare(void *userData);
|
|
static void pgxml_finalisegrabbedtext(void *userData);
|
|
|
|
#define MAXPATHLENGTH 512
|
|
#define MAXRESULTS 100
|
|
|
|
|
|
typedef struct
|
|
{
|
|
int rescount;
|
|
char *results[MAXRESULTS];
|
|
int32 reslens[MAXRESULTS];
|
|
char *resbuf; /* pointer to the result buffer for pfree */
|
|
} XPath_Results;
|
|
|
|
|
|
|
|
typedef struct
|
|
{
|
|
char currentpath[MAXPATHLENGTH];
|
|
char *path;
|
|
int textgrab;
|
|
char *resptr;
|
|
int32 reslen;
|
|
XPath_Results *xpres;
|
|
} pgxml_udata;
|
|
|
|
|
|
#define UD ((pgxml_udata *) userData)
|