From b473557071758c64ab8bb0fdb02283a68b5f4013 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Fri, 5 Aug 2016 13:17:36 +0200
Subject: [PATCH] access for nonlinear tree pattern automaton algo

---
 aarbology2/src/aarbology.cpp | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/aarbology2/src/aarbology.cpp b/aarbology2/src/aarbology.cpp
index 73c7468386..db0043ca7f 100644
--- a/aarbology2/src/aarbology.cpp
+++ b/aarbology2/src/aarbology.cpp
@@ -27,6 +27,7 @@
 #include <arbology/exact/ExactPatternMatchingAutomaton.h>
 #include <arbology/exact/ExactSubtreeAutomaton.h>
 #include <arbology/exact/ExactTreePatternAutomaton.h>
+#include <arbology/exact/ExactNonlinearTreePatternAutomaton.h>
 #include <arbology/exact/ExactSubtreeRepeatsNaive.h>
 #include <arbology/transform/BeginToEndIndex.h>
 
@@ -48,6 +49,7 @@ int main ( int argc, char * argv[] ) {
 		allowed.push_back ( "exactPatternMatchingAutomaton" );
 		allowed.push_back ( "exactSubtreeAutomaton" );
 		allowed.push_back ( "exactTreePatternAutomaton" );
+		allowed.push_back ( "exactNonlinearTreePatternAutomaton" );
 		allowed.push_back ( "exactSubtreeRepeatsNaive" );
 		TCLAP::ValuesConstraint < std::string > allowedVals ( allowed );
 
@@ -223,6 +225,20 @@ int main ( int argc, char * argv[] ) {
 			measurements::end ( );
 			measurements::start ( "Output write", measurements::Type::AUXILIARY );
 
+			alib::XmlDataFactory::toStdout ( res );
+		} else if ( algorithm.getValue ( ) == "exactNonlinearTreePatternAutomaton" ) {
+			tree::Tree subject = alib::XmlDataFactory::fromTokens < tree::Tree > ( std::move ( sax::FromXMLParserHelper::parseInput(true, subjectInput).front ( ) ) );
+			alphabet::Symbol subtreeWildcard = alib::XmlDataFactory::fromTokens < alphabet::Symbol > ( sax::FromXMLParserHelper::parseInput(subtreeWildcardInput) );
+			std::set < alphabet::Symbol > nonlinearVariables = alib::XmlDataFactory::fromTokens < std::set < alphabet::Symbol > > ( sax::FromXMLParserHelper::parseInput(nonlinearVariablesInput) );
+
+			measurements::end ( );
+			measurements::start ( "Algorithm", measurements::Type::MAIN );
+
+			automaton::Automaton res = arbology::exact::ExactNonlinearTreePatternAutomaton::construct ( subject, subtreeWildcard, nonlinearVariables );
+
+			measurements::end ( );
+			measurements::start ( "Output write", measurements::Type::AUXILIARY );
+
 			alib::XmlDataFactory::toStdout ( res );
 		} else if ( algorithm.getValue ( ) == "exactSubtreeRepeatsNaive" ) {
 			tree::Tree subject = alib::XmlDataFactory::fromTokens < tree::Tree > ( std::move ( sax::FromXMLParserHelper::parseInput(true, subjectInput).front ( ) ) );
-- 
GitLab