From d9e084e8a8ffcbf656d567b1ee0a10ea4d42d7d9 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Sat, 2 Feb 2019 19:28:51 +0100
Subject: [PATCH] user documentation of automaton conversions

---
 alib2algo/src/automaton/convert/ToGrammar.cpp | 13 +++++-
 alib2algo/src/automaton/convert/ToGrammar.h   | 13 +++---
 .../src/automaton/convert/ToGrammarLeftRG.cpp | 13 +++++-
 .../automaton/convert/ToGrammarRightRG.cpp    | 13 +++++-
 .../convert/ToPostfixPushdownAutomaton.cpp    | 13 +++++-
 alib2algo/src/automaton/convert/ToRegExp.cpp  | 41 ++++++++++++++++---
 .../automaton/convert/ToRegExpAlgebraic.cpp   | 27 ++++++++++--
 .../convert/ToRegExpStateElimination.cpp      | 41 ++++++++++++++++---
 8 files changed, 145 insertions(+), 29 deletions(-)

diff --git a/alib2algo/src/automaton/convert/ToGrammar.cpp b/alib2algo/src/automaton/convert/ToGrammar.cpp
index 9c09db9d51..31624f1132 100644
--- a/alib2algo/src/automaton/convert/ToGrammar.cpp
+++ b/alib2algo/src/automaton/convert/ToGrammar.cpp
@@ -12,8 +12,17 @@ namespace automaton {
 
 namespace convert {
 
-auto ToGrammarNFA = registration::AbstractRegister < ToGrammar, grammar::RightRG < >, const automaton::NFA < > & > ( ToGrammar::convert );
-auto ToGrammarDFA = registration::AbstractRegister < ToGrammar, grammar::RightRG < >, const automaton::DFA < > & > ( ToGrammar::convert );
+auto ToGrammarNFA = registration::AbstractRegister < ToGrammar, grammar::RightRG < >, const automaton::NFA < > & > ( ToGrammar::convert, "automaton" ).setDocumentation (
+"Performs the conversion (@sa ToGrammarRightRG)\n\
+\n\
+@param automaton the automaton to convert\n\
+@return right regular grammar equivalent to the input @p automaton" );
+
+auto ToGrammarDFA = registration::AbstractRegister < ToGrammar, grammar::RightRG < >, const automaton::DFA < > & > ( ToGrammar::convert, "automaton" ).setDocumentation (
+"Performs the conversion (@sa ToGrammarRightRG)\n\
+\n\
+@param automaton the automaton to convert\n\
+@return right regular grammar equivalent to the input @p automaton" );
 
 } /* namespace convert */
 
diff --git a/alib2algo/src/automaton/convert/ToGrammar.h b/alib2algo/src/automaton/convert/ToGrammar.h
index e67c4869a2..209b10a145 100644
--- a/alib2algo/src/automaton/convert/ToGrammar.h
+++ b/alib2algo/src/automaton/convert/ToGrammar.h
@@ -42,16 +42,19 @@ class ToGrammar {
 public:
 	/**
 	 * Performs the conversion (@sa ToGrammarRightRG::convert).
-	 * @tparam SymbolType Type for symbols.
-	 * @tparam StateType Type for states.
-	 * @param automaton the automaton to convert
-	 * @return right regular grammar equivalent to the input @p automaton
+	 *
+	 * \tparam SymbolType Type for symbols.
+	 * \tparam StateType Type for states.
+	 *
+	 * \param automaton the automaton to convert
+	 *
+	 * \return right regular grammar equivalent to the input @p automaton
 	 */
 	template < class SymbolType, class StateType >
 	static grammar::RightRG < SymbolType, StateType > convert(const automaton::NFA < SymbolType, StateType > & automaton);
 
 	/**
-	 * @overload
+	 * \overload
 	 */
 	template < class SymbolType, class StateType >
 	static grammar::RightRG < SymbolType, StateType > convert(const automaton::DFA < SymbolType, StateType > & automaton);
diff --git a/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp b/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp
index 8cba0df538..95fab45fdd 100644
--- a/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp
+++ b/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp
@@ -12,8 +12,17 @@ namespace automaton {
 
 namespace convert {
 
-auto ToGrammarLeftRGNFA = registration::AbstractRegister < ToGrammarLeftRG, grammar::LeftRG < >, const automaton::NFA < > & > ( ToGrammarLeftRG::convert );
-auto ToGrammarLeftRGDFA = registration::AbstractRegister < ToGrammarLeftRG, grammar::LeftRG < >, const automaton::DFA < > & > ( ToGrammarLeftRG::convert );
+auto ToGrammarLeftRGNFA = registration::AbstractRegister < ToGrammarLeftRG, grammar::LeftRG < >, const automaton::NFA < > & > ( ToGrammarLeftRG::convert, "automaton" ).setDocumentation (
+"Performs the conversion of the finite automaton to left regular grammar.\n\
+\n\
+@param automaton a finite automaton to convert\n\
+@return left regular grammar equivalent to the source @p automaton." );
+
+auto ToGrammarLeftRGDFA = registration::AbstractRegister < ToGrammarLeftRG, grammar::LeftRG < >, const automaton::DFA < > & > ( ToGrammarLeftRG::convert, "automaton").setDocumentation (
+"Performs the conversion of the finite automaton to left regular grammar.\n\
+\n\
+@param automaton a finite automaton to convert\n\
+@return left regular grammar equivalent to the source @p automaton." );
 
 } /* namespace convert */
 
diff --git a/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp b/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp
index 58e84d9f6f..1883b2dbf5 100644
--- a/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp
+++ b/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp
@@ -12,8 +12,17 @@ namespace automaton {
 
 namespace convert {
 
-auto ToGrammarRightRGNFA = registration::AbstractRegister < ToGrammarRightRG, grammar::RightRG < >, const automaton::NFA < > & > ( ToGrammarRightRG::convert );
-auto ToGrammarRightRGDFA = registration::AbstractRegister < ToGrammarRightRG, grammar::RightRG < >, const automaton::DFA < > & > ( ToGrammarRightRG::convert );
+auto ToGrammarRightRGNFA = registration::AbstractRegister < ToGrammarRightRG, grammar::RightRG < >, const automaton::NFA < > & > ( ToGrammarRightRG::convert, "automaton" ).setDocumentation (
+"Performs the conversion of the finite automaton to right regular grammar.\n\
+\n\
+@param automaton a finite automaton to convert\n\
+@return right regular grammar equivalent to the source @p automaton." );
+
+auto ToGrammarRightRGDFA = registration::AbstractRegister < ToGrammarRightRG, grammar::RightRG < >, const automaton::DFA < > & > ( ToGrammarRightRG::convert, "automaton" ).setDocumentation (
+"Performs the conversion of the finite automaton to right regular grammar.\n\
+\n\
+@param automaton a finite automaton to convert\n\
+ěreturn right regular grammar equivalent to the source @p automaton." );
 
 } /* namespace convert */
 
diff --git a/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp b/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp
index 814a8666d6..9bae87f9e6 100644
--- a/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp
+++ b/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp
@@ -97,8 +97,17 @@ automaton::NPDA < > ToPostfixPushdownAutomaton::convert ( const automaton::NFTA
 	return automaton;
 }
 
-auto ToAutomatonDFTA = registration::AbstractRegister < ToPostfixPushdownAutomaton, automaton::DPDA < >, const automaton::DFTA < > & > ( ToPostfixPushdownAutomaton::convert );
-auto ToAutomatonNFTA = registration::AbstractRegister < ToPostfixPushdownAutomaton, automaton::NPDA < >, const automaton::NFTA < > & > ( ToPostfixPushdownAutomaton::convert );
+auto ToAutomatonDFTA = registration::AbstractRegister < ToPostfixPushdownAutomaton, automaton::DPDA < >, const automaton::DFTA < > & > ( ToPostfixPushdownAutomaton::convert, "dfta" ).setDocumentation (
+"Performs the conversion of the deterministic FTA to the deterministic PDA\n\
+\n\
+@param dfta Deterministic finite tree automaton to convert\n\
+@return (D)PDA equivalent to original finite tree automaton reading linearized postfix tree" );
+
+auto ToAutomatonNFTA = registration::AbstractRegister < ToPostfixPushdownAutomaton, automaton::NPDA < >, const automaton::NFTA < > & > ( ToPostfixPushdownAutomaton::convert, "nfta" ).setDocumentation (
+"Performs the conversion of the deterministic FTA to the deterministic PDA\n\
+\n\
+@param nfta Nondeterministic finite tree automaton to convert\n\
+@return (N)PDA equivalent to original finite tree automaton reading linearized postfix tree" );
 
 } /* namespace convert */
 
diff --git a/alib2algo/src/automaton/convert/ToRegExp.cpp b/alib2algo/src/automaton/convert/ToRegExp.cpp
index 154c9cf3fe..3bd847ebf4 100644
--- a/alib2algo/src/automaton/convert/ToRegExp.cpp
+++ b/alib2algo/src/automaton/convert/ToRegExp.cpp
@@ -12,12 +12,41 @@ namespace automaton {
 
 namespace convert {
 
-auto ToRegExpEpsilonNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & > ( ToRegExp::convert );
-auto ToRegExpMultiInitialStateNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & > ( ToRegExp::convert );
-auto ToRegExpNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::NFA < > & > ( ToRegExp::convert );
-auto ToRegExpDFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::DFA < > & > ( ToRegExp::convert );
-auto ToRegExpExtendedNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::ExtendedNFA < > & > ( ToRegExp::convert );
-auto ToRegExpCompactNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::CompactNFA < > & > ( ToRegExp::convert );
+auto ToRegExpEpsilonNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation (
+"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\
+\n\
+@param automaton the automaton to convert\n\
+@return regular expression equivalent to the input @p automaton" );
+
+auto ToRegExpMultiInitialStateNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation (
+"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\
+\n\
+@param automaton the automaton to convert\n\
+@return regular expression equivalent to the input @p automaton" );
+
+auto ToRegExpNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::NFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation (
+"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\
+\n\
+@param automaton the automaton to convert\n\
+@return regular expression equivalent to the input @p automaton" );
+
+auto ToRegExpDFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::DFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation (
+"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\
+\n\
+@param automaton the automaton to convert\n\
+@return regular expression equivalent to the input @p automaton" );
+
+auto ToRegExpExtendedNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::ExtendedNFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation (
+"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\
+\n\
+@param automaton the automaton to convert\n\
+@return regular expression equivalent to the input @p automaton" );
+
+auto ToRegExpCompactNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::CompactNFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation (
+"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\
+\n\
+@param automaton the automaton to convert\n\
+@return regular expression equivalent to the input @p automaton" );
 
 } /* namespace convert */
 
diff --git a/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp b/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp
index 1f636ccf2c..b0480fbe91 100644
--- a/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp
+++ b/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp
@@ -12,10 +12,29 @@ namespace automaton {
 
 namespace convert {
 
-auto ToRegExpAlgebraicEpsilonNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & > ( ToRegExpAlgebraic::convert );
-auto ToRegExpAlgebraicMultiInitialStateNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & > ( ToRegExpAlgebraic::convert );
-auto ToRegExpAlgebraicNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::NFA < > & > ( ToRegExpAlgebraic::convert );
-auto ToRegExpAlgebraicDFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::DFA < > & > ( ToRegExpAlgebraic::convert );
+auto ToRegExpAlgebraicEpsilonNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & > ( ToRegExpAlgebraic::convert, "automaton" ).setDocumentation (
+"Performs the actual conversion.\n\
+\n\
+@param automaton The automaton that is to be converted to the regular expression\n\
+@return regular expression equivalent to the input @p automaton" );
+
+auto ToRegExpAlgebraicMultiInitialStateNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & > ( ToRegExpAlgebraic::convert, "automaton" ).setDocumentation (
+"Performs the actual conversion.\n\
+\n\
+@param automaton The automaton that is to be converted to the regular expression\n\
+@return regular expression equivalent to the input @p automaton" );
+
+auto ToRegExpAlgebraicNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::NFA < > & > ( ToRegExpAlgebraic::convert, "automaton" ).setDocumentation (
+"Performs the actual conversion.\n\
+\n\
+@param automaton The automaton that is to be converted to the regular expression\n\
+@return regular expression equivalent to the input @p automaton" );
+
+auto ToRegExpAlgebraicDFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::DFA < > & > ( ToRegExpAlgebraic::convert, "automaton" ).setDocumentation (
+"Performs the actual conversion.\n\
+\n\
+@param automaton The automaton that is to be converted to the regular expression\n\
+@return regular expression equivalent to the input @p automaton" );
 
 } /* namespace convert */
 
diff --git a/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp b/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp
index 8c6967b2ac..151f72729b 100644
--- a/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp
+++ b/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp
@@ -12,12 +12,41 @@ namespace automaton {
 
 namespace convert {
 
-auto ToRegExpStateEliminationEpsilonNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & >(ToRegExpStateElimination::convert);
-auto ToRegExpStateEliminationMultiInitialStateNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & >(ToRegExpStateElimination::convert);
-auto ToRegExpStateEliminationNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::NFA < > & >(ToRegExpStateElimination::convert);
-auto ToRegExpStateEliminationDFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::DFA < > & >(ToRegExpStateElimination::convert);
-auto ToRegExpStateEliminationExtendedNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::ExtendedNFA < > & >(ToRegExpStateElimination::convert);
-auto ToRegExpStateEliminationCompactNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::CompactNFA < > & >(ToRegExpStateElimination::convert);
+auto ToRegExpStateEliminationEpsilonNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation (
+"Performs conversion.\n\
+\n\
+@param automaton finite automaton to convert\n\
+@return unbounded regular expression equivalent to the original automaton" );
+
+auto ToRegExpStateEliminationMultiInitialStateNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation (
+"Performs conversion.\n\
+\n\
+@param automaton finite automaton to convert\n\
+@return unbounded regular expression equivalent to the original automaton" );
+
+auto ToRegExpStateEliminationNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::NFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation (
+"Performs conversion.\n\
+\n\
+@param automaton finite automaton to convert\n\
+@return unbounded regular expression equivalent to the original automaton" );
+
+auto ToRegExpStateEliminationDFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::DFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation (
+"Performs conversion.\n\
+\n\
+@param automaton finite automaton to convert\n\
+@return unbounded regular expression equivalent to the original automaton" );
+
+auto ToRegExpStateEliminationExtendedNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::ExtendedNFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation (
+"Performs conversion.\n\
+\n\
+@param automaton finite automaton to convert\n\
+@return unbounded regular expression equivalent to the original automaton" );
+
+auto ToRegExpStateEliminationCompactNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::CompactNFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation (
+"Performs conversion.\n\
+\n\
+@param automaton finite automaton to convert\n\
+@return unbounded regular expression equivalent to the original automaton" );
 
 } /* namespace convert */
 
-- 
GitLab