Skip to content
Snippets Groups Projects
Commit 05e61d69 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

xml api for Multimap

parent 7ad94fec
No related branches found
No related tags found
1 merge request!80Merge jt
/*
* Multimap.cpp
*
* Created on: Apr 1, 2013
* Author: Jan Travnicek
*/
#include "ObjectsMultimap.h"
#include <registration/XmlRegistration.hpp>
namespace {
static auto xmlWrite = registration::XmlWriterRegister < ext::multimap < object::Object, object::Object > > ( );
static auto xmlRead = registration::XmlReaderRegister < ext::multimap < object::Object, object::Object > > ( );
static auto xmlGroup = registration::XmlRegisterTypeInGroup < object::Object, ext::multimap < object::Object, object::Object > > ( );
} /* namespace */
/*
* Multimap.h
*
* Created on: Apr 1, 2013
* Author: Jan Travnicek
*/
#ifndef _XML_OBJECTS_MULTIMAP_H_
#define _XML_OBJECTS_MULTIMAP_H_
#include <alib/multimap>
#include <core/xmlApi.hpp>
#include <container/xml/ObjectsPair.h>
namespace core {
template < typename T, typename R >
struct xmlApi < ext::multimap < T, R > > {
static ext::multimap < T, R > parse ( ext::deque < sax::Token >::iterator & input );
static bool first ( const ext::deque < sax::Token >::const_iterator & input );
static std::string xmlTagName ( );
static void compose ( ext::deque < sax::Token > & output, const ext::multimap < T, R > & data );
};
template < typename T, typename R >
ext::multimap < T, R > xmlApi < ext::multimap < T, R > >::parse ( ext::deque < sax::Token >::iterator & input ) {
sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
ext::multimap < T, R > multimap;
while ( sax::FromXMLParserHelper::isTokenType ( input, sax::Token::TokenType::START_ELEMENT ) )
multimap.insert ( core::xmlApi < ext::pair < T, R > >::parse ( input ) );
sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
return multimap;
}
template < typename T, typename R >
bool xmlApi < ext::multimap < T, R > >::first ( const ext::deque < sax::Token >::const_iterator & input ) {
return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
}
template < typename T, typename R >
std::string xmlApi < ext::multimap < T, R > >::xmlTagName ( ) {
return "Multimap";
}
template < typename T, typename R >
void xmlApi < ext::multimap < T, R > >::compose ( ext::deque < sax::Token > & output, const ext::multimap < T, R > & input ) {
output.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
for ( const std::pair < const T, R > & item : input )
core::xmlApi < std::pair < const T, R > >::compose ( output, item );
output.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
}
} /* namespace core */
#endif /* _XML_OBJECTS_MULTIMAP_H_ */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment