From a0b07a8086c2a20f6fc24f488f48996b6e0bad85 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Tue, 9 Jun 2015 22:13:52 +0200 Subject: [PATCH] simplify includes in automata --- alib2data/src/XmlApi.cpp | 20 ++++++++++++ alib2data/src/automaton/Automaton.cpp | 1 - alib2data/src/automaton/Automaton.h | 14 +++++++-- alib2data/src/automaton/AutomatonClasses.h | 31 +++++++++++++++++++ alib2data/src/automaton/AutomatonFeatures.h | 22 +++++++++++++ .../automaton/AutomatonFromStringLexer.cpp | 1 - .../src/automaton/AutomatonFromStringLexer.h | 2 +- .../src/automaton/AutomatonFromStringParser.h | 1 - .../src/automaton/AutomatonFromXMLParser.cpp | 7 ++--- .../src/automaton/AutomatonFromXMLParser.h | 30 ++++-------------- .../automaton/AutomatonToStringComposer.cpp | 4 +++ .../src/automaton/AutomatonToStringComposer.h | 4 --- .../src/automaton/AutomatonToXMLComposer.cpp | 3 +- .../src/automaton/AutomatonToXMLComposer.h | 22 ++++--------- alib2data/src/object/ObjectBase.h | 25 +-------------- 15 files changed, 108 insertions(+), 79 deletions(-) create mode 100644 alib2data/src/automaton/AutomatonClasses.h diff --git a/alib2data/src/XmlApi.cpp b/alib2data/src/XmlApi.cpp index efe35c7289..effa2b099a 100644 --- a/alib2data/src/XmlApi.cpp +++ b/alib2data/src/XmlApi.cpp @@ -41,6 +41,26 @@ #include "string/LinearString.h" #include "string/Epsilon.h" +#include "automaton/FSM/EpsilonNFA.h" +#include "automaton/FSM/NFA.h" +#include "automaton/FSM/MultiInitialStateNFA.h" +#include "automaton/FSM/DFA.h" +#include "automaton/FSM/CompactNFA.h" +#include "automaton/FSM/ExtendedNFA.h" +#include "automaton/PDA/DPDA.h" +#include "automaton/PDA/SinglePopDPDA.h" +#include "automaton/PDA/InputDrivenDPDA.h" +#include "automaton/PDA/InputDrivenNPDA.h" +#include "automaton/PDA/VisiblyPushdownDPDA.h" +#include "automaton/PDA/VisiblyPushdownNPDA.h" +#include "automaton/PDA/RealTimeHeightDeterministicDPDA.h" +#include "automaton/PDA/RealTimeHeightDeterministicNPDA.h" +#include "automaton/PDA/NPDA.h" +#include "automaton/PDA/SinglePopNPDA.h" +#include "automaton/TM/OneTapeDTM.h" +#include "automaton/TA/DFTA.h" +#include "automaton/TA/NFTA.h" + namespace alib { const label::LabelFromXMLParser FromXMLParsers::labelParser; diff --git a/alib2data/src/automaton/Automaton.cpp b/alib2data/src/automaton/Automaton.cpp index 69604ea713..005b22ebb7 100644 --- a/alib2data/src/automaton/Automaton.cpp +++ b/alib2data/src/automaton/Automaton.cpp @@ -7,7 +7,6 @@ #include "Automaton.h" #include "../label/NextLabel.h" -#include "../label/Label.h" #include <climits> #include "AutomatonException.h" diff --git a/alib2data/src/automaton/Automaton.h b/alib2data/src/automaton/Automaton.h index c34cde4f56..e48e3c5a55 100644 --- a/alib2data/src/automaton/Automaton.h +++ b/alib2data/src/automaton/Automaton.h @@ -13,14 +13,24 @@ #include "common/State.h" #include <set> -#include <string> namespace automaton { /** * Wrapper around automata. */ -typedef alib::wrapper<AutomatonBase> Automaton; +class Automaton : public alib::wrapper<AutomatonBase> { +public: + explicit Automaton(AutomatonBase* data) : alib::wrapper<AutomatonBase>(data) { + } + + explicit Automaton(const AutomatonBase& data) : alib::wrapper<AutomatonBase>(data.clone()) { + } + + explicit Automaton(AutomatonBase&& data) : alib::wrapper<AutomatonBase>(std::move(data).plunder()) { + } + +}; State createUniqueState(State base, const std::set<State>& other); diff --git a/alib2data/src/automaton/AutomatonClasses.h b/alib2data/src/automaton/AutomatonClasses.h new file mode 100644 index 0000000000..064b6d8ba7 --- /dev/null +++ b/alib2data/src/automaton/AutomatonClasses.h @@ -0,0 +1,31 @@ +/* + * AutomatonClasses.h + * + * Created on: Jun 19, 2014 + * Author: Jan Travnicek + */ + +#ifndef AUTOMATON_CLASSES_H_ +#define AUTOMATON_CLASSES_H_ + +#include "FSM/EpsilonNFA.h" +#include "FSM/NFA.h" +#include "FSM/MultiInitialStateNFA.h" +#include "FSM/DFA.h" +#include "FSM/CompactNFA.h" +#include "FSM/ExtendedNFA.h" +#include "PDA/DPDA.h" +#include "PDA/SinglePopDPDA.h" +#include "PDA/InputDrivenDPDA.h" +#include "PDA/InputDrivenNPDA.h" +#include "PDA/VisiblyPushdownDPDA.h" +#include "PDA/VisiblyPushdownNPDA.h" +#include "PDA/RealTimeHeightDeterministicDPDA.h" +#include "PDA/RealTimeHeightDeterministicNPDA.h" +#include "PDA/NPDA.h" +#include "PDA/SinglePopNPDA.h" +#include "TM/OneTapeDTM.h" +#include "TA/DFTA.h" +#include "TA/NFTA.h" + +#endif /* AUTOMATON_CLASSES_H_ */ diff --git a/alib2data/src/automaton/AutomatonFeatures.h b/alib2data/src/automaton/AutomatonFeatures.h index c695337eae..2981c4bf32 100644 --- a/alib2data/src/automaton/AutomatonFeatures.h +++ b/alib2data/src/automaton/AutomatonFeatures.h @@ -32,6 +32,28 @@ enum class FEATURES { NFTA }; +class Automaton; + +class EpsilonNFA; +class NFA; +class MultiInitialStateNFA; +class DFA; +class CompactNFA; +class ExtendedNFA; +class DPDA; +class SinglePopDPDA; +class InputDrivenDPDA; +class InputDrivenNPDA; +class VisiblyPushdownDPDA; +class VisiblyPushdownNPDA; +class RealTimeHeightDeterministicDPDA; +class RealTimeHeightDeterministicNPDA; +class NPDA; +class SinglePopNPDA; +class OneTapeDTM; +class DFTA; +class NFTA; + } /* namespace automaton */ #endif /* AUTOMATON_FEATURES_H_ */ diff --git a/alib2data/src/automaton/AutomatonFromStringLexer.cpp b/alib2data/src/automaton/AutomatonFromStringLexer.cpp index 974028c2b0..083032151b 100644 --- a/alib2data/src/automaton/AutomatonFromStringLexer.cpp +++ b/alib2data/src/automaton/AutomatonFromStringLexer.cpp @@ -6,7 +6,6 @@ */ #include "AutomatonFromStringLexer.h" -#include <istream> namespace automaton { diff --git a/alib2data/src/automaton/AutomatonFromStringLexer.h b/alib2data/src/automaton/AutomatonFromStringLexer.h index 32f14d4bb2..a4416fab65 100644 --- a/alib2data/src/automaton/AutomatonFromStringLexer.h +++ b/alib2data/src/automaton/AutomatonFromStringLexer.h @@ -9,7 +9,7 @@ #define AUTOMATON_FROM_STRING_LEXER_H_ #include <string> -#include <sstream> +#include <istream> namespace automaton { diff --git a/alib2data/src/automaton/AutomatonFromStringParser.h b/alib2data/src/automaton/AutomatonFromStringParser.h index a58e5a913b..7a6fbb5a58 100644 --- a/alib2data/src/automaton/AutomatonFromStringParser.h +++ b/alib2data/src/automaton/AutomatonFromStringParser.h @@ -10,7 +10,6 @@ #include "AutomatonFromStringLexer.h" -#include "Automaton.h" #include "AutomatonFeatures.h" #include "common/State.h" diff --git a/alib2data/src/automaton/AutomatonFromXMLParser.cpp b/alib2data/src/automaton/AutomatonFromXMLParser.cpp index 7ccea32d87..6005709e06 100644 --- a/alib2data/src/automaton/AutomatonFromXMLParser.cpp +++ b/alib2data/src/automaton/AutomatonFromXMLParser.cpp @@ -6,13 +6,12 @@ */ #include "AutomatonFromXMLParser.h" - #include "../sax/ParserException.h" -#include "../alphabet/BlankSymbol.h" -#include "../label/Label.h" - #include "../XmlApi.hpp" +#include "Automaton.h" +#include "AutomatonClasses.h" + namespace automaton { Automaton AutomatonFromXMLParser::parseAutomaton(std::deque<sax::Token>::iterator& input) const { diff --git a/alib2data/src/automaton/AutomatonFromXMLParser.h b/alib2data/src/automaton/AutomatonFromXMLParser.h index ab036ce265..f625ba9d9b 100644 --- a/alib2data/src/automaton/AutomatonFromXMLParser.h +++ b/alib2data/src/automaton/AutomatonFromXMLParser.h @@ -9,32 +9,14 @@ #define AUTOMATON_FROM_XML_PARSER_H_ #include "../sax/FromXMLParserHelper.h" -#include "Automaton.h" -#include "AutomatonFeatures.h" -#include "FSM/EpsilonNFA.h" -#include "FSM/NFA.h" -#include "FSM/MultiInitialStateNFA.h" -#include "FSM/DFA.h" -#include "FSM/CompactNFA.h" -#include "FSM/ExtendedNFA.h" -#include "PDA/DPDA.h" -#include "PDA/SinglePopDPDA.h" -#include "PDA/InputDrivenDPDA.h" -#include "PDA/InputDrivenNPDA.h" -#include "PDA/VisiblyPushdownDPDA.h" -#include "PDA/VisiblyPushdownNPDA.h" -#include "PDA/RealTimeHeightDeterministicDPDA.h" -#include "PDA/RealTimeHeightDeterministicNPDA.h" -#include "PDA/NPDA.h" -#include "PDA/SinglePopNPDA.h" -#include "TM/OneTapeDTM.h" -#include "TA/DFTA.h" -#include "TA/NFTA.h" - -#include <deque> #include <set> +#include <vector> #include <variant> -#include "../sax/Token.h" +#include "AutomatonFeatures.h" + +#include "common/State.h" +#include "common/Shift.h" +#include "../regexp/RegExp.h" namespace alib { diff --git a/alib2data/src/automaton/AutomatonToStringComposer.cpp b/alib2data/src/automaton/AutomatonToStringComposer.cpp index 2023d4cd6e..a662bcb6d3 100644 --- a/alib2data/src/automaton/AutomatonToStringComposer.cpp +++ b/alib2data/src/automaton/AutomatonToStringComposer.cpp @@ -7,6 +7,10 @@ #include "AutomatonToStringComposer.h" #include "../exception/AlibException.h" +#include "FSM/DFA.h" +#include "FSM/NFA.h" +#include "FSM/MultiInitialStateNFA.h" +#include "FSM/EpsilonNFA.h" #include "../StringApi.hpp" diff --git a/alib2data/src/automaton/AutomatonToStringComposer.h b/alib2data/src/automaton/AutomatonToStringComposer.h index ef21995297..2aa049527f 100644 --- a/alib2data/src/automaton/AutomatonToStringComposer.h +++ b/alib2data/src/automaton/AutomatonToStringComposer.h @@ -10,10 +10,6 @@ #include <ostream> #include "Automaton.h" -#include "FSM/DFA.h" -#include "FSM/NFA.h" -#include "FSM/MultiInitialStateNFA.h" -#include "FSM/EpsilonNFA.h" namespace automaton { diff --git a/alib2data/src/automaton/AutomatonToXMLComposer.cpp b/alib2data/src/automaton/AutomatonToXMLComposer.cpp index 2030103543..af9978167d 100644 --- a/alib2data/src/automaton/AutomatonToXMLComposer.cpp +++ b/alib2data/src/automaton/AutomatonToXMLComposer.cpp @@ -6,10 +6,11 @@ */ #include "AutomatonToXMLComposer.h" -#include "../alphabet/BlankSymbol.h" #include "../XmlApi.hpp" +#include "AutomatonClasses.h" + namespace automaton { void AutomatonToXMLComposer::composeStates(std::deque<sax::Token>& out, const std::set<State>& states) const { diff --git a/alib2data/src/automaton/AutomatonToXMLComposer.h b/alib2data/src/automaton/AutomatonToXMLComposer.h index a3f94727dc..39ce199a2b 100644 --- a/alib2data/src/automaton/AutomatonToXMLComposer.h +++ b/alib2data/src/automaton/AutomatonToXMLComposer.h @@ -10,25 +10,15 @@ #include <string> #include <deque> +#include <vector> +#include <set> +#include <variant> #include "Automaton.h" -#include "FSM/EpsilonNFA.h" -#include "FSM/MultiInitialStateNFA.h" -#include "FSM/NFA.h" -#include "FSM/DFA.h" -#include "FSM/CompactNFA.h" -#include "FSM/ExtendedNFA.h" -#include "PDA/InputDrivenDPDA.h" -#include "PDA/InputDrivenNPDA.h" -#include "PDA/VisiblyPushdownDPDA.h" -#include "PDA/VisiblyPushdownNPDA.h" -#include "PDA/RealTimeHeightDeterministicDPDA.h" -#include "PDA/RealTimeHeightDeterministicNPDA.h" -#include "PDA/NPDA.h" -#include "PDA/SinglePopNPDA.h" -#include "TM/OneTapeDTM.h" -#include "TA/NFTA.h" #include "../sax/Token.h" +#include "common/Shift.h" +#include "../regexp/RegExp.h" + namespace alib { template<typename T> diff --git a/alib2data/src/object/ObjectBase.h b/alib2data/src/object/ObjectBase.h index bcc057c1fc..85cbe3c850 100644 --- a/alib2data/src/object/ObjectBase.h +++ b/alib2data/src/object/ObjectBase.h @@ -17,30 +17,7 @@ #include "ObjectFeatures.h" #include "../exception/ExceptionFeatures.h" - -namespace automaton { - -class DFA; -class NFA; -class MultiInitialStateNFA; -class EpsilonNFA; -class CompactNFA; -class ExtendedNFA; -class DPDA; -class SinglePopDPDA; -class InputDrivenDPDA; -class VisiblyPushdownDPDA; -class RealTimeHeightDeterministicDPDA; -class NPDA; -class SinglePopNPDA; -class InputDrivenNPDA; -class VisiblyPushdownNPDA; -class RealTimeHeightDeterministicNPDA; -class OneTapeDTM; -class DFTA; -class NFTA; - -} +#include "../automaton/AutomatonFeatures.h" namespace grammar { -- GitLab