~ubuntu-branches/ubuntu/lucid/libxml-libxml-perl/lucid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/* parser.h
 * $Id: parser.h,v 1.1 2001/10/26 00:30:46 phish Exp $
 * Author: Christian Glahn (2001) 
 *
 * This header keeps the the c-part of the multiple parser
 * implementation. I think this module is required, so we keep the
 * perl implementation clear of adding c-features to 
 *
 * TODO:
 * add all parser flags
 */

#ifndef __LIBXML_PARSER_H__
#define __LIBXML_PARSER_H__

#ifdef __cplusplus
extern "C" {
#endif

#include <libxml/parser.h>
#include <libxml/xmlIO.h>
#include <libxml/xpath.h>
#include <libxml/xmlerror.h>

#ifdef __cplusplus
}
#endif

struct _perlxmlParserObject 
{
    /* general callbacks */
    xmlInputMatchCallback match_cb;
    xmlInputReadCallback read_cb;
    xmlInputOpenCallback open_cb;
    xmlInputCloseCallback close_cb;

    xmlGenericErrorFunc error_cb;
    xmlExternalEntityLoader entity_loader_cb;

    /* then the pseudo sax handler */
    xmlSAXHandlerPtr SAX_handler; /* this is for the time when daniel 
                                   * implemented real SAX funcitonality 
                                   */

    void * error_fh;

    /* library parser flags */
    int substitute_entities; 
    int keep_blanks;
    int get_warnings;
    int load_ext_entities;
    int do_validation;
    int be_pedantic;
};

typedef struct _perlxmlParserObject perlxmlParserObject;
typedef perlxmlParserObject *perlxmlParserObjectPtr;

void
perlxmlInitParserObject( perlxmlParserObjectPtr * objectPtr );

void
perlxmlDestroyParserObject( perlxmlParserObjectPtr * objectPtr );

/* the following 2 functions are used to init the library parser with a parserobject */
void
perlxmlInitLibParser ( perlxmlParserObjectPtr parser );

void
perlxmlCleanupLibParser ( perlxmlParserObjectPtr parser );

/* the following functions are simply wrappers for the libxml2 functions */

xmlDocPtr
perlxmlParseFile( perlxmlParserObjectPtr object,
                  xmlChar * filename );

xmlDocPtr
perlxmlParseMemory( perlxmlParserObjectPtr object, 
                    const char * buffer,
                    int size );

xmlDocPtr
perlxmlParseDoc( perlxmlParserObjectPtr object,
                 xmlChar * cur );

xmlNodeSetPtr
perlxmlParseBalancedChunkMemory( perlxmlParserObjectPtr object, 
                                 xmlDocPtr document,
                                 const xmlChar * string );
                                 
                               

void 
perlxmlSetErrorCallback( perlxmlParserObjectPtr parser, 
                         xmlGenericErrorFunc error_callback );

void
perlxmlSetExtEntityLoader( perlxmlParserObjectPtr parser,
                           xmlExternalEntityLoader entity_loader );

void
perlxmlSetOpenCallback( perlxmlParserObjectPtr parser,
                        xmlInputOpenCallback open_callback);

void
perlxmlSetCloseCallback( perlxmlParserObjectPtr parser,
                         xmlInputCloseCallback close_callback);

void
perlxmlSetMatchCallback( perlxmlParserObjectPtr parser,
                         xmlInputMatchCallback match_callback );

void
perlxmlSetReadCallback( perlxmlParserObjectPtr parser,
                        xmlInputReadCallback match_callback );

void
perlxmlSetErrorOutHandler( perlxmlParserObjectPtr parserObject,
                           void * error_fh );

#endif