xref: /Universal-ctags/parsers/xml.h (revision f511f9eb802ccb3d90d678f7626b115790dd22fc)
1bbc76549SMasatake YAMATO /*
2bbc76549SMasatake YAMATO *   Copyright (c) 2019, Red Hat, Inc.
3bbc76549SMasatake YAMATO *   Copyright (c) 2019, Masatake YAMATO
4bbc76549SMasatake YAMATO *
5bbc76549SMasatake YAMATO *   This source code is released for free distribution under the terms of the
6bbc76549SMasatake YAMATO *   GNU General Public License version 2 or (at your option) any later version.
7bbc76549SMasatake YAMATO */
8bbc76549SMasatake YAMATO 
9bbc76549SMasatake YAMATO #ifndef CTAGS_PARSER_XML_H
10bbc76549SMasatake YAMATO #define CTAGS_PARSER_XML_H
11bbc76549SMasatake YAMATO 
12bbc76549SMasatake YAMATO /*
13bbc76549SMasatake YAMATO *   INCLUDE FILES
14bbc76549SMasatake YAMATO */
15bbc76549SMasatake YAMATO #include "general.h"  /* must always come first */
16bbc76549SMasatake YAMATO #include "subparser.h"
17bbc76549SMasatake YAMATO 
18bbc76549SMasatake YAMATO /*
19bbc76549SMasatake YAMATO *	 DATA DECLARATIONS
20bbc76549SMasatake YAMATO */
21bbc76549SMasatake YAMATO 
22bbc76549SMasatake YAMATO typedef struct sXmlSubparser xmlSubparser;
23bbc76549SMasatake YAMATO struct sXmlSubparser {
24bbc76549SMasatake YAMATO 	subparser subparser;
25bbc76549SMasatake YAMATO 
26bbc76549SMasatake YAMATO 	/* Similar to makeTagEntryNotify method of subparser.
27bbc76549SMasatake YAMATO 	 * However, makeTagEntryWithNodeNotify passes the xml node
28bbc76549SMasatake YAMATO 	 * just found to subparsers.
29bbc76549SMasatake YAMATO 	 */
30bbc76549SMasatake YAMATO 	void (* makeTagEntryWithNodeNotify) (xmlSubparser *s,
31bbc76549SMasatake YAMATO 										 xmlNode *node, tagEntryInfo *xmlTag);
32*f511f9ebSMasatake YAMATO 
33*f511f9ebSMasatake YAMATO 	/* A subparser should call findXMLTags() in the callback function
34*f511f9ebSMasatake YAMATO 	 * assigned to this field. The XML base parser prepares CTX and ROOT.
35*f511f9ebSMasatake YAMATO 	 * A subparser may pass the CTX and ROOT to findXMLTags().
36*f511f9ebSMasatake YAMATO 	 * The XML base parser tags id= and namespace related attributes before
37*f511f9ebSMasatake YAMATO 	 * calling this hook. CTX and ROOT are already used once by
38*f511f9ebSMasatake YAMATO 	 * the XML base parser for tagging id= and namespace related attributes.
39*f511f9ebSMasatake YAMATO 	 * The resource life cycle of CTX and ROOT is managed by the base parser.
40*f511f9ebSMasatake YAMATO 	 */
41*f511f9ebSMasatake YAMATO 	void (* runXPathEngine) (xmlSubparser *s,
42*f511f9ebSMasatake YAMATO 							 xmlXPathContext *ctx, xmlNode *root);
43bbc76549SMasatake YAMATO };
44bbc76549SMasatake YAMATO 
45bbc76549SMasatake YAMATO #endif /* CTAGS_PARSER_XML_H */
46