Skip to content
Snippets Groups Projects
HexavigesimalLabel.cpp 2.19 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jan Trávníček's avatar
    Jan Trávníček committed
    /*
     * HexavigesimalLabel.cpp
     *
     *  Created on: Mar 26, 2013
     *      Author: Jan Travicek
     */
    
    #include "HexavigesimalLabel.h"
    
    #include <sax/FromXMLParserHelper.h>
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    #include "Label.h"
    
    #include <object/Object.h>
    
    #include <registration/TypeRegistration.hpp>
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    namespace label {
    
    
    HexavigesimalLabel::HexavigesimalLabel(int hexavigesimal) : m_hexavigesimal(hexavigesimal) {
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    }
    
    LabelBase* HexavigesimalLabel::clone() const {
    	return new HexavigesimalLabel(*this);
    }
    
    LabelBase* HexavigesimalLabel::plunder() && {
    	return new HexavigesimalLabel(std::move(*this));
    }
    
    int HexavigesimalLabel::getData() const {
    
    	return m_hexavigesimal;
    
    void HexavigesimalLabel::setData(int data) {
    
    	this->m_hexavigesimal = data;
    
    int HexavigesimalLabel::compare(const HexavigesimalLabel& other) const {
    
    	return m_hexavigesimal - other.m_hexavigesimal;
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    }
    
    void HexavigesimalLabel::operator>>(std::ostream& out) const {
    
    	out << "(HexavigesimalLabel " << ext::toBase26(m_hexavigesimal) << ")";
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    }
    
    HexavigesimalLabel::operator std::string() const {
    
    	return ext::toBase26(m_hexavigesimal);
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    HexavigesimalLabel HexavigesimalLabel::parse(std::deque<sax::Token>::iterator& input) {
    
    	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, HexavigesimalLabel::getXmlTagName());
    
    	HexavigesimalLabel data(ext::from_string < int > (sax::FromXMLParserHelper::popTokenData(input, sax::Token::TokenType::CHARACTER)));
    
    	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, HexavigesimalLabel::getXmlTagName());
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    	return data;
    }
    
    void HexavigesimalLabel::compose(std::deque<sax::Token>& out) const {
    
    	out.emplace_back(HexavigesimalLabel::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
    
    	out.emplace_back(ext::to_string(m_hexavigesimal), sax::Token::TokenType::CHARACTER);
    
    	out.emplace_back(HexavigesimalLabel::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    LabelBase* HexavigesimalLabel::inc() && {
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    	return NULL;
    }
    
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    } /* namespace label */
    
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    namespace alib {
    
    
    auto hexavigesimalLabelType = registration::TypeRegister < label::Label, label::HexavigesimalLabel > ( );
    auto hexavigesimalLabelType2 = registration::TypeRegister < alib::Object, label::HexavigesimalLabel > ( );
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    } /* namespace alib */