Skip to content
Snippets Groups Projects
BlankSymbol.cpp 1.79 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
     * BlankSymbol.cpp
     *
     *  Created on: Mar 26, 2013
     *      Author: Jan Travnicek
     */
    
    #include "BlankSymbol.h"
    
    #include <sax/FromXMLParserHelper.h>
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    #include "Symbol.h"
    
    #include "../object/Object.h"
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    #include "../XmlApi.hpp"
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    #include "UniqueSymbol.h"
    
    
    namespace alphabet {
    
    
    BlankSymbol::BlankSymbol() {
    
    
    }
    
    SymbolBase* BlankSymbol::clone() const {
    	return new BlankSymbol(*this);
    }
    
    SymbolBase* BlankSymbol::plunder() && {
    	return new BlankSymbol(std::move(*this));
    }
    
    
    int BlankSymbol::compare(const BlankSymbol&) const {
    	return 0;
    
    }
    
    void BlankSymbol::operator>>(std::ostream& out) const {
    	out << "(Blank symbol)";
    }
    
    BlankSymbol::operator std::string () const {
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    	return "B";
    
    }
    
    BlankSymbol BlankSymbol::BLANK = BlankSymbol();
    
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    const std::string BlankSymbol::XML_TAG_NAME = "BlankSymbol";
    
    BlankSymbol BlankSymbol::parse(std::deque<sax::Token>::iterator& input) {
    	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, BlankSymbol::XML_TAG_NAME);
    	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, BlankSymbol::XML_TAG_NAME);
    	return BlankSymbol();
    }
    
    void BlankSymbol::compose(std::deque<sax::Token>& out) const {
    	out.emplace_back(BlankSymbol::XML_TAG_NAME, sax::Token::TokenType::START_ELEMENT);
    	out.emplace_back(BlankSymbol::XML_TAG_NAME, sax::Token::TokenType::END_ELEMENT);
    }
    
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    SymbolBase* BlankSymbol::next() const {
    	return new UniqueSymbol(Symbol(*this), primitive::Integer(0));
    }
    
    SymbolBase* BlankSymbol::inc() && {
    	return new UniqueSymbol(Symbol(std::move(*this)), primitive::Integer(0));
    }
    
    
    } /* namespace alphabet */
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    namespace alib {
    
    
    auto blankSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BlankSymbol>();
    auto blankSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::BlankSymbol>();
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    } /* namespace alib */