1 /* Copyright (C) 2021 Free Software Foundation, Inc.
2    Contributed by Oracle.
3 
4    This file is part of GNU Binutils.
5 
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3, or (at your option)
9    any later version.
10 
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15 
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, 51 Franklin Street - Fifth Floor, Boston,
19    MA 02110-1301, USA.  */
20 
21 /*
22  *  org/xml/sax/helpers/DefaultHandler.java
23  *  Based on JavaTM 2 Platform Standard Ed. 5.0
24  */
25 
26 #ifndef _DefaultHandler_h
27 #define _DefaultHandler_h
28 
29 /*
30  *	org/xml/sax/Attributes.java
31  */
32 class Attributes
33 {
34 public:
~Attributes()35   virtual ~Attributes () { };
36 
37   virtual int getLength () = 0;
38   virtual const char *getQName (int index) = 0;
39   virtual const char *getValue (int index) = 0;
40   virtual int getIndex (const char *qName) = 0;
41   virtual const char *getValue (const char *qName) = 0;
42 };
43 
44 /*
45  *	org/xml/sax/SAXException.java
46  */
47 class SAXException
48 {
49 public:
50   SAXException ();
51   SAXException (const char *message);
52   virtual ~SAXException ();
53   char *getMessage ();
54 
55 private:
56   char *message;
57 };
58 
59 class SAXParseException : public SAXException
60 {
61 public:
62   SAXParseException (char *message, int lineNumber, int columnNumber);
63 
64   int
getLineNumber()65   getLineNumber ()
66   {
67     return lineNumber;
68   }
69 
70   int
getColumnNumber()71   getColumnNumber ()
72   {
73     return columnNumber;
74   }
75 
76 private:
77   int lineNumber;
78   int columnNumber;
79 };
80 
81 class DefaultHandler
82 {
83 public:
~DefaultHandler()84   virtual ~DefaultHandler () { };
85 
86   virtual void startDocument () = 0;
87   virtual void endDocument () = 0;
88   virtual void startElement (char *uri, char *localName, char *qName,
89 			     Attributes *attributes) = 0;
90   virtual void endElement (char *uri, char *localName, char *qName) = 0;
91   virtual void characters (char *ch, int start, int length) = 0;
92   virtual void ignorableWhitespace (char *ch, int start, int length) = 0;
93 
94   virtual void
warning(SAXParseException * e)95   warning (SAXParseException *e)
96   {
97     delete e;
98   }
99 
100   virtual void
error(SAXParseException * e)101   error (SAXParseException *e)
102   {
103     delete e;
104   }
105 
106   virtual void
fatalError(SAXParseException * e)107   fatalError (SAXParseException *e)
108   {
109     throw ( e);
110   }
111   void dump_startElement (const char *qName, Attributes *attributes);
112 };
113 
114 #endif /* _DefaultHandler_h */
115