Skip to content
Snippets Groups Projects
Commit 387cc6a9 authored by Jan Uhlík's avatar Jan Uhlík Committed by Jan Trávníček
Browse files

Add Tikz convertor for SqaureGrid class.

parent 0699e18c
No related branches found
No related tags found
No related merge requests found
LIBRARY:=alib2aux
TESTBIN:=alib2test
 
LINK_LIBRARIES=alib2str alib2data alib2xml alib2common alib2abstraction alib2measure alib2std
LINK_LIBRARIES=alib2str alib2graph_data alib2data alib2xml alib2common alib2abstraction alib2measure alib2std
SYSTEM_LIBRARIES=xml2
SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
TEST_LINK_LIBRARIES=
......
......@@ -10,24 +10,70 @@
 
namespace convert {
 
auto TikZConverterEpsilonNFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::EpsilonNFA < > & > ( TikZConverter::convert );
auto TikZConverterMultiInitialStateNFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::MultiInitialStateNFA < > & > ( TikZConverter::convert );
auto TikZConverterNFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::NFA < > & > ( TikZConverter::convert );
auto TikZConverterDFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::DFA < > & > ( TikZConverter::convert );
auto TikZConverterExtendedNFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::ExtendedNFA < > & > ( TikZConverter::convert );
auto TikZConverterCompactNFA = registration::AbstractRegister < TikZConverter, std::string, const automaton::CompactNFA < > & > ( TikZConverter::convert );
auto TikZConverterNFTA = registration::AbstractRegister < TikZConverter, std::string, const automaton::NFTA < > & > ( TikZConverter::convert );
auto TikZConverterDFTA = registration::AbstractRegister < TikZConverter, std::string, const automaton::DFTA < > & > ( TikZConverter::convert );
auto TikZConverterDPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::DPDA < > & > ( TikZConverter::convert );
auto TikZConverterSinglePopDPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::SinglePopDPDA < > & > ( TikZConverter::convert );
auto TikZConverterInputDrivenDPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::InputDrivenDPDA < > & > ( TikZConverter::convert );
auto TikZConverterInputDrivenNPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::InputDrivenNPDA < > & > ( TikZConverter::convert );
auto TikZConverterVisiblyPushdownDPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::VisiblyPushdownDPDA < > & > ( TikZConverter::convert );
auto TikZConverterVisiblyPushdownNPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::VisiblyPushdownNPDA < > & > ( TikZConverter::convert );
auto TikZConverterRealTimeHeightDeterministicDPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::RealTimeHeightDeterministicDPDA < > & > ( TikZConverter::convert );
auto TikZConverterRealTimeHeightDeterministicNPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::RealTimeHeightDeterministicNPDA < > & > ( TikZConverter::convert );
auto TikZConverterNPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::NPDA < > & > ( TikZConverter::convert );
auto TikZConverterSinglePopNPDA = registration::AbstractRegister < TikZConverter, std::string, const automaton::SinglePopNPDA < > & > ( TikZConverter::convert );
auto TikZConverterOneTapeDTM = registration::AbstractRegister < TikZConverter, std::string, const automaton::OneTapeDTM < > & > ( TikZConverter::convert );
auto TikZConverterEpsilonNFA =
registration::AbstractRegister<TikZConverter, std::string, const automaton::EpsilonNFA<> &>(TikZConverter::convert);
auto TikZConverterMultiInitialStateNFA = registration::AbstractRegister<TikZConverter,
std::string,
const automaton::MultiInitialStateNFA<> &>(
TikZConverter::convert);
auto TikZConverterNFA =
registration::AbstractRegister<TikZConverter, std::string, const automaton::NFA<> &>(TikZConverter::convert);
auto TikZConverterDFA =
registration::AbstractRegister<TikZConverter, std::string, const automaton::DFA<> &>(TikZConverter::convert);
auto TikZConverterExtendedNFA = registration::AbstractRegister<TikZConverter,
std::string,
const automaton::ExtendedNFA<> &>(TikZConverter::convert);
auto TikZConverterCompactNFA =
registration::AbstractRegister<TikZConverter, std::string, const automaton::CompactNFA<> &>(TikZConverter::convert);
auto TikZConverterNFTA =
registration::AbstractRegister<TikZConverter, std::string, const automaton::NFTA<> &>(TikZConverter::convert);
auto TikZConverterDFTA =
registration::AbstractRegister<TikZConverter, std::string, const automaton::DFTA<> &>(TikZConverter::convert);
auto TikZConverterDPDA =
registration::AbstractRegister<TikZConverter, std::string, const automaton::DPDA<> &>(TikZConverter::convert);
auto TikZConverterSinglePopDPDA = registration::AbstractRegister<TikZConverter,
std::string,
const automaton::SinglePopDPDA<> &>(TikZConverter::convert);
auto TikZConverterInputDrivenDPDA = registration::AbstractRegister<TikZConverter,
std::string,
const automaton::InputDrivenDPDA<> &>(TikZConverter::convert);
auto TikZConverterInputDrivenNPDA = registration::AbstractRegister<TikZConverter,
std::string,
const automaton::InputDrivenNPDA<> &>(TikZConverter::convert);
auto TikZConverterVisiblyPushdownDPDA = registration::AbstractRegister<TikZConverter,
std::string,
const automaton::VisiblyPushdownDPDA<> &>(
TikZConverter::convert);
auto TikZConverterVisiblyPushdownNPDA = registration::AbstractRegister<TikZConverter,
std::string,
const automaton::VisiblyPushdownNPDA<> &>(
TikZConverter::convert);
auto TikZConverterRealTimeHeightDeterministicDPDA =
registration::AbstractRegister<TikZConverter, std::string, const automaton::RealTimeHeightDeterministicDPDA<> &>(
TikZConverter::convert);
auto TikZConverterRealTimeHeightDeterministicNPDA =
registration::AbstractRegister<TikZConverter, std::string, const automaton::RealTimeHeightDeterministicNPDA<> &>(
TikZConverter::convert);
auto TikZConverterNPDA =
registration::AbstractRegister<TikZConverter, std::string, const automaton::NPDA<> &>(TikZConverter::convert);
auto TikZConverterSinglePopNPDA = registration::AbstractRegister<TikZConverter,
std::string,
const automaton::SinglePopNPDA<> &>(TikZConverter::convert);
auto TikZConverterOneTapeDTM =
registration::AbstractRegister<TikZConverter, std::string, const automaton::OneTapeDTM<> &>(TikZConverter::convert);
auto TikZConverterSquareGrid4 = registration::AbstractRegister<TikZConverter,
std::string,
const grid::SquareGrid4<> &>(TikZConverter::convert);
auto TikZConverterSquareGrid8 = registration::AbstractRegister<TikZConverter,
std::string,
const grid::SquareGrid8<> &>(TikZConverter::convert);
auto TikZConverterWeightedSquareGrid4 = registration::AbstractRegister<TikZConverter,
std::string,
const grid::WeightedSquareGrid4<> &>(
TikZConverter::convert);
auto TikZConverterWeightedSquareGrid8 = registration::AbstractRegister<TikZConverter,
std::string,
const grid::WeightedSquareGrid8<> &>(
TikZConverter::convert);
 
} /* namespace convert */
......@@ -38,6 +38,7 @@
#include <automaton/PDA/DPDA.h>
#include <automaton/PDA/SinglePopDPDA.h>
#include <automaton/TM/OneTapeDTM.h>
#include <grid/GridClasses.hpp>
 
#include <factory/StringDataFactory.hpp>
 
......@@ -104,6 +105,10 @@ class TikZConverter {
 
template < class SymbolType, class StateType >
static void transitions(const automaton::OneTapeDTM < SymbolType, StateType > & tm, const ext::map < StateType, int > & states, std::ostream & out);
template<typename TGrid>
static void grid(std::ostream &out, const TGrid &a);
public:
template < class SymbolType, class StateType >
static void convert(std::ostream& out, const automaton::DFA < SymbolType, StateType > & a);
......@@ -162,6 +167,26 @@ public:
template < class SymbolType, class StateType >
static void convert(std::ostream& out, const automaton::OneTapeDTM < SymbolType, StateType > & a);
 
template<typename TCoordinate, typename TEdge>
static void convert(std::ostream &out, const grid::SquareGrid4<TCoordinate, TEdge> &a) {
return grid(out, a);
}
template<typename TCoordinate, typename TEdge>
static void convert(std::ostream &out, const grid::SquareGrid8<TCoordinate, TEdge> &a) {
return grid(out, a);
}
template<typename TCoordinate, typename TEdge>
static void convert(std::ostream &out, const grid::WeightedSquareGrid4<TCoordinate, TEdge> &a) {
return grid(out, a);
}
template<typename TCoordinate, typename TEdge>
static void convert(std::ostream &out, const grid::WeightedSquareGrid8<TCoordinate, TEdge> &a) {
return grid(out, a);
}
template < class T >
static std::string convert ( const T & automaton ) {
std::stringstream ss;
......@@ -2088,6 +2113,24 @@ void TikZConverter::transitions ( const automaton::OneTapeDTM < SymbolType, Stat
}
}
 
template<typename TGrid>
void TikZConverter::grid(std::ostream &out, const TGrid &a) {
out << "\\begin{tikzpicture}[ultra thin/.style= {line width=0.1pt}]\n";
long width = a.getWidth();
long height = a.getHeight();
out << "\t\\draw[step=1cm, gray,very thin] (0,0) grid (" << width << "," << height << ");\n";
for (const auto &node : a.getObstacleList()) {
out << "\t\\fill[draw=gray, fill=black, very thin] ("
<< node.second << "," << height - node.first - 1
<< ") rectangle ("
<< node.second + 1 << "," << height - node.first << ");\n";
}
out << "\\end{tikzpicture}\n";
}
} /* namespace convert */
 
#endif /* TIKZ_CONVERTER_H_ */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment