From cfbaa1d896da4ce79a86f272ee304c84eb9050b5 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Sun, 27 Sep 2015 21:44:32 +0200
Subject: [PATCH] unsigned save comparison

---
 .../src/arbology/exact/ExactSubtreeMatch.cpp  | 111 ++++++++++--------
 .../stringology/exact/ExactFactorMatch.cpp    |  24 ++--
 2 files changed, 74 insertions(+), 61 deletions(-)

diff --git a/alib2algo/src/arbology/exact/ExactSubtreeMatch.cpp b/alib2algo/src/arbology/exact/ExactSubtreeMatch.cpp
index f711c038fe..fd29de4a55 100644
--- a/alib2algo/src/arbology/exact/ExactSubtreeMatch.cpp
+++ b/alib2algo/src/arbology/exact/ExactSubtreeMatch.cpp
@@ -19,93 +19,104 @@ namespace arbology {
 
 namespace exact {
 
-std::set<unsigned> ExactSubtreeMatch::match(const tree::Tree& subject, const tree::Tree& pattern) {
-	return getInstance().dispatch(subject.getData(), pattern.getData());
+std::set < unsigned > ExactSubtreeMatch::match ( const tree::Tree & subject, const tree::Tree & pattern ) {
+	return getInstance ( ).dispatch ( subject.getData ( ), pattern.getData ( ) );
 }
 
-bool ExactSubtreeMatch::matchHelper(const tree::UnrankedNode& subject, const tree::UnrankedNode& pattern) {
-	if(subject.getSymbol() != pattern.getSymbol()) return false;
-	if(subject.getChildren().size() != pattern.getChildren().size()) return false;
-	for(const std::tuple<const tree::UnrankedNode*, const tree::UnrankedNode*>& childs : std::make_pair_foreach(subject.getChildren(), pattern.getChildren())) {
-		if(!matchHelper(*std::get<0>(childs), *std::get<1>(childs))) return false;
-	}
+bool ExactSubtreeMatch::matchHelper ( const tree::UnrankedNode & subject, const tree::UnrankedNode & pattern ) {
+	if ( subject.getSymbol ( ) != pattern.getSymbol ( ) ) return false;
+
+	if ( subject.getChildren ( ).size ( ) != pattern.getChildren ( ).size ( ) ) return false;
+
+	for ( const std::tuple < const tree::UnrankedNode *, const tree::UnrankedNode * > & childs : std::make_pair_foreach ( subject.getChildren ( ), pattern.getChildren ( ) ) )
+		if ( !matchHelper ( * std::get < 0 > ( childs ), * std::get < 1 > ( childs ) ) ) return false;
+
 	return true;
 }
 
-bool ExactSubtreeMatch::matchHelper(const tree::RankedNode& subject, const tree::RankedNode& pattern) {
-	if(subject.getSymbol() != pattern.getSymbol()) return false;
-	// ranked symbols are the same; test for number of children is not needed
-	for(const std::tuple<const tree::RankedNode*, const tree::RankedNode*>& childs : std::make_pair_foreach(subject.getChildren(), pattern.getChildren())) {
-		if(!matchHelper(*std::get<0>(childs), *std::get<1>(childs))) return false;
-	}
+bool ExactSubtreeMatch::matchHelper ( const tree::RankedNode & subject, const tree::RankedNode & pattern ) {
+	if ( subject.getSymbol ( ) != pattern.getSymbol ( ) ) return false;
+
+	 // ranked symbols are the same; test for number of children is not needed
+	for ( const std::tuple < const tree::RankedNode *, const tree::RankedNode * > & childs : std::make_pair_foreach ( subject.getChildren ( ), pattern.getChildren ( ) ) )
+		if ( !matchHelper ( * std::get < 0 > ( childs ), * std::get < 1 > ( childs ) ) ) return false;
+
 	return true;
 }
 
-void ExactSubtreeMatch::matchInternal(unsigned& index, std::set<unsigned>& occ, const tree::UnrankedNode& subject, const tree::UnrankedNode& pattern) {
-	if(matchHelper(subject, pattern)) occ.insert(index);
+void ExactSubtreeMatch::matchInternal ( unsigned & index, std::set < unsigned > & occ, const tree::UnrankedNode & subject, const tree::UnrankedNode & pattern ) {
+	if ( matchHelper ( subject, pattern ) ) occ.insert ( index );
+
 	index++;
-	for(const tree::UnrankedNode* child : subject.getChildren()) {
-		matchInternal(index, occ, *child, pattern);
-	}
+
+	for ( const tree::UnrankedNode * child : subject.getChildren ( ) )
+		matchInternal ( index, occ, * child, pattern );
 }
 
-void ExactSubtreeMatch::matchInternal(unsigned& index, std::set<unsigned>& occ, const tree::RankedNode& subject, const tree::RankedNode& pattern) {
-	if(matchHelper(subject, pattern)) occ.insert(index);
+void ExactSubtreeMatch::matchInternal ( unsigned & index, std::set < unsigned > & occ, const tree::RankedNode & subject, const tree::RankedNode & pattern ) {
+	if ( matchHelper ( subject, pattern ) ) occ.insert ( index );
+
 	index++;
-	for(const tree::RankedNode* child : subject.getChildren()) {
-		matchInternal(index, occ, *child, pattern);
-	}
+
+	for ( const tree::RankedNode * child : subject.getChildren ( ) )
+		matchInternal ( index, occ, * child, pattern );
 }
 
-std::set<unsigned> ExactSubtreeMatch::match(const tree::UnrankedTree& subject, const tree::UnrankedTree& pattern) {
+std::set < unsigned > ExactSubtreeMatch::match ( const tree::UnrankedTree & subject, const tree::UnrankedTree & pattern ) {
 	unsigned i = 0;
-	std::set<unsigned> occ;
-	matchInternal(i, occ, subject.getRoot(), pattern.getRoot());
+	std::set < unsigned > occ;
+
+	matchInternal ( i, occ, subject.getRoot ( ), pattern.getRoot ( ) );
 	return occ;
 }
 
-auto ExactSubtreeMatchUnrankedTree = ExactSubtreeMatch::RegistratorWrapper<std::set<unsigned>, tree::UnrankedTree>(ExactSubtreeMatch::getInstance(), ExactSubtreeMatch::match);
+auto ExactSubtreeMatchUnrankedTree = ExactSubtreeMatch::RegistratorWrapper < std::set < unsigned >, tree::UnrankedTree > ( ExactSubtreeMatch::getInstance ( ), ExactSubtreeMatch::match );
 
-std::set<unsigned> ExactSubtreeMatch::match(const tree::RankedTree& subject, const tree::RankedTree& pattern) {
+std::set < unsigned > ExactSubtreeMatch::match ( const tree::RankedTree & subject, const tree::RankedTree & pattern ) {
 	unsigned i = 0;
-	std::set<unsigned> occ;
-	matchInternal(i, occ, subject.getRoot(), pattern.getRoot());
+	std::set < unsigned > occ;
+
+	matchInternal ( i, occ, subject.getRoot ( ), pattern.getRoot ( ) );
 	return occ;
 }
 
-auto ExactSubtreeMatchRankedTree = ExactSubtreeMatch::RegistratorWrapper<std::set<unsigned>, tree::RankedTree>(ExactSubtreeMatch::getInstance(), ExactSubtreeMatch::match);
+auto ExactSubtreeMatchRankedTree = ExactSubtreeMatch::RegistratorWrapper < std::set < unsigned >, tree::RankedTree > ( ExactSubtreeMatch::getInstance ( ), ExactSubtreeMatch::match );
+
+std::set < unsigned > ExactSubtreeMatch::match ( const tree::PrefixRankedTree & subject, const tree::PrefixRankedTree & pattern ) {
+	std::set < unsigned > occ;
 
-std::set<unsigned> ExactSubtreeMatch::match(const tree::PrefixRankedTree& subject, const tree::PrefixRankedTree& pattern) {
-	std::set<unsigned> occ;
-	for(unsigned i = 0; i <= subject.getContent().size() - pattern.getContent().size(); i++) {
+	for ( unsigned i = 0; i + pattern.getContent ( ).size ( ) <= subject.getContent ( ).size ( ); i++ ) {
 		unsigned j = 0;
-		for(; j < pattern.getContent().size(); j++) {
-			if(pattern.getContent()[j] != subject.getContent()[i+j]) break;
-		}
 
-		if( j == pattern.getContent().size() )
-			occ.insert(i);
+		for ( ; j < pattern.getContent ( ).size ( ); j++ )
+			if ( pattern.getContent ( )[j] != subject.getContent ( )[i + j] ) break;
+
+		if ( j == pattern.getContent ( ).size ( ) )
+			occ.insert ( i );
 	}
+
 	return occ;
 }
 
-auto ExactSubtreeMatchPrefixRankedTree = ExactSubtreeMatch::RegistratorWrapper<std::set<unsigned>, tree::PrefixRankedTree>(ExactSubtreeMatch::getInstance(), ExactSubtreeMatch::match);
+auto ExactSubtreeMatchPrefixRankedTree = ExactSubtreeMatch::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedTree > ( ExactSubtreeMatch::getInstance ( ), ExactSubtreeMatch::match );
+
+std::set < unsigned > ExactSubtreeMatch::match ( const tree::PrefixRankedBarTree & subject, const tree::PrefixRankedBarTree & pattern ) {
+	std::set < unsigned > occ;
 
-std::set<unsigned> ExactSubtreeMatch::match(const tree::PrefixRankedBarTree& subject, const tree::PrefixRankedBarTree& pattern) {
-	std::set<unsigned> occ;
-	for(unsigned i = 0; i <= subject.getContent().size() - pattern.getContent().size(); i++) {
+	for ( unsigned i = 0; i + pattern.getContent ( ).size ( ) <= subject.getContent ( ).size ( ); i++ ) {
 		unsigned j = 0;
-		for(; j < pattern.getContent().size(); j++) {
-			if(pattern.getContent()[j] != subject.getContent()[i+j]) break;
-		}
 
-		if( j == pattern.getContent().size() )
-			occ.insert(i);
+		for ( ; j < pattern.getContent ( ).size ( ); j++ )
+			if ( pattern.getContent ( )[j] != subject.getContent ( )[i + j] ) break;
+
+		if ( j == pattern.getContent ( ).size ( ) )
+			occ.insert ( i );
 	}
+
 	return occ;
 }
 
-auto ExactSubtreeMatchPrefixRankedBarTree = ExactSubtreeMatch::RegistratorWrapper<std::set<unsigned>, tree::PrefixRankedBarTree>(ExactSubtreeMatch::getInstance(), ExactSubtreeMatch::match);
+auto ExactSubtreeMatchPrefixRankedBarTree = ExactSubtreeMatch::RegistratorWrapper < std::set < unsigned >, tree::PrefixRankedBarTree > ( ExactSubtreeMatch::getInstance ( ), ExactSubtreeMatch::match );
 
 } /* namespace exact */
 
diff --git a/alib2algo/src/stringology/exact/ExactFactorMatch.cpp b/alib2algo/src/stringology/exact/ExactFactorMatch.cpp
index 556983b527..3dc99ab829 100644
--- a/alib2algo/src/stringology/exact/ExactFactorMatch.cpp
+++ b/alib2algo/src/stringology/exact/ExactFactorMatch.cpp
@@ -15,25 +15,27 @@ namespace stringology {
 
 namespace exact {
 
-std::set<unsigned> ExactFactorMatch::match(const string::String& subject, const string::String& pattern) {
-	return getInstance().dispatch(subject.getData(), pattern.getData());
+std::set < unsigned > ExactFactorMatch::match ( const string::String & subject, const string::String & pattern ) {
+	return getInstance ( ).dispatch ( subject.getData ( ), pattern.getData ( ) );
 }
 
-std::set<unsigned> ExactFactorMatch::match(const string::LinearString& subject, const string::LinearString& pattern) {
-	std::set<unsigned> occ;
-	for(unsigned i = 0; i <= subject.getContent().size() - pattern.getContent().size(); i++) {
+std::set < unsigned > ExactFactorMatch::match ( const string::LinearString & subject, const string::LinearString & pattern ) {
+	std::set < unsigned > occ;
+
+	for ( unsigned i = 0; i + pattern.getContent ( ).size ( ) <= subject.getContent ( ).size ( ); i++ ) {
 		unsigned j = 0;
-		for(; j < pattern.getContent().size(); j++) {
-			if(pattern.getContent()[j] != subject.getContent()[i+j]) break;
-		}
 
-		if( j == pattern.getContent().size() )
-			occ.insert(i);
+		for ( ; j < pattern.getContent ( ).size ( ); j++ )
+			if ( pattern.getContent ( )[j] != subject.getContent ( )[i + j] ) break;
+
+		if ( j == pattern.getContent ( ).size ( ) )
+			occ.insert ( i );
 	}
+
 	return occ;
 }
 
-auto ExactFactorMatchLinearString = ExactFactorMatch::RegistratorWrapper<std::set<unsigned>, string::LinearString>(ExactFactorMatch::getInstance(), ExactFactorMatch::match);
+auto ExactFactorMatchLinearString = ExactFactorMatch::RegistratorWrapper < std::set < unsigned >, string::LinearString > ( ExactFactorMatch::getInstance ( ), ExactFactorMatch::match );
 
 } /* namespace exact */
 
-- 
GitLab