- XMLPreferenceDictionaryImporter(PreferenceDictionary& preferences, const char* version)
- : m_preferences(preferences), m_version(version_parse(version))
- {
- }
-
- void pushElement(const XMLElement& element)
- {
- if(m_xml_stack.empty())
- {
- if(string_equal(element.name(), "qpref"))
- {
- Version dataVersion(version_parse(element.attribute("version")));
- if(!version_compatible(m_version, dataVersion))
- {
- globalOutputStream() << "qpref import: data version " << dataVersion << " is not compatible with code version " << m_version << "\n";
- m_xml_stack.push_back(xml_state_t::tag_qpref_ignore);
- }
- else
- {
- globalOutputStream() << "qpref import: data version " << dataVersion << " is compatible with code version " << m_version << "\n";
- m_xml_stack.push_back(xml_state_t::tag_qpref);
- }
- }
- else
- {
- // not valid
- }
- }
- else
- {
- switch(m_xml_stack.back().m_tag)
- {
- case xml_state_t::tag_qpref:
- if(string_equal(element.name(), "epair"))
- {
- m_xml_stack.push_back(xml_state_t::tag_epair);
- m_xml_stack.back().m_name = element.attribute("name");
- }
- else
- {
- // not valid
- }
- break;
- case xml_state_t::tag_qpref_ignore:
- if(string_equal(element.name(), "epair"))
- {
- m_xml_stack.push_back(xml_state_t::tag_epair_ignore);
- }
- else
- {
- // not valid
- }
- break;
- case xml_state_t::tag_epair:
- case xml_state_t::tag_epair_ignore:
- // not valid
- break;
- }
- }
-
- }
- void popElement(const char* name)
- {
- if(m_xml_stack.back().m_tag == xml_state_t::tag_epair)
- {
- m_preferences.importPref(m_xml_stack.back().m_name.c_str(), m_xml_stack.back().m_ostream.c_str());
- }
- m_xml_stack.pop_back();
- }
- std::size_t write(const char* buffer, std::size_t length)
- {
- return m_xml_stack.back().m_ostream.write(buffer, length);
- }
+XMLPreferenceDictionaryImporter( PreferenceDictionary& preferences, const char* version )
+ : m_preferences( preferences ), m_version( version_parse( version ) ){
+}
+
+void pushElement( const XMLElement& element ){
+ if ( m_xml_stack.empty() ) {
+ if ( string_equal( element.name(), "qpref" ) ) {
+ Version dataVersion( version_parse( element.attribute( "version" ) ) );
+ if ( !version_compatible( m_version, dataVersion ) ) {
+ globalOutputStream() << "qpref import: data version " << dataVersion << " is not compatible with code version " << m_version << "\n";
+ m_xml_stack.push_back( xml_state_t::tag_qpref_ignore );
+ }
+ else
+ {
+ globalOutputStream() << "qpref import: data version " << dataVersion << " is compatible with code version " << m_version << "\n";
+ m_xml_stack.push_back( xml_state_t::tag_qpref );
+ }
+ }
+ else
+ {
+ // not valid
+ }
+ }
+ else
+ {
+ switch ( m_xml_stack.back().m_tag )
+ {
+ case xml_state_t::tag_qpref:
+ if ( string_equal( element.name(), "epair" ) ) {
+ m_xml_stack.push_back( xml_state_t::tag_epair );
+ m_xml_stack.back().m_name = element.attribute( "name" );
+ }
+ else
+ {
+ // not valid
+ }
+ break;
+ case xml_state_t::tag_qpref_ignore:
+ if ( string_equal( element.name(), "epair" ) ) {
+ m_xml_stack.push_back( xml_state_t::tag_epair_ignore );
+ }
+ else
+ {
+ // not valid
+ }
+ break;
+ case xml_state_t::tag_epair:
+ case xml_state_t::tag_epair_ignore:
+ // not valid
+ break;
+ }
+ }
+
+}
+void popElement( const char* name ){
+ if ( m_xml_stack.back().m_tag == xml_state_t::tag_epair ) {
+ m_preferences.importPref( m_xml_stack.back().m_name.c_str(), m_xml_stack.back().m_ostream.c_str() );
+ }
+ m_xml_stack.pop_back();
+}
+std::size_t write( const char* buffer, std::size_t length ){
+ return m_xml_stack.back().m_ostream.write( buffer, length );
+}