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
30 #define WRITE_CATA_DATA_TYPE
31 #include "SALOME_DataTypeCatalog_Handler.hxx"
33 //----------------------------------------------------------------------
34 // Function : SALOME_DataTypeCatalog_Handler
35 // Purpose : Constructor
36 //----------------------------------------------------------------------
37 SALOME_DataTypeCatalog_Handler::SALOME_DataTypeCatalog_Handler()
39 MESSAGE("SALOME_DataTypeCatalog_Handler creation");
40 // XML Tags initialisation
41 // Used in the function endElement
42 test_data_type_name = "DataType-name";
43 test_data_type_interf_read = "DataType-interface-read";
44 test_data_type_interf_write = "DataType-interface-write";
45 test_data_type_parent_name = "Parent-name" ;
46 test_data_type_parents = "DataType-Parents-list";
47 test_data_type = "DataType";
50 //----------------------------------------------------------------------
51 // Function : ~SALOME_DataTypeCatalog_Handler
52 // Purpose : Destructor
53 //----------------------------------------------------------------------
54 SALOME_DataTypeCatalog_Handler::~SALOME_DataTypeCatalog_Handler()
56 MESSAGE("SALOME_DataTypeCatalog_Handler destruction");
59 //----------------------------------------------------------------------
60 // Function : startDocument
61 // Purpose : overload handler function
62 //----------------------------------------------------------------------
63 bool SALOME_DataTypeCatalog_Handler::startDocument()
65 MESSAGE("Begin parse document")
66 // Empty the private elements
67 _datatypelist.resize(0);
68 _a_data_parents_list.resize(0);
72 //----------------------------------------------------------------------
73 // Function : startElement
74 // Purpose : overload handler function
75 //----------------------------------------------------------------------
76 bool SALOME_DataTypeCatalog_Handler::startElement(const QString&,
79 const QXmlAttributes& atts)
84 //----------------------------------------------------------------------
85 // Function : endElement
86 // Purpose : overload handler function
87 //----------------------------------------------------------------------
88 bool SALOME_DataTypeCatalog_Handler::endElement(const QString&,
94 // tag test_data_type_name
95 if((qName.compare(QString(test_data_type_name))==0))
96 _a_data_type.Parserdata_name = content;
97 // tag test_data_type_interf_read
98 if((qName.compare(QString(test_data_type_interf_read))==0))
99 _a_data_type.Parserdata_interface_read = content;
100 // tag test_data_type_interf_write
101 if((qName.compare(QString(test_data_type_interf_write))==0))
102 _a_data_type.Parserdata_interface_write = content;
104 // tag test_data_type_parent_name
105 if((qName.compare(QString(test_data_type_parent_name))==0))
106 _a_data_parents_list.push_back(content);
108 // tag test_data_type_parents
109 if((qName.compare(QString(test_data_type_parents))==0))
111 _a_data_type.Parserdata_parents = _a_data_parents_list;
112 _a_data_parents_list.resize(0);;
115 // tag test_data_type
116 if((qName.compare(QString(test_data_type))==0))
118 _datatypelist.push_back(_a_data_type);
120 // Empty temporary structures
121 _a_data_type.Parserdata_name = "";
122 _a_data_type.Parserdata_interface_read = "";
123 _a_data_type.Parserdata_interface_write = "";
124 _a_data_type.Parserdata_parents.resize(0);
132 //----------------------------------------------------------------------
133 // Function : characters
134 // Purpose : overload handler function
135 //----------------------------------------------------------------------
136 bool SALOME_DataTypeCatalog_Handler::characters(const QString& chars)
138 content = (const char*)chars ;
142 //----------------------------------------------------------------------
143 // Function : endDocument
144 // Purpose : overload handler function
145 // Print all informations find in the catalog
146 // (only in DEBUG mode!!)
147 //----------------------------------------------------------------------
148 bool SALOME_DataTypeCatalog_Handler::endDocument()
151 for (unsigned int ind = 0; ind < _datatypelist.size(); ind++)
153 MESSAGE("DataType Name :"<<_datatypelist[ind].Parserdata_name);
154 MESSAGE("DataType interface read :"<<_datatypelist[ind].Parserdata_interface_read);
155 MESSAGE("DataType interface write :"<<_datatypelist[ind].Parserdata_interface_write);
157 for (unsigned int i = 0; i < _datatypelist[ind].Parserdata_parents.size(); i++)
158 MESSAGE("Parent name :" << _datatypelist[ind].Parserdata_parents[i]);
161 MESSAGE("Document parsed");
165 //----------------------------------------------------------------------
166 // Function : errorProtocol
167 // Purpose : overload handler function
168 //----------------------------------------------------------------------
169 QString SALOME_DataTypeCatalog_Handler::errorProtocol()
175 //----------------------------------------------------------------------
176 // Function : fatalError
177 // Purpose : overload handler function
178 //----------------------------------------------------------------------
179 bool SALOME_DataTypeCatalog_Handler::fatalError(const QXmlParseException& exception)
181 errorProt += QString( "fatal parsing error: %1 in line %2, column %3\n" )
182 .arg( exception.message() )
183 .arg( exception.lineNumber() )
184 .arg( exception.columnNumber() );
186 return QXmlDefaultHandler::fatalError( exception );