1 // SALOME DataTypeCatalog : catalog of data types
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library 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 GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
24 // File : SALOME_DataTypeCatalog_Handler.cxx
25 // Author : Estelle Deville
29 #include "SALOME_DataTypeCatalog_Handler.hxx"
31 #include "utilities.h"
35 // contains all the data types defined in the catalog
36 ListOfParserDataType _datatypelist;
38 //----------------------------------------------------------------------
39 // Function : SALOME_DataTypeCatalog_Handler
40 // Purpose : Constructor
41 //----------------------------------------------------------------------
42 SALOME_DataTypeCatalog_Handler::SALOME_DataTypeCatalog_Handler()
44 MESSAGE("SALOME_DataTypeCatalog_Handler creation");
45 // XML Tags initialisation
46 // Used in the function endElement
47 test_data_type_name = "DataType-name";
48 test_data_type_interf_read = "DataType-interface-read";
49 test_data_type_interf_write = "DataType-interface-write";
50 test_data_type_parent_name = "Parent-name" ;
51 test_data_type_parents = "DataType-Parents-list";
52 test_data_type = "DataType";
55 //----------------------------------------------------------------------
56 // Function : ~SALOME_DataTypeCatalog_Handler
57 // Purpose : Destructor
58 //----------------------------------------------------------------------
59 SALOME_DataTypeCatalog_Handler::~SALOME_DataTypeCatalog_Handler()
61 MESSAGE("SALOME_DataTypeCatalog_Handler destruction");
64 //----------------------------------------------------------------------
65 // Function : startDocument
66 // Purpose : overload handler function
67 //----------------------------------------------------------------------
68 bool SALOME_DataTypeCatalog_Handler::startDocument()
70 MESSAGE("Begin parse document")
71 // Empty the private elements
72 _datatypelist.resize(0);
73 _a_data_parents_list.resize(0);
77 //----------------------------------------------------------------------
78 // Function : startElement
79 // Purpose : overload handler function
80 //----------------------------------------------------------------------
81 bool SALOME_DataTypeCatalog_Handler::startElement(const QString&,
84 const QXmlAttributes& atts)
89 //----------------------------------------------------------------------
90 // Function : endElement
91 // Purpose : overload handler function
92 //----------------------------------------------------------------------
93 bool SALOME_DataTypeCatalog_Handler::endElement(const QString&,
99 // tag test_data_type_name
100 if((qName.compare(QString(test_data_type_name))==0))
101 _a_data_type.Parserdata_name = content;
102 // tag test_data_type_interf_read
103 if((qName.compare(QString(test_data_type_interf_read))==0))
104 _a_data_type.Parserdata_interface_read = content;
105 // tag test_data_type_interf_write
106 if((qName.compare(QString(test_data_type_interf_write))==0))
107 _a_data_type.Parserdata_interface_write = content;
109 // tag test_data_type_parent_name
110 if((qName.compare(QString(test_data_type_parent_name))==0))
111 _a_data_parents_list.push_back(content);
113 // tag test_data_type_parents
114 if((qName.compare(QString(test_data_type_parents))==0))
116 _a_data_type.Parserdata_parents = _a_data_parents_list;
117 _a_data_parents_list.resize(0);;
120 // tag test_data_type
121 if((qName.compare(QString(test_data_type))==0))
123 _datatypelist.push_back(_a_data_type);
125 // Empty temporary structures
126 _a_data_type.Parserdata_name = "";
127 _a_data_type.Parserdata_interface_read = "";
128 _a_data_type.Parserdata_interface_write = "";
129 _a_data_type.Parserdata_parents.resize(0);
137 //----------------------------------------------------------------------
138 // Function : characters
139 // Purpose : overload handler function
140 //----------------------------------------------------------------------
141 bool SALOME_DataTypeCatalog_Handler::characters(const QString& chars)
143 content = (const char*)chars ;
147 //----------------------------------------------------------------------
148 // Function : endDocument
149 // Purpose : overload handler function
150 // Print all informations find in the catalog
151 // (only in DEBUG mode!!)
152 //----------------------------------------------------------------------
153 bool SALOME_DataTypeCatalog_Handler::endDocument()
156 for (unsigned int ind = 0; ind < _datatypelist.size(); ind++)
158 MESSAGE("DataType Name :"<<_datatypelist[ind].Parserdata_name);
159 MESSAGE("DataType interface read :"<<_datatypelist[ind].Parserdata_interface_read);
160 MESSAGE("DataType interface write :"<<_datatypelist[ind].Parserdata_interface_write);
162 for (unsigned int i = 0; i < _datatypelist[ind].Parserdata_parents.size(); i++)
163 MESSAGE("Parent name :" << _datatypelist[ind].Parserdata_parents[i]);
166 MESSAGE("Document parsed");
170 //----------------------------------------------------------------------
171 // Function : errorProtocol
172 // Purpose : overload handler function
173 //----------------------------------------------------------------------
174 QString SALOME_DataTypeCatalog_Handler::errorProtocol()
180 //----------------------------------------------------------------------
181 // Function : fatalError
182 // Purpose : overload handler function
183 //----------------------------------------------------------------------
184 bool SALOME_DataTypeCatalog_Handler::fatalError(const QXmlParseException& exception)
186 errorProt += QString( "fatal parsing error: %1 in line %2, column %3\n" )
187 .arg( exception.message() )
188 .arg( exception.lineNumber() )
189 .arg( exception.columnNumber() );
191 return QXmlDefaultHandler::fatalError( exception );