diff --git a/alib2data/src/XmlApi.cpp b/alib2data/src/XmlApi.cpp index 716ecdc511f16a48b7454f3e51ea7ba66ced2d8c..aa44642a314e7b0903d334f79f64adbc77fd62b9 100644 --- a/alib2data/src/XmlApi.cpp +++ b/alib2data/src/XmlApi.cpp @@ -7,6 +7,19 @@ #include "XmlApi.hpp" +#include "alphabet/LabeledSymbol.h" +#include "alphabet/BlankSymbol.h" +#include "alphabet/BottomOfTheStackSymbol.h" +#include "alphabet/BarSymbol.h" +#include "alphabet/VariablesBarSymbol.h" +#include "alphabet/StartSymbol.h" +#include "alphabet/EndSymbol.h" +#include "alphabet/RankedSymbol.h" +#include "alphabet/SymbolPairSymbol.h" +#include "alphabet/SymbolSetSymbol.h" +#include "alphabet/SubtreeWildcardSymbol.h" +#include "alphabet/UniqueSymbol.h" + namespace alib { const label::LabelFromXMLParser FromXMLParsers::labelParser; diff --git a/alib2data/src/alphabet/Alphabet.h b/alib2data/src/alphabet/Alphabet.h index 0dce3a5704b3d5032f61927e69113ea5a5c763fc..806fc6bae2b5da660535c76a55a2f0b4de603b8a 100644 --- a/alib2data/src/alphabet/Alphabet.h +++ b/alib2data/src/alphabet/Alphabet.h @@ -8,10 +8,9 @@ #ifndef ALPHABET_H_ #define ALPHABET_H_ -#include <iostream> #include <set> -#include "../alphabet/Symbol.h" +#include "Symbol.h" namespace alphabet { diff --git a/alib2data/src/alphabet/BarSymbol.h b/alib2data/src/alphabet/BarSymbol.h index 11cae0120c7986c94bfc8de978daa32a3ce7653e..fcb16661e2a5286e2ddcfe1cb40bbd41e1a33a24 100644 --- a/alib2data/src/alphabet/BarSymbol.h +++ b/alib2data/src/alphabet/BarSymbol.h @@ -8,7 +8,7 @@ #ifndef BAR_SYMBOL_H_ #define BAR_SYMBOL_H_ -#include "Symbol.h" +#include "SymbolBase.h" namespace alphabet { diff --git a/alib2data/src/alphabet/BlankSymbol.h b/alib2data/src/alphabet/BlankSymbol.h index f404638d5113d3ca96f4bdb67251c3f636b9dfb6..36096a238d187e6744e1b586bde95a723fc3454d 100644 --- a/alib2data/src/alphabet/BlankSymbol.h +++ b/alib2data/src/alphabet/BlankSymbol.h @@ -8,7 +8,7 @@ #ifndef BLANK_SYMBOL_H_ #define BLANK_SYMBOL_H_ -#include "Symbol.h" +#include "SymbolBase.h" namespace alphabet { diff --git a/alib2data/src/alphabet/BottomOfTheStackSymbol.h b/alib2data/src/alphabet/BottomOfTheStackSymbol.h index 187781882f5d86101110402bc1fad84a074e0f48..0fc54fcf27cc706ffc6874ab55c4ac44460f86e9 100644 --- a/alib2data/src/alphabet/BottomOfTheStackSymbol.h +++ b/alib2data/src/alphabet/BottomOfTheStackSymbol.h @@ -8,7 +8,7 @@ #ifndef BOTTOM_OF_THE_STACK_SYMBOL_H_ #define BOTTOM_OF_THE_STACK_SYMBOL_H_ -#include "Symbol.h" +#include "SymbolBase.h" namespace alphabet { diff --git a/alib2data/src/alphabet/EndSymbol.h b/alib2data/src/alphabet/EndSymbol.h index c71c829f1ad8ed06b0a7c8eba00c25a8c94a6d92..ab6c21b4cc505b0d0574d3d095704f6092293de9 100644 --- a/alib2data/src/alphabet/EndSymbol.h +++ b/alib2data/src/alphabet/EndSymbol.h @@ -8,7 +8,7 @@ #ifndef END_SYMBOL_H_ #define END_SYMBOL_H_ -#include "Symbol.h" +#include "SymbolBase.h" namespace alphabet { diff --git a/alib2data/src/alphabet/LabeledSymbol.h b/alib2data/src/alphabet/LabeledSymbol.h index 32aa076f1baae60212b7b096145e9aadca899e0f..9c5b480829c7bee17a08fcde0342e0a4ad453a0a 100644 --- a/alib2data/src/alphabet/LabeledSymbol.h +++ b/alib2data/src/alphabet/LabeledSymbol.h @@ -10,7 +10,6 @@ #include "../label/Label.h" #include "SymbolBase.h" -#include <ostream> namespace alphabet { diff --git a/alib2data/src/alphabet/NextSymbol.h b/alib2data/src/alphabet/NextSymbol.h index a01a5b330f3dd31220c3ba5dc4b874a86b53bdf6..9d0586fc83ef59fb9f4928791dcd2f509b3e525e 100644 --- a/alib2data/src/alphabet/NextSymbol.h +++ b/alib2data/src/alphabet/NextSymbol.h @@ -8,9 +8,8 @@ #ifndef NEXT_SYMBOL_H_ #define NEXT_SYMBOL_H_ -#include <list> -#include "Symbol.h" -#include "../sax/Token.h" +#include "SymbolFeatures.h" +#include "SymbolBase.h" namespace alphabet { diff --git a/alib2data/src/alphabet/RankedSymbol.h b/alib2data/src/alphabet/RankedSymbol.h index 3d053b037d01259b70ad7fdfdafaf7f89ff852e2..387077813aef84b6f8a186dffb9806069dc47079 100644 --- a/alib2data/src/alphabet/RankedSymbol.h +++ b/alib2data/src/alphabet/RankedSymbol.h @@ -8,10 +8,7 @@ #ifndef RANKED_SYMBOL_H_ #define RANKED_SYMBOL_H_ -#include "../label/Label.h" -#include "SymbolBase.h" #include "Symbol.h" -#include <ostream> #include "../primitive/Unsigned.h" namespace alphabet { diff --git a/alib2data/src/alphabet/StartSymbol.h b/alib2data/src/alphabet/StartSymbol.h index 09a7d8e1cfd260075ccb76140fecddc1a8afd109..ca0631db3a86198d2d6b3cc690c27f95dd2a9ebf 100644 --- a/alib2data/src/alphabet/StartSymbol.h +++ b/alib2data/src/alphabet/StartSymbol.h @@ -8,7 +8,7 @@ #ifndef START_SYMBOL_H_ #define START_SYMBOL_H_ -#include "Symbol.h" +#include "SymbolBase.h" namespace alphabet { diff --git a/alib2data/src/alphabet/SubtreeWildcardSymbol.h b/alib2data/src/alphabet/SubtreeWildcardSymbol.h index fb2094334e2f6833baa13cdee5fe31b4f8fdcc56..0c737efa12bf9c3bcce27072a3ef6ae7f8762ecd 100644 --- a/alib2data/src/alphabet/SubtreeWildcardSymbol.h +++ b/alib2data/src/alphabet/SubtreeWildcardSymbol.h @@ -8,7 +8,7 @@ #ifndef SUBTREE_WILDCARD_SYMBOL_H_ #define SUBTREE_WILDCARD_SYMBOL_H_ -#include "Symbol.h" +#include "SymbolBase.h" namespace alphabet { diff --git a/alib2data/src/alphabet/Symbol.h b/alib2data/src/alphabet/Symbol.h index 12f893d68aad5331ee3addc3b4ba9219528b40ab..8b06ad97bab46143beddbdb54c74978a7f8dc8e7 100644 --- a/alib2data/src/alphabet/Symbol.h +++ b/alib2data/src/alphabet/Symbol.h @@ -19,7 +19,18 @@ namespace alphabet { /** * Wrapper around automata. */ -typedef alib::wrapper<SymbolBase> Symbol; +class Symbol : public alib::wrapper<SymbolBase> { +public: + explicit Symbol(SymbolBase* data) : alib::wrapper<SymbolBase>(data) { + } + + explicit Symbol(const SymbolBase& data) : alib::wrapper<SymbolBase>(data.clone()) { + } + + explicit Symbol(SymbolBase&& data) : alib::wrapper<SymbolBase>(std::move(data).plunder()) { + } + +}; /** * Creates and adds unique state to grammar. If given state name is diff --git a/alib2data/src/alphabet/SymbolFeatures.h b/alib2data/src/alphabet/SymbolFeatures.h index 6b7b586b81e843ddb2748beb3c715c9f7ab2822e..65c3e03060798302fa82441e542cc159eb2b852b 100644 --- a/alib2data/src/alphabet/SymbolFeatures.h +++ b/alib2data/src/alphabet/SymbolFeatures.h @@ -25,6 +25,21 @@ enum class FEATURES { START }; +class Symbol; + +class LabeledSymbol; +class BlankSymbol; +class BottomOfTheStackSymbol; +class EndSymbol; +class StartSymbol; +class RankedSymbol; +class BarSymbol; +class VariablesBarSymbol; +class SubtreeWildcardSymbol; +class SymbolPairSymbol; +class SymbolSetSymbol; +class UniqueSymbol; + } /* namespace alphabet */ #endif /* SYMBOL_FEATURES_H_ */ diff --git a/alib2data/src/alphabet/SymbolFromStringLexer.cpp b/alib2data/src/alphabet/SymbolFromStringLexer.cpp index e7617cfd8a40153f949ea6a088755b01c53ba588..ee9f115eba3ccf90033b62b844134ec9e614ed47 100644 --- a/alib2data/src/alphabet/SymbolFromStringLexer.cpp +++ b/alib2data/src/alphabet/SymbolFromStringLexer.cpp @@ -6,7 +6,6 @@ */ #include "SymbolFromStringLexer.h" -#include "../label/LabelFromStringLexer.h" namespace alphabet { diff --git a/alib2data/src/alphabet/SymbolFromStringLexer.h b/alib2data/src/alphabet/SymbolFromStringLexer.h index 49f080924a69a8fbda639e09555ef434d117b403..1130a66d44b5bc779df9f5e205e5c4a11d2fa350 100644 --- a/alib2data/src/alphabet/SymbolFromStringLexer.h +++ b/alib2data/src/alphabet/SymbolFromStringLexer.h @@ -9,7 +9,7 @@ #define SYMBOL_FROM_STRING_LEXER_H_ #include <string> -#include <sstream> +#include <istream> namespace alphabet { diff --git a/alib2data/src/alphabet/SymbolFromStringParser.cpp b/alib2data/src/alphabet/SymbolFromStringParser.cpp index e75cfc78815f48c7b9badb9ea0007541d64d1418..9972f6e58b510ff9ee7034dd305ccab9d0bd53aa 100644 --- a/alib2data/src/alphabet/SymbolFromStringParser.cpp +++ b/alib2data/src/alphabet/SymbolFromStringParser.cpp @@ -13,8 +13,6 @@ #include "StartSymbol.h" #include "LabeledSymbol.h" -#include "../label/Label.h" - #include "../StringApi.hpp" namespace alphabet { diff --git a/alib2data/src/alphabet/SymbolFromStringParser.h b/alib2data/src/alphabet/SymbolFromStringParser.h index 5d467712a16c7ad9b245d062994e2851b39f8eaa..a8ddbbdc89930e0e0fbf2e1c19a93af23a00f54b 100644 --- a/alib2data/src/alphabet/SymbolFromStringParser.h +++ b/alib2data/src/alphabet/SymbolFromStringParser.h @@ -8,9 +8,9 @@ #ifndef SYMBOL_FROM_STRING_PARSER_H_ #define SYMBOL_FROM_STRING_PARSER_H_ -#include "Symbol.h" #include "SymbolFromStringLexer.h" #include "SymbolFeatures.h" +#include <set> namespace alib { diff --git a/alib2data/src/alphabet/SymbolFromXMLParser.cpp b/alib2data/src/alphabet/SymbolFromXMLParser.cpp index 4fa0ce25799552e1439bcca199178623d7b60440..29941d4b006e0f4d316340ee4799f56a38f20419 100644 --- a/alib2data/src/alphabet/SymbolFromXMLParser.cpp +++ b/alib2data/src/alphabet/SymbolFromXMLParser.cpp @@ -8,10 +8,23 @@ #include "SymbolFromXMLParser.h" #include "../sax/ParserException.h" -#include "../label/Label.h" #include "../XmlApi.hpp" +#include "Symbol.h" +#include "BlankSymbol.h" +#include "BottomOfTheStackSymbol.h" +#include "EndSymbol.h" +#include "StartSymbol.h" +#include "LabeledSymbol.h" +#include "RankedSymbol.h" +#include "BarSymbol.h" +#include "VariablesBarSymbol.h" +#include "SubtreeWildcardSymbol.h" +#include "SymbolPairSymbol.h" +#include "SymbolSetSymbol.h" +#include "UniqueSymbol.h" + namespace alphabet { Symbol SymbolFromXMLParser::parseSymbol(std::deque<sax::Token>::iterator& input) const { diff --git a/alib2data/src/alphabet/SymbolFromXMLParser.h b/alib2data/src/alphabet/SymbolFromXMLParser.h index f21c8da768887b8b55274378fa5f8583e433d601..2c0a2eca3e5c76a2eb724cb230cb2f0cf7f257ee 100644 --- a/alib2data/src/alphabet/SymbolFromXMLParser.h +++ b/alib2data/src/alphabet/SymbolFromXMLParser.h @@ -9,25 +9,9 @@ #define SYMBOL_FROM_XML_PARSER_H_ #include "../sax/FromXMLParserHelper.h" -#include <vector> #include <set> -#include "Symbol.h" #include "SymbolFeatures.h" #include "../sax/Token.h" -#include "../label/Label.h" - -#include "BlankSymbol.h" -#include "BottomOfTheStackSymbol.h" -#include "EndSymbol.h" -#include "StartSymbol.h" -#include "LabeledSymbol.h" -#include "RankedSymbol.h" -#include "BarSymbol.h" -#include "VariablesBarSymbol.h" -#include "SubtreeWildcardSymbol.h" -#include "SymbolPairSymbol.h" -#include "SymbolSetSymbol.h" -#include "UniqueSymbol.h" namespace alib { diff --git a/alib2data/src/alphabet/SymbolPairSymbol.h b/alib2data/src/alphabet/SymbolPairSymbol.h index c0f2fa411b914044ce9ae50070dc192b42c87654..355a52d49f174f4750a00fd1c7f0130e3ae8dc5b 100644 --- a/alib2data/src/alphabet/SymbolPairSymbol.h +++ b/alib2data/src/alphabet/SymbolPairSymbol.h @@ -8,11 +8,7 @@ #ifndef SYMBOL_PAIR_SYMBOL_H_ #define SYMBOL_PAIR_SYMBOL_H_ -#include <string> -#include <ostream> - #include "Symbol.h" -#include "SymbolBase.h" #include <pair> namespace alphabet { diff --git a/alib2data/src/alphabet/SymbolSetSymbol.h b/alib2data/src/alphabet/SymbolSetSymbol.h index 70286e2363bea6e09d736ce0bf792ebcfd406a39..d2fa117dac792a5710d58ee4671a86c664295ef2 100644 --- a/alib2data/src/alphabet/SymbolSetSymbol.h +++ b/alib2data/src/alphabet/SymbolSetSymbol.h @@ -8,11 +8,7 @@ #ifndef SYMBOL_SET_SYMBOL_H_ #define SYMBOL_SET_SYMBOL_H_ -#include <string> -#include <ostream> - #include "Symbol.h" -#include "SymbolBase.h" #include <set> namespace alphabet { diff --git a/alib2data/src/alphabet/SymbolToXMLComposer.cpp b/alib2data/src/alphabet/SymbolToXMLComposer.cpp index b21e0b423c2ab9171c8c7d375c2f990d9b03df4d..9971cf070520c57835ee8b6b748a4e3790c33b27 100644 --- a/alib2data/src/alphabet/SymbolToXMLComposer.cpp +++ b/alib2data/src/alphabet/SymbolToXMLComposer.cpp @@ -9,6 +9,12 @@ #include "../XmlApi.hpp" +#include "LabeledSymbol.h" +#include "RankedSymbol.h" +#include "SymbolPairSymbol.h" +#include "SymbolSetSymbol.h" +#include "UniqueSymbol.h" + namespace alphabet { void SymbolToXMLComposer::compose(std::deque<sax::Token>& out, const Symbol& symbol) const { diff --git a/alib2data/src/alphabet/SymbolToXMLComposer.h b/alib2data/src/alphabet/SymbolToXMLComposer.h index cf8701a3c112069552d6aaf6eac03f1d061634a1..fb254e4450f758f24bc84aa9feafefb2a55c0a8d 100644 --- a/alib2data/src/alphabet/SymbolToXMLComposer.h +++ b/alib2data/src/alphabet/SymbolToXMLComposer.h @@ -11,7 +11,6 @@ #include <deque> #include "Symbol.h" #include "../sax/Token.h" -#include "../label/Label.h" namespace alib { diff --git a/alib2data/src/alphabet/UniqueSymbol.h b/alib2data/src/alphabet/UniqueSymbol.h index 40a5f89b0f61cd5bf10bb72f2c93577f25e764bd..d5c85fd7cd77fccf63f150fcf9104cab98c579cb 100644 --- a/alib2data/src/alphabet/UniqueSymbol.h +++ b/alib2data/src/alphabet/UniqueSymbol.h @@ -8,12 +8,7 @@ #ifndef SYMBOL_ID_SYMBOL_H_ #define SYMBOL_ID_SYMBOL_H_ -#include <string> -#include <ostream> - #include "Symbol.h" -#include "SymbolBase.h" -#include <set> #include "../primitive/Integer.h" namespace alphabet { diff --git a/alib2data/src/alphabet/VariablesBarSymbol.h b/alib2data/src/alphabet/VariablesBarSymbol.h index f1ed01f07dc90bf1cbb135abf23116e1d95284d2..82d8367a7d0587f1ae16e6fd29b5d9edfb1b2129 100644 --- a/alib2data/src/alphabet/VariablesBarSymbol.h +++ b/alib2data/src/alphabet/VariablesBarSymbol.h @@ -8,7 +8,7 @@ #ifndef VARIABLES_BAR_SYMBOL_H_ #define VARIABLES_BAR_SYMBOL_H_ -#include "Symbol.h" +#include "SymbolBase.h" namespace alphabet { diff --git a/alib2data/src/object/ObjectBase.h b/alib2data/src/object/ObjectBase.h index f6649b1100bc5956834dd3fae82ae6457c831c0a..7d569748672c01f5ac9537f4ee55df31816d418a 100644 --- a/alib2data/src/object/ObjectBase.h +++ b/alib2data/src/object/ObjectBase.h @@ -100,22 +100,7 @@ class Epsilon; } -namespace alphabet { - -class StartSymbol; -class LabeledSymbol; -class BlankSymbol; -class BottomOfTheStackSymbol; -class RankedSymbol; -class BarSymbol; -class VariablesBarSymbol; -class SubtreeWildcardSymbol; -class SymbolSetSymbol; -class SymbolPairSymbol; -class UniqueSymbol; -class EndSymbol; - -} +#include "../alphabet/SymbolFeatures.h" namespace container { diff --git a/alib2data/test-src/alphabet/SymbolTest.cpp b/alib2data/test-src/alphabet/SymbolTest.cpp index abdec2a3cd47845efcb048ea1136a3b8300d3866..6624695729a294ccf88aa92da3511532ef3e9c42 100644 --- a/alib2data/test-src/alphabet/SymbolTest.cpp +++ b/alib2data/test-src/alphabet/SymbolTest.cpp @@ -7,6 +7,8 @@ #include "alphabet/Symbol.h" #include "alphabet/LabeledSymbol.h" #include "alphabet/BlankSymbol.h" +#include "alphabet/StartSymbol.h" +#include "alphabet/EndSymbol.h" #include "factory/XmlDataFactory.hpp" #include "factory/StringDataFactory.hpp" diff --git a/alib2data/test-src/automaton/AutomatonTest.cpp b/alib2data/test-src/automaton/AutomatonTest.cpp index 8779db68259dc36723605742aa6e96c4c88ef2d3..4b8383a0abf3e25e15bbd804805cd5621ac4f69e 100644 --- a/alib2data/test-src/automaton/AutomatonTest.cpp +++ b/alib2data/test-src/automaton/AutomatonTest.cpp @@ -15,6 +15,7 @@ #include "factory/StringDataFactory.hpp" #include "alphabet/LabeledSymbol.h" +#include "alphabet/BottomOfTheStackSymbol.h" #include "regexp/RegExp.h" #include "regexp/unbounded/UnboundedRegExp.h" diff --git a/alib2data/test-src/tree/PatternTest.cpp b/alib2data/test-src/tree/PatternTest.cpp index d943e0b11d6bb765e288186897c2ee1a90a5647b..4af5a2369212fa97460c8b7d8987b594d1d8f863 100644 --- a/alib2data/test-src/tree/PatternTest.cpp +++ b/alib2data/test-src/tree/PatternTest.cpp @@ -13,7 +13,8 @@ #include "alphabet/RankedSymbol.h" #include "alphabet/SubtreeWildcardSymbol.h" - +#include "alphabet/BarSymbol.h" +#include "alphabet/VariablesBarSymbol.h" #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y)) diff --git a/alib2data/test-src/tree/TreeTest.cpp b/alib2data/test-src/tree/TreeTest.cpp index f957fe0bf4f908b09f0de4ca875082604979e4e1..698479fcfd5c34b58a264479ed017ce71bab9dcd 100644 --- a/alib2data/test-src/tree/TreeTest.cpp +++ b/alib2data/test-src/tree/TreeTest.cpp @@ -14,7 +14,7 @@ #include "alphabet/RankedSymbol.h" #include "alphabet/SubtreeWildcardSymbol.h" - +#include "alphabet/BarSymbol.h" #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))