diff --git a/alib2data/src/tree/common/RankedNonlinearPatternAlphabet.cpp b/alib2data/src/tree/common/RankedNonlinearPatternAlphabet.cpp index a57e7db2d415fab5b9910d7a4c19b7fa96335a48..6d734ac4ea0a9b65af2daa7a97c4e3dc7bd18165 100644 --- a/alib2data/src/tree/common/RankedNonlinearPatternAlphabet.cpp +++ b/alib2data/src/tree/common/RankedNonlinearPatternAlphabet.cpp @@ -12,49 +12,45 @@ namespace tree { -RankedNonlinearPatternAlphabet::RankedNonlinearPatternAlphabet(alphabet::RankedSymbol subtreeWildcard, std::set<alphabet::RankedSymbol> nonlinearVariables) : RankedPatternAlphabet(subtreeWildcard), nonlinearVariables(nonlinearVariables) { - for(const alphabet::RankedSymbol& symbol : nonlinearVariables) { - if(symbol.getRank().getData() != 0) - throw TreeException("Subtree wildcard symbol " + (std::string) symbol + " has nonzero rank"); - } - alphabet.insert(std::move(subtreeWildcard)); -} +RankedNonlinearPatternAlphabet::RankedNonlinearPatternAlphabet ( alphabet::RankedSymbol subtreeWildcard, std::set < alphabet::RankedSymbol > nonlinearVariables ) : RankedPatternAlphabet ( subtreeWildcard ), nonlinearVariables ( nonlinearVariables ) { + for ( const alphabet::RankedSymbol & symbol : nonlinearVariables ) + if ( symbol.getRank ( ).getData ( ) != 0 ) + throw TreeException ( "Subtree nonlinear variable " + ( std::string ) symbol + " has nonzero rank" ); -bool RankedNonlinearPatternAlphabet::addNonlinearVariable(alphabet::RankedSymbol symbol) { - if (!alphabet.count(symbol)) - throw TreeException("Subtree wildcard symbol \"" + (std::string) symbol + "\" is not in the alphabet."); + alphabet.insert ( std::move ( subtreeWildcard ) ); +} - if(symbol.getRank().getData() != 0) - throw TreeException("Subtree wildcard symbol " + (std::string) symbol + " has nonzero rank"); +bool RankedNonlinearPatternAlphabet::addNonlinearVariable ( alphabet::RankedSymbol symbol ) { + if ( !alphabet.count ( symbol ) ) + throw TreeException ( "Subtree nonlinear variable \"" + ( std::string ) symbol + "\" is not in the alphabet." ); - return nonlinearVariables.insert(symbol).second; + if ( symbol.getRank ( ).getData ( ) != 0 ) + throw TreeException ( "Subtree nonlinear variable " + ( std::string ) symbol + " has nonzero rank" ); + return nonlinearVariables.insert ( symbol ).second; } -void RankedNonlinearPatternAlphabet::addNonlinearVariables(std::set<alphabet::RankedSymbol> symbols) { - for(alphabet::RankedSymbol addedSymbol : std::move(symbols)) { - addSymbolToAlphabet(std::move(addedSymbol)); - } +void RankedNonlinearPatternAlphabet::addNonlinearVariables ( std::set < alphabet::RankedSymbol > symbols ) { + for ( alphabet::RankedSymbol addedSymbol : std::move ( symbols ) ) + addSymbolToAlphabet ( std::move ( addedSymbol ) ); } -void RankedNonlinearPatternAlphabet::setNonlinearVariables(std::set<alphabet::RankedSymbol> newSymbols) { - std::set<alphabet::RankedSymbol> removed; - std::set_difference(nonlinearVariables.begin(), nonlinearVariables.end(), newSymbols.begin(), newSymbols.end(), std::inserter(removed, removed.end())); +void RankedNonlinearPatternAlphabet::setNonlinearVariables ( std::set < alphabet::RankedSymbol > newSymbols ) { + std::set < alphabet::RankedSymbol > removed; + std::set_difference ( nonlinearVariables.begin ( ), nonlinearVariables.end ( ), newSymbols.begin ( ), newSymbols.end ( ), std::inserter ( removed, removed.end ( ) ) ); - for(const alphabet::RankedSymbol& removedSymbol : removed) { - removeNonlinearVariable(removedSymbol); - } + for ( const alphabet::RankedSymbol & removedSymbol : removed ) + removeNonlinearVariable ( removedSymbol ); - alphabet = std::move(newSymbols); + alphabet = std::move ( newSymbols ); } -const std::set<alphabet::RankedSymbol>& RankedNonlinearPatternAlphabet::getNonlinearVariables() const { +const std::set < alphabet::RankedSymbol > & RankedNonlinearPatternAlphabet::getNonlinearVariables ( ) const { return nonlinearVariables; } -bool RankedNonlinearPatternAlphabet::removeNonlinearVariable(const alphabet::RankedSymbol& symbol) { - return alphabet.insert(std::move(symbol)).second; +bool RankedNonlinearPatternAlphabet::removeNonlinearVariable ( const alphabet::RankedSymbol & symbol ) { + return alphabet.insert ( std::move ( symbol ) ).second; } } /* namespace tree */ - diff --git a/alib2data/src/tree/common/RankedNonlinearPatternAlphabet.h b/alib2data/src/tree/common/RankedNonlinearPatternAlphabet.h index 61134e7ab27f59e32a53875aacaea38c2f90612d..3b1345a445bf7c3bd7c7b61bf787e2640a843071 100644 --- a/alib2data/src/tree/common/RankedNonlinearPatternAlphabet.h +++ b/alib2data/src/tree/common/RankedNonlinearPatternAlphabet.h @@ -17,43 +17,41 @@ namespace tree { */ class RankedNonlinearPatternAlphabet : public RankedPatternAlphabet { protected: - std::set<alphabet::RankedSymbol> nonlinearVariables; + std::set < alphabet::RankedSymbol > nonlinearVariables; public: - RankedNonlinearPatternAlphabet(alphabet::RankedSymbol subtreeWildcard, std::set<alphabet::RankedSymbol> nonlinearVariables); + RankedNonlinearPatternAlphabet ( alphabet::RankedSymbol subtreeWildcard, std::set < alphabet::RankedSymbol > nonlinearVariables ); /** * Adds the nonlinear variable = symbol representing subtree substitution place in the pattern * @param symbol Symbol to set */ - bool addNonlinearVariable(alphabet::RankedSymbol symbol); + bool addNonlinearVariable ( alphabet::RankedSymbol symbol ); /** * Adds the nonlinear variables = symbols representing subtree substitution place in the pattern * @param symbol Symbol to set */ - void addNonlinearVariables(std::set<alphabet::RankedSymbol> symbols); + void addNonlinearVariables ( std::set < alphabet::RankedSymbol > symbols ); /** * Sets the nonlinear variables = symbol representing subtree substitution place in the pattern * @param symbol Symbol to set */ - void setNonlinearVariables(std::set<alphabet::RankedSymbol> symbols); + void setNonlinearVariables ( std::set < alphabet::RankedSymbol > symbols ); /** * @return symbols representing nonlinear variables */ - const std::set<alphabet::RankedSymbol> & getNonlinearVariables() const; + const std::set < alphabet::RankedSymbol > & getNonlinearVariables ( ) const; /** * Removes the nonlinear variable = symbol representing subtree substitution place in the pattern * @param symbol Symbol to set */ - bool removeNonlinearVariable(const alphabet::RankedSymbol& symbol); - + bool removeNonlinearVariable ( const alphabet::RankedSymbol & symbol ); }; } /* namespace tree */ #endif /* RANKED_NONLINEAR_PATTERN_ALPHABET_H_ */ - diff --git a/alib2data/src/tree/common/TreeToXMLComposer.h b/alib2data/src/tree/common/TreeToXMLComposer.h index 8fc8e1332270e8bb3c576c9769309ba8a18e325f..67fbd8bc0309c0aa080e52e1a9e68acd17fd4e5f 100644 --- a/alib2data/src/tree/common/TreeToXMLComposer.h +++ b/alib2data/src/tree/common/TreeToXMLComposer.h @@ -23,26 +23,25 @@ namespace tree { */ class TreeToXMLComposer { public: - static void composeAlphabet(std::deque<sax::Token>& out, const std::set<alphabet::RankedSymbol>& symbols); - static void composeAlphabet(std::deque<sax::Token>& out, const std::set<alphabet::Symbol>& symbols); + static void composeAlphabet ( std::deque < sax::Token > & out, const std::set < alphabet::RankedSymbol > & symbols ); + static void composeAlphabet ( std::deque < sax::Token > & out, const std::set < alphabet::Symbol > & symbols ); - static void composeBar(std::deque<sax::Token>& out, const alphabet::Symbol& symbol); - static void composeVariablesBar(std::deque<sax::Token>& out, const alphabet::Symbol& symbol); + static void composeBar ( std::deque < sax::Token > & out, const alphabet::Symbol & symbol ); + static void composeVariablesBar ( std::deque < sax::Token > & out, const alphabet::Symbol & symbol ); - static void composeSubtreeWildcard(std::deque<sax::Token>& out, const alphabet::Symbol& symbol); - static void composeSubtreeWildcard(std::deque<sax::Token>& out, const alphabet::RankedSymbol& symbol); + static void composeSubtreeWildcard ( std::deque < sax::Token > & out, const alphabet::Symbol & symbol ); + static void composeSubtreeWildcard ( std::deque < sax::Token > & out, const alphabet::RankedSymbol & symbol ); - static void composeNode(std::deque<sax::Token>& out, const RankedNode& node); - static void composeNode(std::deque<sax::Token>& out, const UnrankedNode& node); + static void composeNode ( std::deque < sax::Token > & out, const RankedNode & node ); + static void composeNode ( std::deque < sax::Token > & out, const UnrankedNode & node ); - static void composeContent(std::deque<sax::Token>& out, const std::vector<alphabet::Symbol>& content); - static void composeContent(std::deque<sax::Token>& out, const std::vector<alphabet::RankedSymbol>& content); + static void composeContent ( std::deque < sax::Token > & out, const std::vector < alphabet::Symbol > & content ); + static void composeContent ( std::deque < sax::Token > & out, const std::vector < alphabet::RankedSymbol > & content ); - static void composeNonlinearVariables(std::deque<sax::Token>& out, const std::set<alphabet::RankedSymbol>& symbols); - static void composeNonlinearVariables(std::deque<sax::Token>& out, const std::set<alphabet::Symbol>& symbols); + static void composeNonlinearVariables ( std::deque < sax::Token > & out, const std::set < alphabet::RankedSymbol > & symbols ); + static void composeNonlinearVariables ( std::deque < sax::Token > & out, const std::set < alphabet::Symbol > & symbols ); }; } /* namespace tree */ #endif /* TREE_TO_XML_COMPOSER_H_ */ - diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp index c126dcc1c00530c94bb2818491d86a64bfa39be3..a9f63cc15246a92ca8904c1578c893eb4ca3d3da 100644 --- a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp +++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp @@ -25,13 +25,14 @@ namespace tree { -RankedNonlinearPattern::RankedNonlinearPattern ( alphabet::RankedSymbol subtreeWildcard, std::set<alphabet::RankedSymbol> nonlinearVariables, std::set < alphabet::RankedSymbol > alphabet, RankedNode pattern ) : RankedNonlinearPatternAlphabet ( std::move ( subtreeWildcard ), std::move(nonlinearVariables) ) { +RankedNonlinearPattern::RankedNonlinearPattern ( alphabet::RankedSymbol subtreeWildcard, std::set < alphabet::RankedSymbol > nonlinearVariables, std::set < alphabet::RankedSymbol > alphabet, RankedNode pattern ) : RankedNonlinearPatternAlphabet ( std::move ( subtreeWildcard ), std::move ( nonlinearVariables ) ) { setAlphabet ( std::move ( alphabet ) ); this->pattern = NULL; setTree ( std::move ( pattern ) ); } -RankedNonlinearPattern::RankedNonlinearPattern ( alphabet::RankedSymbol subtreeWildcard, RankedNode pattern ) : RankedNonlinearPatternAlphabet ( std::move ( subtreeWildcard ), {} ) { +RankedNonlinearPattern::RankedNonlinearPattern ( alphabet::RankedSymbol subtreeWildcard, RankedNode pattern ) : RankedNonlinearPatternAlphabet ( std::move ( subtreeWildcard ), { + } ) { pattern.computeMinimalAlphabet ( alphabet ); this->pattern = NULL; setTree ( std::move ( pattern ) ); @@ -101,9 +102,9 @@ bool RankedNonlinearPattern::removeSymbolFromAlphabet ( const alphabet::RankedSy if ( this->subtreeWildcard == symbol ) throw exception::AlibException ( "Input symbol \"" + ( std::string ) symbol + "\" is subtreeWildcard." ); - if ( std::any_of(this->nonlinearVariables.begin(), this->nonlinearVariables.end(), [&](const alphabet::RankedSymbol& nonlinearVariable) { - return nonlinearVariable == symbol; - } ) ) + if ( std::any_of ( this->nonlinearVariables.begin ( ), this->nonlinearVariables.end ( ), [&] ( const alphabet::RankedSymbol & nonlinearVariable ) { + return nonlinearVariable == symbol; + } ) ) throw exception::AlibException ( "Input symbol \"" + ( std::string ) symbol + "\" is nonlinearVariable." ); return alphabet.erase ( symbol ); @@ -152,7 +153,7 @@ RankedNonlinearPattern RankedNonlinearPattern::parse ( std::deque < sax::Token > std::set < alphabet::RankedSymbol > nonlinearVariables = TreeFromXMLParser::parseRankedNonlinearVariables ( input ); std::set < alphabet::RankedSymbol > rankedAlphabet = TreeFromXMLParser::parseRankedAlphabet ( input ); RankedNode * root = alib::xmlApi < RankedNode * >::parse ( input ); - RankedNonlinearPattern tree ( std::move ( subtreeWildcardSymbol ), std::move( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( * root ) ); + RankedNonlinearPattern tree ( std::move ( subtreeWildcardSymbol ), std::move ( nonlinearVariables ), std::move ( rankedAlphabet ), std::move ( * root ) ); delete root; sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, RankedNonlinearPattern::XML_TAG_NAME ); @@ -172,8 +173,8 @@ void RankedNonlinearPattern::compose ( std::deque < sax::Token > & out ) const { namespace alib { -auto RankedNonlinearPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::RankedNonlinearPattern > (); -auto RankedNonlinearPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedNonlinearPattern > (); -auto RankedNonlinearPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::RankedNonlinearPattern > (); +auto RankedNonlinearPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::RankedNonlinearPattern > ( ); +auto RankedNonlinearPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedNonlinearPattern > ( ); +auto RankedNonlinearPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::RankedNonlinearPattern > ( ); } /* namespace alib */ diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h index e81ac2051862ea4e9ad168ca219ab3c1b08303fd..50c6374bba14f30dc6d660269146d7e134ec07c8 100644 --- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h +++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h @@ -40,7 +40,7 @@ public: */ virtual RankedTreeBase * plunder ( ) &&; - explicit RankedNonlinearPattern ( alphabet::RankedSymbol subtreeWildcard, std::set<alphabet::RankedSymbol> nonlinearVariables, std::set < alphabet::RankedSymbol > alphabet, RankedNode pattern ); + explicit RankedNonlinearPattern ( alphabet::RankedSymbol subtreeWildcard, std::set < alphabet::RankedSymbol > nonlinearVariables, std::set < alphabet::RankedSymbol > alphabet, RankedNode pattern ); explicit RankedNonlinearPattern ( alphabet::RankedSymbol subtreeWildcard, RankedNode pattern ); /**