From 777e526acf3ab20bdd5130cbe80bdc4a84997361 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Thu, 28 May 2020 12:51:29 +0200
Subject: [PATCH] fixes and simplifications in exact subtree match

---
 alib2algo/src/arbology/exact/ExactSubtreeMatch.h | 14 +-------------
 1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/alib2algo/src/arbology/exact/ExactSubtreeMatch.h b/alib2algo/src/arbology/exact/ExactSubtreeMatch.h
index c754d7545b..e218bee72d 100644
--- a/alib2algo/src/arbology/exact/ExactSubtreeMatch.h
+++ b/alib2algo/src/arbology/exact/ExactSubtreeMatch.h
@@ -45,8 +45,6 @@ private:
 
 	template < class SymbolType >
 	static void matchInternal(unsigned& index, ext::set<unsigned>& occ, const ext::tree < SymbolType > & subject, const ext::tree < SymbolType > & pattern);
-	template < class SymbolType >
-	static void matchInternal(unsigned& index, ext::set<unsigned>& occ, const ext::tree < common::ranked_symbol < SymbolType > > & subject, const ext::tree < common::ranked_symbol < SymbolType > > & pattern);
 
 };
 
@@ -57,7 +55,7 @@ bool ExactSubtreeMatch::matchHelper ( const ext::tree < SymbolType > & subject,
 	auto patternIter = pattern.getChildren ( ).begin ( );
 	auto subjectIter = subject.getChildren ( ).begin ( );
 
-	while ( patternIter != pattern.getChildren ( ).end ( ) || subjectIter != subject.getChildren ( ).end ( ) ) {
+	while ( patternIter != pattern.getChildren ( ).end ( ) && subjectIter != subject.getChildren ( ).end ( ) ) {
 		if ( matchHelper ( * subjectIter, * patternIter ) )
 			++ patternIter;
 
@@ -88,16 +86,6 @@ void ExactSubtreeMatch::matchInternal ( unsigned & index, ext::set < unsigned >
 		matchInternal ( index, occ, child, pattern );
 }
 
-template < class SymbolType >
-void ExactSubtreeMatch::matchInternal ( unsigned & index, ext::set < unsigned > & occ, const ext::tree < common::ranked_symbol < SymbolType > > & subject, const ext::tree < common::ranked_symbol < SymbolType > > & pattern ) {
-	if ( matchHelper ( subject, pattern ) ) occ.insert ( index );
-
-	index++;
-
-	for ( const ext::tree < common::ranked_symbol < SymbolType > > & child : subject.getChildren ( ) )
-		matchInternal ( index, occ, child, pattern );
-}
-
 template < class SymbolType >
 ext::set < unsigned > ExactSubtreeMatch::match ( const tree::UnrankedTree < SymbolType > & subject, const tree::UnrankedTree < SymbolType > & pattern ) {
 	unsigned i = 0;
-- 
GitLab