From f16da90adeb28d6a55dbe0567dd58fe3066e764d Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sat, 19 Nov 2016 21:00:42 +0100 Subject: [PATCH] allow inc on all datatypes --- alib2common/src/container/ObjectsDeque.h | 8 ++++++++ alib2common/src/container/ObjectsList.h | 8 ++++++++ alib2common/src/container/ObjectsMap.h | 8 ++++++++ alib2common/src/container/ObjectsPair.h | 8 ++++++++ alib2common/src/container/ObjectsSet.h | 8 ++++++++ alib2common/src/container/ObjectsTree.h | 8 ++++++++ alib2common/src/container/ObjectsVector.h | 8 ++++++++ alib2common/src/exception/CommonException.cpp | 5 +++++ alib2common/src/exception/CommonException.h | 2 ++ alib2common/src/object/Object.cpp | 4 ++++ alib2common/src/object/Object.h | 2 ++ alib2common/src/object/ObjectBase.h | 2 ++ alib2common/src/object/Void.cpp | 5 +++++ alib2common/src/object/Void.h | 2 ++ alib2data/src/automaton/FSM/CompactNFA.h | 8 ++++++++ alib2data/src/automaton/FSM/DFA.h | 8 ++++++++ alib2data/src/automaton/FSM/EpsilonNFA.h | 8 ++++++++ alib2data/src/automaton/FSM/ExtendedNFA.h | 8 ++++++++ alib2data/src/automaton/FSM/MultiInitialStateNFA.h | 8 ++++++++ alib2data/src/automaton/FSM/NFA.h | 8 ++++++++ alib2data/src/automaton/PDA/DPDA.h | 8 ++++++++ alib2data/src/automaton/PDA/InputDrivenDPDA.h | 8 ++++++++ alib2data/src/automaton/PDA/InputDrivenNPDA.h | 8 ++++++++ alib2data/src/automaton/PDA/NPDA.h | 8 ++++++++ alib2data/src/automaton/PDA/NPDTA.h | 10 +++++++++- .../automaton/PDA/RealTimeHeightDeterministicDPDA.h | 8 ++++++++ .../automaton/PDA/RealTimeHeightDeterministicNPDA.h | 8 ++++++++ alib2data/src/automaton/PDA/SinglePopDPDA.h | 8 ++++++++ alib2data/src/automaton/PDA/SinglePopNPDA.h | 8 ++++++++ alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h | 8 ++++++++ alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h | 8 ++++++++ alib2data/src/automaton/TA/DFTA.h | 8 ++++++++ alib2data/src/automaton/TA/NFTA.h | 8 ++++++++ alib2data/src/automaton/TM/OneTapeDTM.h | 8 ++++++++ alib2data/src/grammar/ContextFree/CFG.h | 8 ++++++++ alib2data/src/grammar/ContextFree/CNF.h | 8 ++++++++ alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h | 8 ++++++++ alib2data/src/grammar/ContextFree/GNF.h | 8 ++++++++ alib2data/src/grammar/ContextFree/LG.h | 8 ++++++++ alib2data/src/grammar/ContextSensitive/CSG.h | 8 ++++++++ .../grammar/ContextSensitive/NonContractingGrammar.h | 8 ++++++++ alib2data/src/grammar/Regular/LeftLG.h | 8 ++++++++ alib2data/src/grammar/Regular/LeftRG.h | 8 ++++++++ alib2data/src/grammar/Regular/RightLG.h | 8 ++++++++ alib2data/src/grammar/Regular/RightRG.h | 8 ++++++++ .../ContextPreservingUnrestrictedGrammar.h | 8 ++++++++ .../src/grammar/Unrestricted/UnrestrictedGrammar.h | 8 ++++++++ alib2data/src/regexp/formal/FormalRegExp.h | 8 ++++++++ alib2data/src/regexp/unbounded/UnboundedRegExp.h | 8 ++++++++ alib2data/src/rte/formal/FormalRTE.h | 8 ++++++++ alib2data/src/string/CyclicString.h | 8 ++++++++ alib2data/src/string/Epsilon.h | 12 ++++++++++-- alib2data/src/string/LinearString.h | 8 ++++++++ .../tree/ranked/PrefixRankedBarNonlinearPattern.h | 8 ++++++++ alib2data/src/tree/ranked/PrefixRankedBarPattern.h | 8 ++++++++ alib2data/src/tree/ranked/PrefixRankedBarTree.h | 8 ++++++++ .../src/tree/ranked/PrefixRankedNonlinearPattern.h | 8 ++++++++ alib2data/src/tree/ranked/PrefixRankedPattern.h | 8 ++++++++ alib2data/src/tree/ranked/PrefixRankedTree.h | 8 ++++++++ alib2data/src/tree/ranked/RankedNonlinearPattern.h | 8 ++++++++ alib2data/src/tree/ranked/RankedPattern.h | 8 ++++++++ alib2data/src/tree/ranked/RankedTree.h | 8 ++++++++ alib2data/src/tree/unranked/PrefixBarTree.h | 8 ++++++++ .../src/tree/unranked/UnrankedNonlinearPattern.h | 8 ++++++++ alib2data/src/tree/unranked/UnrankedPattern.h | 8 ++++++++ alib2data/src/tree/unranked/UnrankedTree.h | 8 ++++++++ .../graph/directed/AdjacencyListDirectedGraph.cpp | 4 ++++ .../src/graph/directed/AdjacencyListDirectedGraph.h | 2 ++ .../graph/directed/AdjacencyMatrixDirectedGraph.cpp | 4 ++++ .../graph/directed/AdjacencyMatrixDirectedGraph.h | 2 ++ .../undirected/AdjacencyListUndirectedGraph.cpp | 4 ++++ .../graph/undirected/AdjacencyListUndirectedGraph.h | 2 ++ .../undirected/AdjacencyMatrixUndirectedGraph.cpp | 4 ++++ .../undirected/AdjacencyMatrixUndirectedGraph.h | 2 ++ .../src/indexes/suffixTrie/SuffixTrieFinalMark.cpp | 5 +++++ .../src/indexes/suffixTrie/SuffixTrieFinalMark.h | 2 ++ .../suffixTrie/SuffixTrieTerminatingSymbol.cpp | 5 +++++ .../indexes/suffixTrie/SuffixTrieTerminatingSymbol.h | 2 ++ .../src/string/LinearStringTerminatingSymbol.cpp | 5 +++++ .../src/string/LinearStringTerminatingSymbol.h | 2 ++ 80 files changed, 542 insertions(+), 3 deletions(-) diff --git a/alib2common/src/container/ObjectsDeque.h b/alib2common/src/container/ObjectsDeque.h index 049e821805..21282ec7d9 100644 --- a/alib2common/src/container/ObjectsDeque.h +++ b/alib2common/src/container/ObjectsDeque.h @@ -16,6 +16,7 @@ #include "ContainerFeatures.h" #include <core/xmlApi.hpp> +#include "../object/UniqueObject.h" namespace container { @@ -56,6 +57,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; static void compose ( std::deque < sax::Token > & out, const std::deque < ElementType > & input ); + + virtual alib::ObjectBase * inc ( ) &&; }; template < class ElementType > @@ -128,6 +131,11 @@ void ObjectsDeque < ElementType >::compose ( std::deque < sax::Token > & out, co out.emplace_back ( ObjectsDeque < >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class ElementType > +alib::ObjectBase* ObjectsDeque < ElementType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace container */ namespace alib { diff --git a/alib2common/src/container/ObjectsList.h b/alib2common/src/container/ObjectsList.h index 6c8510714b..2cc8d3f47e 100644 --- a/alib2common/src/container/ObjectsList.h +++ b/alib2common/src/container/ObjectsList.h @@ -16,6 +16,7 @@ #include "ContainerFeatures.h" #include <core/xmlApi.hpp> +#include "../object/UniqueObject.h" namespace container { @@ -56,6 +57,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; static void compose ( std::deque < sax::Token > & out, const std::list < ElementType > & input ); + + virtual alib::ObjectBase * inc ( ) &&; }; template < class ElementType > @@ -128,6 +131,11 @@ void ObjectsList < ElementType >::compose ( std::deque < sax::Token > & out, con out.emplace_back ( ObjectsList < >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class ElementType > +alib::ObjectBase* ObjectsList < ElementType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace container */ namespace alib { diff --git a/alib2common/src/container/ObjectsMap.h b/alib2common/src/container/ObjectsMap.h index aafec1d139..c65ae1c4c0 100644 --- a/alib2common/src/container/ObjectsMap.h +++ b/alib2common/src/container/ObjectsMap.h @@ -16,6 +16,7 @@ #include "ContainerFeatures.h" #include <core/xmlApi.hpp> +#include "../object/UniqueObject.h" #include "ObjectsPair.h" @@ -58,6 +59,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; static void compose ( std::deque < sax::Token > & out, const std::map < KeyType, ValueType > & input ); + + virtual alib::ObjectBase * inc ( ) &&; }; template < class KeyType, class ValueType > @@ -131,6 +134,11 @@ void ObjectsMap < KeyType, ValueType >::compose ( std::deque < sax::Token > & ou out.emplace_back ( ObjectsMap < >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class KeyType, class ValueType > +alib::ObjectBase* ObjectsMap < KeyType, ValueType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace container */ namespace alib { diff --git a/alib2common/src/container/ObjectsPair.h b/alib2common/src/container/ObjectsPair.h index d0f8503793..13cb8a5e20 100644 --- a/alib2common/src/container/ObjectsPair.h +++ b/alib2common/src/container/ObjectsPair.h @@ -16,6 +16,7 @@ #include "ContainerFeatures.h" #include <core/xmlApi.hpp> +#include "../object/UniqueObject.h" namespace container { @@ -56,6 +57,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; static void compose ( std::deque < sax::Token > & out, const std::pair < KeyType, ValueType > & input ); + + virtual alib::ObjectBase * inc ( ) &&; }; template < class KeyType, class ValueType > @@ -128,6 +131,11 @@ void ObjectsPair < KeyType, ValueType >::compose ( std::deque < sax::Token > & o out.emplace_back ( ObjectsPair::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class KeyType, class ValueType > +alib::ObjectBase* ObjectsPair < KeyType, ValueType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace container */ namespace alib { diff --git a/alib2common/src/container/ObjectsSet.h b/alib2common/src/container/ObjectsSet.h index 1195aca583..8a91eb6cef 100644 --- a/alib2common/src/container/ObjectsSet.h +++ b/alib2common/src/container/ObjectsSet.h @@ -16,6 +16,7 @@ #include "ContainerFeatures.h" #include <core/xmlApi.hpp> +#include "../object/UniqueObject.h" namespace container { @@ -56,6 +57,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; static void compose ( std::deque < sax::Token > & out, const std::set < ElementType > & input ); + + virtual alib::ObjectBase * inc ( ) &&; }; template < class ElementType > @@ -129,6 +132,11 @@ void ObjectsSet < ElementType >::compose ( std::deque < sax::Token > & out, cons out.emplace_back ( ObjectsSet < >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class ElementType > +alib::ObjectBase* ObjectsSet < ElementType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace container */ namespace alib { diff --git a/alib2common/src/container/ObjectsTree.h b/alib2common/src/container/ObjectsTree.h index d4856161b6..a520ec9090 100644 --- a/alib2common/src/container/ObjectsTree.h +++ b/alib2common/src/container/ObjectsTree.h @@ -16,6 +16,7 @@ #include "ContainerFeatures.h" #include <core/xmlApi.hpp> +#include "../object/UniqueObject.h" namespace container { @@ -55,6 +56,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; static void compose ( std::deque < sax::Token > & out, const std::tree < ElementType > & input ); + + virtual alib::ObjectBase * inc ( ) &&; }; template < class ElementType > @@ -162,6 +165,11 @@ void ObjectsTree < ElementType >::compose ( std::deque < sax::Token > & out, con out.emplace_back ( ObjectsTree < >::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); } +template < class ElementType > +alib::ObjectBase* ObjectsTree < ElementType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace container */ namespace alib { diff --git a/alib2common/src/container/ObjectsVector.h b/alib2common/src/container/ObjectsVector.h index d191758a1f..514343d010 100644 --- a/alib2common/src/container/ObjectsVector.h +++ b/alib2common/src/container/ObjectsVector.h @@ -16,6 +16,7 @@ #include "ContainerFeatures.h" #include <core/xmlApi.hpp> +#include "../object/UniqueObject.h" namespace container { @@ -56,6 +57,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; static void compose ( std::deque < sax::Token > & out, const std::vector < ElementType > & input ); + + virtual alib::ObjectBase * inc ( ) &&; }; template < class ElementType > @@ -128,6 +131,11 @@ void ObjectsVector < ElementType >::compose ( std::deque < sax::Token > & out, c out.emplace_back ( ObjectsVector < >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class ElementType > +alib::ObjectBase* ObjectsVector < ElementType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace container */ namespace alib { diff --git a/alib2common/src/exception/CommonException.cpp b/alib2common/src/exception/CommonException.cpp index b4053278c6..42227afaec 100644 --- a/alib2common/src/exception/CommonException.cpp +++ b/alib2common/src/exception/CommonException.cpp @@ -10,6 +10,7 @@ #include "../sax/FromXMLParserHelper.h" #include "../object/Object.h" #include "../core/xmlApi.hpp" +#include "../object/UniqueObject.h" #include "../global/GlobalData.h" #ifdef DEBUG @@ -115,6 +116,10 @@ void CommonException::compose(std::deque<sax::Token>& out) const { out.emplace_back(CommonException::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } +alib::ObjectBase* CommonException::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace exception */ namespace alib { diff --git a/alib2common/src/exception/CommonException.h b/alib2common/src/exception/CommonException.h index 9676d5c716..5205c4fcc4 100644 --- a/alib2common/src/exception/CommonException.h +++ b/alib2common/src/exception/CommonException.h @@ -79,6 +79,8 @@ public: static CommonException parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace exception */ diff --git a/alib2common/src/object/Object.cpp b/alib2common/src/object/Object.cpp index aa46af4152..54121572ff 100644 --- a/alib2common/src/object/Object.cpp +++ b/alib2common/src/object/Object.cpp @@ -10,6 +10,10 @@ namespace alib { +void Object::inc ( ) { + this->operator ++ ( ); +} + auto ObjectDeleter = xmlApi < alib::Object >::InputContextDeleter ( ); } diff --git a/alib2common/src/object/Object.h b/alib2common/src/object/Object.h index cc0930c2c0..285743dd60 100644 --- a/alib2common/src/object/Object.h +++ b/alib2common/src/object/Object.h @@ -20,6 +20,8 @@ class Object : public alib::WrapperBase < ObjectBase > { using alib::WrapperBase < ObjectBase >::WrapperBase; public: + void inc ( ); + static const std::string & getXmlTagRefName() { static std::string xmlTagName = "ObjectRef"; diff --git a/alib2common/src/object/ObjectBase.h b/alib2common/src/object/ObjectBase.h index 498fdff68a..0c75fc9f52 100644 --- a/alib2common/src/object/ObjectBase.h +++ b/alib2common/src/object/ObjectBase.h @@ -24,6 +24,8 @@ public: virtual ObjectBase* clone() const = 0; virtual ObjectBase* plunder() && = 0; + + virtual ObjectBase* inc() && = 0; }; } /* namespace alib */ diff --git a/alib2common/src/object/Void.cpp b/alib2common/src/object/Void.cpp index 9246d93ed8..bfbb682744 100644 --- a/alib2common/src/object/Void.cpp +++ b/alib2common/src/object/Void.cpp @@ -9,6 +9,7 @@ #include "../sax/FromXMLParserHelper.h" #include "Object.h" #include "../core/xmlApi.hpp" +#include "UniqueObject.h" namespace alib { @@ -49,6 +50,10 @@ void Void::compose(std::deque<sax::Token>& out) const { out.emplace_back(Void::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } +ObjectBase* Void::inc() && { + return new UniqueObject(Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace alib */ namespace alib { diff --git a/alib2common/src/object/Void.h b/alib2common/src/object/Void.h index e8fcc8fae7..d46bd7671a 100644 --- a/alib2common/src/object/Void.h +++ b/alib2common/src/object/Void.h @@ -51,6 +51,8 @@ public: static Void parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual ObjectBase * inc ( ) &&; }; } /* namespace alib */ diff --git a/alib2data/src/automaton/FSM/CompactNFA.h b/alib2data/src/automaton/FSM/CompactNFA.h index 0de2fc7652..ad082df6c5 100644 --- a/alib2data/src/automaton/FSM/CompactNFA.h +++ b/alib2data/src/automaton/FSM/CompactNFA.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> #include <common/createUnique.hpp> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -167,6 +168,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace automaton */ @@ -386,6 +389,11 @@ void CompactNFA < SymbolType, StateType >::composeTransitions ( std::deque < sax out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class StateType > +alib::ObjectBase* CompactNFA < SymbolType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h index e43fcdfa46..84fd9a9022 100644 --- a/alib2data/src/automaton/FSM/DFA.h +++ b/alib2data/src/automaton/FSM/DFA.h @@ -14,6 +14,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -168,6 +169,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template<class SymbolType, class StateType > @@ -354,6 +357,11 @@ void DFA<SymbolType, StateType>::composeTransitions ( std::deque < sax::Token > out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class StateType > +alib::ObjectBase* DFA < SymbolType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.h b/alib2data/src/automaton/FSM/EpsilonNFA.h index 5ca3f7b7cf..e700e94181 100644 --- a/alib2data/src/automaton/FSM/EpsilonNFA.h +++ b/alib2data/src/automaton/FSM/EpsilonNFA.h @@ -16,6 +16,7 @@ #include <sax/FromXMLParserHelper.h> #include <core/components.hpp> #include <common/createUnique.hpp> +#include <object/UniqueObject.h> #include "../AutomatonException.h" #include "../AutomatonBase.h" @@ -244,6 +245,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace automaton */ @@ -574,6 +577,11 @@ void EpsilonNFA < SymbolType, EpsilonType, StateType >::composeTransitions ( std out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class EpsilonType, class StateType > +alib::ObjectBase* EpsilonNFA < SymbolType, EpsilonType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.h b/alib2data/src/automaton/FSM/ExtendedNFA.h index 4e08dcf8ac..c9685960c1 100644 --- a/alib2data/src/automaton/FSM/ExtendedNFA.h +++ b/alib2data/src/automaton/FSM/ExtendedNFA.h @@ -16,6 +16,7 @@ #include <sax/FromXMLParserHelper.h> #include <core/components.hpp> #include <common/createUnique.hpp> +#include <object/UniqueObject.h> #include "../AutomatonException.h" #include "../AutomatonBase.h" @@ -171,6 +172,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace automaton */ @@ -404,6 +407,11 @@ void ExtendedNFA < SymbolType, StateType >::composeTransitions ( std::deque < sa out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class StateType > +alib::ObjectBase* ExtendedNFA < SymbolType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h index 857424a431..2fcdccfb89 100644 --- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h +++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h @@ -14,6 +14,7 @@ #include <sax/FromXMLParserHelper.h> #include <core/components.hpp> +#include <object/UniqueObject.h> #include "../AutomatonException.h" #include "../AutomatonBase.h" @@ -186,6 +187,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace automaton */ @@ -397,6 +400,11 @@ void MultiInitialStateNFA < SymbolType, StateType >::composeTransitions ( std::d out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class StateType > +alib::ObjectBase* MultiInitialStateNFA < SymbolType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/FSM/NFA.h b/alib2data/src/automaton/FSM/NFA.h index db2fe2b6b5..c1c7d72c27 100644 --- a/alib2data/src/automaton/FSM/NFA.h +++ b/alib2data/src/automaton/FSM/NFA.h @@ -12,6 +12,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonException.h" #include "../AutomatonBase.h" @@ -178,6 +179,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace automaton */ @@ -381,6 +384,11 @@ void NFA < SymbolType, StateType >::composeTransitions ( std::deque < sax::Token out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class StateType > +alib::ObjectBase* NFA < SymbolType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h index 84fc6af378..bf078ecc9f 100644 --- a/alib2data/src/automaton/PDA/DPDA.h +++ b/alib2data/src/automaton/PDA/DPDA.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -202,6 +203,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class EpsilonType, class StateType > @@ -480,6 +483,11 @@ void DPDA < SymbolType, EpsilonType, StateType >::composeTransitions(std::deque< out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class EpsilonType, class StateType > +alib::ObjectBase* DPDA < SymbolType, EpsilonType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/PDA/InputDrivenDPDA.h index fda8835124..978cee8943 100644 --- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h +++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -206,6 +207,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class StateType > @@ -455,6 +458,11 @@ void InputDrivenDPDA < SymbolType, StateType >::composeTransitions(std::deque<sa out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class StateType > +alib::ObjectBase* InputDrivenDPDA < SymbolType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/PDA/InputDrivenNPDA.h index 463434c335..f30875aa83 100644 --- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h +++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -206,6 +207,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class StateType > @@ -453,6 +456,11 @@ void InputDrivenNPDA < SymbolType, StateType >::composeTransitions(std::deque<sa out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class StateType > +alib::ObjectBase* InputDrivenNPDA < SymbolType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/NPDA.h b/alib2data/src/automaton/PDA/NPDA.h index f109014f5d..d62a041fdc 100644 --- a/alib2data/src/automaton/PDA/NPDA.h +++ b/alib2data/src/automaton/PDA/NPDA.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -188,6 +189,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class EpsilonType, class StateType > @@ -370,6 +373,11 @@ void NPDA < SymbolType, EpsilonType, StateType >::composeTransitions(std::deque< out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class EpsilonType, class StateType > +alib::ObjectBase* NPDA < SymbolType, EpsilonType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/NPDTA.h b/alib2data/src/automaton/PDA/NPDTA.h index 528ef056c4..1b1f9fdc7a 100644 --- a/alib2data/src/automaton/PDA/NPDTA.h +++ b/alib2data/src/automaton/PDA/NPDTA.h @@ -15,8 +15,9 @@ #include <algorithm> #include <sstream> -#include <sax/FromXMLParserHelper.h> #include <core/components.hpp> +#include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -212,6 +213,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class EpsilonType, class StateType > @@ -430,6 +433,11 @@ void NPDTA < SymbolType, EpsilonType, StateType >::composeTransitions(std::deque out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class EpsilonType, class StateType > +alib::ObjectBase* NPDTA < SymbolType, EpsilonType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h index 3a38007e8f..0933f2e3b1 100644 --- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h +++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -228,6 +229,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template<class SymbolType, class EpsilonType, class StateType > @@ -672,6 +675,11 @@ void RealTimeHeightDeterministicDPDA < SymbolType, EpsilonType, StateType >::com out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class EpsilonType, class StateType > +alib::ObjectBase* RealTimeHeightDeterministicDPDA < SymbolType, EpsilonType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h index 3dd3fd179a..d3a318adeb 100644 --- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h +++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -236,6 +237,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class EpsilonType, class StateType > @@ -573,6 +576,11 @@ void RealTimeHeightDeterministicNPDA < SymbolType, EpsilonType, StateType >::com out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class EpsilonType, class StateType > +alib::ObjectBase* RealTimeHeightDeterministicNPDA < SymbolType, EpsilonType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.h b/alib2data/src/automaton/PDA/SinglePopDPDA.h index a2240ee11e..e8742ac799 100644 --- a/alib2data/src/automaton/PDA/SinglePopDPDA.h +++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h @@ -18,6 +18,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -193,6 +194,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class EpsilonType, class StateType > @@ -411,6 +414,11 @@ void SinglePopDPDA < SymbolType, EpsilonType, StateType >::composeTransitions(st out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class EpsilonType, class StateType > +alib::ObjectBase* SinglePopDPDA < SymbolType, EpsilonType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.h b/alib2data/src/automaton/PDA/SinglePopNPDA.h index 8f93b94a73..25adf8656b 100644 --- a/alib2data/src/automaton/PDA/SinglePopNPDA.h +++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -188,6 +189,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class EpsilonType, class StateType > @@ -375,6 +378,11 @@ void SinglePopNPDA < SymbolType, EpsilonType, StateType >::composeTransitions(st out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class EpsilonType, class StateType > +alib::ObjectBase* SinglePopNPDA < SymbolType, EpsilonType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h index 3f6eedd718..b4b8de42ae 100644 --- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h +++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -261,6 +262,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class StateType > @@ -596,6 +599,11 @@ void VisiblyPushdownDPDA < SymbolType, StateType >::composeTransitions(std::dequ out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class StateType > +alib::ObjectBase* VisiblyPushdownDPDA < SymbolType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h index 4bc114b05b..4b0b1af7e8 100644 --- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h +++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -269,6 +270,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class StateType > @@ -542,6 +545,11 @@ void VisiblyPushdownNPDA < SymbolType, StateType >::composeTransitions(std::dequ out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class StateType > +alib::ObjectBase* VisiblyPushdownNPDA < SymbolType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/TA/DFTA.h b/alib2data/src/automaton/TA/DFTA.h index 35cb5d5af0..bed1454b82 100644 --- a/alib2data/src/automaton/TA/DFTA.h +++ b/alib2data/src/automaton/TA/DFTA.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "alphabet/ranked_symbol.hpp" #include "../AutomatonFeatures.h" @@ -144,6 +145,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace automaton */ @@ -294,6 +297,11 @@ void DFTA < SymbolType, RankType, StateType >::composeTransitions(std::deque<sax out.emplace_back(sax::Token("transitions", sax::Token::TokenType::END_ELEMENT)); } +template < class SymbolType, class RankType, class StateType > +alib::ObjectBase* DFTA < SymbolType, RankType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/TA/NFTA.h b/alib2data/src/automaton/TA/NFTA.h index d7ec2fe37f..b979838cb2 100644 --- a/alib2data/src/automaton/TA/NFTA.h +++ b/alib2data/src/automaton/TA/NFTA.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonBase.h" #include "../AutomatonFeatures.h" @@ -153,6 +154,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace automaton */ @@ -317,6 +320,11 @@ void NFTA < SymbolType, RankType, StateType >::composeTransitions(std::deque<sax out.emplace_back(sax::Token("transitions", sax::Token::TokenType::END_ELEMENT)); } +template < class SymbolType, class RankType, class StateType > +alib::ObjectBase* NFTA < SymbolType, RankType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/automaton/TM/OneTapeDTM.h b/alib2data/src/automaton/TM/OneTapeDTM.h index fe2f2e447a..3c140bbd3c 100644 --- a/alib2data/src/automaton/TM/OneTapeDTM.h +++ b/alib2data/src/automaton/TM/OneTapeDTM.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../AutomatonException.h" #include "../AutomatonBase.h" @@ -181,6 +182,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeTransitions ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template<class SymbolType, class StateType > @@ -354,6 +357,11 @@ void OneTapeDTM<SymbolType, StateType>::composeTransitions(std::deque<sax::Token out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType, class StateType > +alib::ObjectBase* OneTapeDTM < SymbolType, StateType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace automaton */ namespace std { diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h index 0fe11fe684..f19a348597 100644 --- a/alib2data/src/grammar/ContextFree/CFG.h +++ b/alib2data/src/grammar/ContextFree/CFG.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -113,6 +114,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace grammar */ @@ -269,6 +272,11 @@ void CFG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) const out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* CFG < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h index 61cd02ed3a..6e3612ded7 100644 --- a/alib2data/src/grammar/ContextFree/CNF.h +++ b/alib2data/src/grammar/ContextFree/CNF.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -120,6 +121,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -358,6 +361,11 @@ void CNF < SymbolType >::composeRules ( std::deque < sax::Token > & out ) const out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* CNF < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h index eeaf1d8ec1..c3e4bff625 100644 --- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h +++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -115,6 +116,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -296,6 +299,11 @@ void EpsilonFreeCFG < SymbolType >::composeRules ( std::deque < sax::Token > & o out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* EpsilonFreeCFG < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h index 11f3ef8905..3c98dfc4dd 100644 --- a/alib2data/src/grammar/ContextFree/GNF.h +++ b/alib2data/src/grammar/ContextFree/GNF.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -116,6 +117,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -305,6 +308,11 @@ void GNF < SymbolType >::composeRules ( std::deque < sax::Token > & out ) const out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* GNF < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h index 585af5398f..80e172649c 100644 --- a/alib2data/src/grammar/ContextFree/LG.h +++ b/alib2data/src/grammar/ContextFree/LG.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -117,6 +118,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -335,6 +338,11 @@ void LG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) const { out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* LG < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/ContextSensitive/CSG.h b/alib2data/src/grammar/ContextSensitive/CSG.h index 15fd69b8ef..eb75e88bf3 100644 --- a/alib2data/src/grammar/ContextSensitive/CSG.h +++ b/alib2data/src/grammar/ContextSensitive/CSG.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -109,6 +110,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -267,6 +270,11 @@ void CSG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) const out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* CSG < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h index 5fda40f728..1e8c149633 100644 --- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h +++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -109,6 +110,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -261,6 +264,11 @@ void NonContractingGrammar < SymbolType >::composeRules ( std::deque < sax::Toke out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* NonContractingGrammar < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/Regular/LeftLG.h b/alib2data/src/grammar/Regular/LeftLG.h index 8b47b25384..54c0282bd7 100644 --- a/alib2data/src/grammar/Regular/LeftLG.h +++ b/alib2data/src/grammar/Regular/LeftLG.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -116,6 +117,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -321,6 +324,11 @@ void LeftLG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) con out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* LeftLG < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/Regular/LeftRG.h b/alib2data/src/grammar/Regular/LeftRG.h index 6e6238f0aa..72b4d1ec8f 100644 --- a/alib2data/src/grammar/Regular/LeftRG.h +++ b/alib2data/src/grammar/Regular/LeftRG.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -194,6 +195,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -428,6 +431,11 @@ void LeftRG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) con out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* LeftRG < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/Regular/RightLG.h b/alib2data/src/grammar/Regular/RightLG.h index ae0f911e31..c3a96ea097 100644 --- a/alib2data/src/grammar/Regular/RightLG.h +++ b/alib2data/src/grammar/Regular/RightLG.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -116,6 +117,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -321,6 +324,11 @@ void RightLG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) co out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* RightLG < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/Regular/RightRG.h b/alib2data/src/grammar/Regular/RightRG.h index 2748cba19f..c507c7eff3 100644 --- a/alib2data/src/grammar/Regular/RightRG.h +++ b/alib2data/src/grammar/Regular/RightRG.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -137,6 +138,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -369,6 +372,11 @@ void RightRG < SymbolType >::composeRules ( std::deque < sax::Token > & out ) co out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* RightRG < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h index 71c563ef05..cbb9e13799 100644 --- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h +++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -105,6 +106,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -242,6 +245,11 @@ void ContextPreservingUnrestrictedGrammar < SymbolType >::composeRules ( std::de out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* ContextPreservingUnrestrictedGrammar < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h index a907f91d0c..ce6bda2ea0 100644 --- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h +++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../GrammarBase.h" #include "../GrammarFeatures.h" @@ -105,6 +106,8 @@ public: void compose ( std::deque < sax::Token > & out ) const; void composeRules ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -236,6 +239,11 @@ void UnrestrictedGrammar < SymbolType >::composeRules ( std::deque < sax::Token out.emplace_back ( "rules", sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* UnrestrictedGrammar < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace grammar */ namespace std { diff --git a/alib2data/src/regexp/formal/FormalRegExp.h b/alib2data/src/regexp/formal/FormalRegExp.h index 516e1242fc..7ab95c272e 100644 --- a/alib2data/src/regexp/formal/FormalRegExp.h +++ b/alib2data/src/regexp/formal/FormalRegExp.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include <exception/CommonException.h> #include "../RegExpBase.h" @@ -101,6 +102,8 @@ public: static FormalRegExp parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace regexp */ @@ -199,6 +202,11 @@ void FormalRegExp < SymbolType >::compose ( std::deque < sax::Token > & out ) co out.emplace_back ( FormalRegExp::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* FormalRegExp < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace regexp */ namespace std { diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.h b/alib2data/src/regexp/unbounded/UnboundedRegExp.h index dc701f5c2b..579e655f88 100644 --- a/alib2data/src/regexp/unbounded/UnboundedRegExp.h +++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include <exception/CommonException.h> #include "../RegExpBase.h" @@ -101,6 +102,8 @@ public: static UnboundedRegExp parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace regexp */ @@ -199,6 +202,11 @@ void UnboundedRegExp < SymbolType >::compose ( std::deque < sax::Token > & out ) out.emplace_back ( UnboundedRegExp::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* UnboundedRegExp < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace regexp */ namespace std { diff --git a/alib2data/src/rte/formal/FormalRTE.h b/alib2data/src/rte/formal/FormalRTE.h index 332e36e353..a8f3770455 100644 --- a/alib2data/src/rte/formal/FormalRTE.h +++ b/alib2data/src/rte/formal/FormalRTE.h @@ -16,6 +16,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include <exception/CommonException.h> #include "../RTEBase.h" @@ -138,6 +139,8 @@ public: static FormalRTE parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType, class RankType > @@ -228,6 +231,11 @@ void FormalRTE < SymbolType, RankType >::compose ( std::deque < sax::Token > & o out.emplace_back ( FormalRTE::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class RankType > +alib::ObjectBase* FormalRTE < SymbolType, RankType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace rte */ namespace std { diff --git a/alib2data/src/string/CyclicString.h b/alib2data/src/string/CyclicString.h index 39b067ae20..24453302ee 100644 --- a/alib2data/src/string/CyclicString.h +++ b/alib2data/src/string/CyclicString.h @@ -15,6 +15,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "StringBase.h" #include "StringFeatures.h" @@ -87,6 +88,8 @@ public: static CyclicString parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace string */ @@ -197,6 +200,11 @@ void CyclicString < SymbolType >::compose(std::deque<sax::Token>& out) const { out.emplace_back(CyclicString::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType > +alib::ObjectBase* CyclicString < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace string */ namespace std { diff --git a/alib2data/src/string/Epsilon.h b/alib2data/src/string/Epsilon.h index bd340eb1de..799499c4b0 100644 --- a/alib2data/src/string/Epsilon.h +++ b/alib2data/src/string/Epsilon.h @@ -13,6 +13,7 @@ #include <sax/FromXMLParserHelper.h> #include <core/components.hpp> +#include <object/UniqueObject.h> #include "StringBase.h" #include "StringFeatures.h" @@ -29,6 +30,8 @@ class GeneralAlphabet; */ template < class SymbolType > class Epsilon : public StringBase, public std::Components < Epsilon < SymbolType >, SymbolType, std::tuple < GeneralAlphabet >, std::tuple < > > { + static const std::vector < SymbolType > content; + public: Epsilon ( ); @@ -79,7 +82,7 @@ public: void compose ( std::deque < sax::Token > & out ) const; - static std::vector < SymbolType > content; + virtual alib::ObjectBase * inc ( ) &&; }; template < class SymbolType > @@ -130,7 +133,7 @@ template < class SymbolType > Epsilon < SymbolType > Epsilon < SymbolType >::EPSILON = Epsilon < SymbolType >(); template < class SymbolType > -std::vector<SymbolType> Epsilon < SymbolType >::content; +const std::vector<SymbolType> Epsilon < SymbolType >::content; template < class SymbolType > Epsilon < SymbolType > Epsilon < SymbolType >::parse(std::deque<sax::Token>::iterator& input) { @@ -147,6 +150,11 @@ void Epsilon < SymbolType >::compose(std::deque<sax::Token>& out) const { out.emplace_back(Epsilon::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } +template < class SymbolType > +alib::ObjectBase* Epsilon < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace string */ namespace std { diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h index 65ef6c4459..c76babddb4 100644 --- a/alib2data/src/string/LinearString.h +++ b/alib2data/src/string/LinearString.h @@ -15,6 +15,7 @@ #include <sax/FromXMLParserHelper.h> #include <core/components.hpp> +#include <object/UniqueObject.h> #include "StringBase.h" #include "StringFeatures.h" @@ -101,6 +102,8 @@ public: static LinearString parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace string */ @@ -260,6 +263,11 @@ void LinearString < SymbolType >::compose ( std::deque < sax::Token > & out ) co out.emplace_back ( LinearString::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* LinearString < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace string */ namespace std { diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h index 1a5cd708d3..4393edae43 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h @@ -17,6 +17,7 @@ #include <sax/FromXMLParserHelper.h> #include <core/components.hpp> +#include <object/UniqueObject.h> #include "alphabet/ranked_symbol.hpp" #include "../TreeFeatures.h" @@ -123,6 +124,8 @@ public: static PrefixRankedBarNonlinearPattern parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -310,6 +313,11 @@ void PrefixRankedBarNonlinearPattern < SymbolType, RankType >::compose ( std::de out.emplace_back ( PrefixRankedBarNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class RankType > +alib::ObjectBase* PrefixRankedBarNonlinearPattern < SymbolType, RankType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h index 8ba7b4a313..4004e445e4 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "alphabet/ranked_symbol.hpp" #include "../TreeFeatures.h" @@ -112,6 +113,8 @@ public: static PrefixRankedBarPattern parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -274,6 +277,11 @@ void PrefixRankedBarPattern < SymbolType, RankType >::compose ( std::deque < sax out.emplace_back ( PrefixRankedBarPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class RankType > +alib::ObjectBase* PrefixRankedBarPattern < SymbolType, RankType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h index 4106f31398..0153851eba 100644 --- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h +++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "alphabet/ranked_symbol.hpp" #include "../TreeFeatures.h" @@ -99,6 +100,8 @@ public: static PrefixRankedBarTree parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -244,6 +247,11 @@ void PrefixRankedBarTree < SymbolType, RankType >::compose ( std::deque < sax::T out.emplace_back ( PrefixRankedBarTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class RankType > +alib::ObjectBase* PrefixRankedBarTree < SymbolType, RankType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h index e843e58a22..8a97f9b949 100644 --- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "alphabet/ranked_symbol.hpp" #include "../TreeFeatures.h" @@ -107,6 +108,8 @@ public: static PrefixRankedNonlinearPattern parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -262,6 +265,11 @@ void PrefixRankedNonlinearPattern < SymbolType, RankType >::compose ( std::deque out.emplace_back ( PrefixRankedNonlinearPattern::getXmlTagName ( ), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class RankType > +alib::ObjectBase* PrefixRankedNonlinearPattern < SymbolType, RankType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h index 0b98089902..2393243c85 100644 --- a/alib2data/src/tree/ranked/PrefixRankedPattern.h +++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "alphabet/ranked_symbol.hpp" #include "../TreeFeatures.h" @@ -98,6 +99,8 @@ public: static PrefixRankedPattern parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -232,6 +235,11 @@ void PrefixRankedPattern < SymbolType, RankType >::compose ( std::deque < sax::T out.emplace_back ( PrefixRankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class RankType > +alib::ObjectBase* PrefixRankedPattern < SymbolType, RankType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h index e4842315de..a55c98f346 100644 --- a/alib2data/src/tree/ranked/PrefixRankedTree.h +++ b/alib2data/src/tree/ranked/PrefixRankedTree.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "alphabet/ranked_symbol.hpp" #include "../TreeFeatures.h" @@ -90,6 +91,8 @@ public: static PrefixRankedTree parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -217,6 +220,11 @@ void PrefixRankedTree < SymbolType, RankType >::compose ( std::deque < sax::Toke out.emplace_back ( PrefixRankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class RankType > +alib::ObjectBase* PrefixRankedTree < SymbolType, RankType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h index a63abeee1e..762bb8ecb3 100644 --- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h +++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "alphabet/ranked_symbol.hpp" #include "../TreeFeatures.h" @@ -115,6 +116,8 @@ public: static RankedNonlinearPattern parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -233,6 +236,11 @@ void RankedNonlinearPattern < SymbolType, RankType >::compose ( std::deque < sax out.emplace_back ( RankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class RankType > +alib::ObjectBase* RankedNonlinearPattern < SymbolType, RankType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h index a5408874a3..a38f2c6b3d 100644 --- a/alib2data/src/tree/ranked/RankedPattern.h +++ b/alib2data/src/tree/ranked/RankedPattern.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "alphabet/ranked_symbol.hpp" #include "../TreeFeatures.h" @@ -109,6 +110,8 @@ public: static RankedPattern parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -221,6 +224,11 @@ void RankedPattern < SymbolType, RankType >::compose ( std::deque < sax::Token > out.emplace_back ( RankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class RankType > +alib::ObjectBase* RankedPattern < SymbolType, RankType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h index 58de295acf..402277c3cd 100644 --- a/alib2data/src/tree/ranked/RankedTree.h +++ b/alib2data/src/tree/ranked/RankedTree.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "alphabet/ranked_symbol.hpp" #include "../TreeFeatures.h" @@ -104,6 +105,8 @@ public: static RankedTree parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -214,6 +217,11 @@ void RankedTree < SymbolType, RankType >::compose ( std::deque < sax::Token > & out.emplace_back ( RankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType, class RankType > +alib::ObjectBase* RankedTree < SymbolType, RankType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h index 874093c6f7..fdefd3e2f5 100644 --- a/alib2data/src/tree/unranked/PrefixBarTree.h +++ b/alib2data/src/tree/unranked/PrefixBarTree.h @@ -17,6 +17,7 @@ #include <sax/FromXMLParserHelper.h> #include <core/components.hpp> +#include <object/UniqueObject.h> #include "../TreeFeatures.h" #include "../UnrankedTreeBase.h" @@ -96,6 +97,8 @@ public: static PrefixBarTree parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -234,6 +237,11 @@ void PrefixBarTree < SymbolType >::compose ( std::deque < sax::Token > & out ) c out.emplace_back ( PrefixBarTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* PrefixBarTree < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h index b72b1a23e8..65b72f21ba 100644 --- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h +++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../TreeFeatures.h" #include "../TreeException.h" @@ -118,6 +119,8 @@ public: static UnrankedNonlinearPattern parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -225,6 +228,11 @@ void UnrankedNonlinearPattern < SymbolType >::compose ( std::deque < sax::Token out.emplace_back ( UnrankedNonlinearPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* UnrankedNonlinearPattern < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h index c130f8d822..3ee6af57e9 100644 --- a/alib2data/src/tree/unranked/UnrankedPattern.h +++ b/alib2data/src/tree/unranked/UnrankedPattern.h @@ -17,6 +17,7 @@ #include <core/components.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../TreeFeatures.h" #include "../TreeException.h" @@ -106,6 +107,8 @@ public: static UnrankedPattern parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -207,6 +210,11 @@ void UnrankedPattern < SymbolType >::compose ( std::deque < sax::Token > & out ) out.emplace_back ( UnrankedPattern::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* UnrankedPattern < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h index 567994e780..59dc654975 100644 --- a/alib2data/src/tree/unranked/UnrankedTree.h +++ b/alib2data/src/tree/unranked/UnrankedTree.h @@ -17,6 +17,7 @@ #include <sax/FromXMLParserHelper.h> #include <core/components.hpp> +#include <object/UniqueObject.h> #include "../TreeFeatures.h" #include "../UnrankedTreeBase.h" @@ -101,6 +102,8 @@ public: static UnrankedTree parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ @@ -200,6 +203,11 @@ void UnrankedTree < SymbolType >::compose ( std::deque < sax::Token > & out ) co out.emplace_back ( UnrankedTree::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +template < class SymbolType > +alib::ObjectBase* UnrankedTree < SymbolType >::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace tree */ namespace std { diff --git a/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.cpp b/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.cpp index a917755adb..34e481dcfc 100644 --- a/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.cpp +++ b/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.cpp @@ -13,6 +13,7 @@ #include <object/Object.h> #include <core/xmlApi.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../common/GraphFromXMLParser.h" #include "../common/GraphToXMLComposer.h" #include "../Graph.h" @@ -315,6 +316,9 @@ void AdjacencyListDirectedGraph::compose( std::deque<sax::Token> & out ) const out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } +alib::ObjectBase* AdjacencyListDirectedGraph::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} } // namespace graph diff --git a/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h b/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h index a114f38a02..aa75f9d249 100644 --- a/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h +++ b/alib2data_experimental/src/graph/directed/AdjacencyListDirectedGraph.h @@ -88,6 +88,8 @@ public: return xmlTagName; } + + alib::ObjectBase * inc ( ) && override; }; } // namespace graph diff --git a/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp b/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp index ab04d54bfe..4edc624765 100644 --- a/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp +++ b/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.cpp @@ -13,6 +13,7 @@ #include <object/Object.h> #include <core/xmlApi.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../common/GraphFromXMLParser.h" #include "../common/GraphToXMLComposer.h" #include "../Graph.h" @@ -316,6 +317,9 @@ void AdjacencyMatrixDirectedGraph::compose( std::deque<sax::Token> & out ) const out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } +alib::ObjectBase* AdjacencyMatrixDirectedGraph::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} } // namespace graph diff --git a/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h b/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h index bbc7a48e14..6151b63412 100644 --- a/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h +++ b/alib2data_experimental/src/graph/directed/AdjacencyMatrixDirectedGraph.h @@ -91,6 +91,8 @@ public: return xmlTagName; } + + alib::ObjectBase * inc ( ) && override; }; } // namespace graph diff --git a/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.cpp b/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.cpp index 9f1f3fa040..47544fdbe3 100644 --- a/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.cpp +++ b/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.cpp @@ -13,6 +13,7 @@ #include <object/Object.h> #include <core/xmlApi.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../common/GraphFromXMLParser.h" #include "../common/GraphToXMLComposer.h" #include "../Graph.h" @@ -244,6 +245,9 @@ void AdjacencyListUndirectedGraph::compose( std::deque<sax::Token> & out ) const out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } +alib::ObjectBase* AdjacencyListUndirectedGraph::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} } // namespace graph diff --git a/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h b/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h index 71c09bb974..6fc8eba66f 100644 --- a/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h +++ b/alib2data_experimental/src/graph/undirected/AdjacencyListUndirectedGraph.h @@ -85,6 +85,8 @@ public: return xmlTagName; } + + alib::ObjectBase * inc ( ) && override; }; } // namespace graph diff --git a/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp b/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp index bcb8113511..859b0d7c2e 100644 --- a/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp +++ b/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.cpp @@ -13,6 +13,7 @@ #include <object/Object.h> #include <core/xmlApi.hpp> #include <sax/FromXMLParserHelper.h> +#include <object/UniqueObject.h> #include "../common/GraphFromXMLParser.h" #include "../common/GraphToXMLComposer.h" #include "../Graph.h" @@ -258,6 +259,9 @@ void AdjacencyMatrixUndirectedGraph::compose( std::deque<sax::Token> & out ) con out.emplace_back(getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } +alib::ObjectBase* AdjacencyMatrixUndirectedGraph::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} } // namespace graph diff --git a/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h b/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h index aa449eb63e..338cf3d7da 100644 --- a/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h +++ b/alib2data_experimental/src/graph/undirected/AdjacencyMatrixUndirectedGraph.h @@ -88,6 +88,8 @@ public: return xmlTagName; } + + alib::ObjectBase * inc ( ) && override; }; } // namespace graph diff --git a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp index 66865965c5..482cb51c10 100644 --- a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp +++ b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp @@ -18,6 +18,7 @@ #include "../common/IndexToXMLComposer.h" #include <object/Object.h> #include <core/xmlApi.hpp> +#include <object/UniqueObject.h> namespace indexes { @@ -133,6 +134,10 @@ void SuffixTrieFinalMark::compose ( std::deque < sax::Token > & out ) const { out.emplace_back ( SuffixTrieFinalMark::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +alib::ObjectBase* SuffixTrieFinalMark::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace indexes */ namespace alib { diff --git a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.h b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.h index 390b806444..461ed8d894 100644 --- a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.h +++ b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieFinalMark.h @@ -110,6 +110,8 @@ public: static SuffixTrieFinalMark parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ diff --git a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp index 6da2e7d97b..89be56fb86 100644 --- a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp +++ b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp @@ -17,6 +17,7 @@ #include "../common/IndexToXMLComposer.h" #include <object/Object.h> #include <core/xmlApi.hpp> +#include <object/UniqueObject.h> namespace indexes { @@ -130,6 +131,10 @@ void SuffixTrieTerminatingSymbol::compose ( std::deque < sax::Token > & out ) co out.emplace_back ( SuffixTrieTerminatingSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +alib::ObjectBase* SuffixTrieTerminatingSymbol::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace indexes */ namespace alib { diff --git a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h index 75bea8fbba..c875decfa0 100644 --- a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h +++ b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h @@ -106,6 +106,8 @@ public: static SuffixTrieTerminatingSymbol parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace tree */ diff --git a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp index 54efb98850..9e78fe3e51 100644 --- a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp +++ b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp @@ -19,6 +19,7 @@ #include <object/Object.h> #include <core/xmlApi.hpp> #include <core/castApi.hpp> +#include <object/UniqueObject.h> namespace string { @@ -116,6 +117,10 @@ void LinearStringTerminatingSymbol::compose ( std::deque < sax::Token > & out ) out.emplace_back ( LinearStringTerminatingSymbol::getXmlTagName(), sax::Token::TokenType::END_ELEMENT ); } +alib::ObjectBase* LinearStringTerminatingSymbol::inc() && { + return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); +} + } /* namespace string */ namespace alib { diff --git a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h index 0d7da3741e..e0dc3b7874 100644 --- a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h +++ b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h @@ -89,6 +89,8 @@ public: static LinearStringTerminatingSymbol parse ( std::deque < sax::Token >::iterator & input ); void compose ( std::deque < sax::Token > & out ) const; + + virtual alib::ObjectBase * inc ( ) &&; }; } /* namespace string */ -- GitLab