LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
dotGraphWriter.h
Go to the documentation of this file.
1// Copyright 2002-2013 CEA LIST
2// SPDX-FileCopyrightText: 2022 CEA LIST <gael.de-chalendar@cea.fr>
3//
4// SPDX-License-Identifier: MIT
5
6#ifndef LIMA_MORPHOLOGICANALYSIS_DOTGRAPHWRITER_H
7#define LIMA_MORPHOLOGICANALYSIS_DOTGRAPHWRITER_H
8
9#include "PosTaggerExport.h"
11#include "ngramMatrices.h"
12
13namespace Lima
14{
15namespace LinguisticProcessing
16{
17
18#define DOTGRAPHWRITER_CLASSID "DotGraphWriter"
19
21{
22
23public:
25 virtual ~DotGraphWriter() = default;
26
27 void init(
29 Manager* manager) override;
30
31 LimaStatusCode process(AnalysisContent& analysis) const override;
32
33protected:
34
35 std::string m_outputSuffix;
36 MediaId m_language;
37 std::shared_ptr<Lima::LinguisticProcessing::PosTagger::TrigramMatrix> m_trigramMatrix;
38 std::shared_ptr<Lima::LinguisticProcessing::PosTagger::BigramMatrix> m_bigramMatrix;
39 std::deque<std::string> m_vertexDisplay;
40 std::string m_graphId;
41
42 std::map<std::string,std::string> m_graphDotOptions;
43 std::map<std::string,std::string> m_nodeDotOptions;
44 std::map<std::string,std::string> m_edgeDotOptions;
45
46};
47
49{
51 const std::map<std::string,std::string>& graphDotOptions,
52 const std::map<std::string,std::string>& nodeDotOptions,
53 const std::map<std::string,std::string>& edgeDotOptions):
54 m_graphDotOptions(graphDotOptions),
55 m_nodeDotOptions(nodeDotOptions),
56 m_edgeDotOptions(edgeDotOptions)
57 {
58 }
59
60 void operator()(std::ostream& out) const
61 {
62 out << "graph [";
63 std::map<std::string,std::string>::const_iterator git, git_end;
64 git = m_graphDotOptions.begin(); git_end = m_graphDotOptions.end();
65 if (git != git_end)
66 {
67 out << (*git).first << "=" << (*git).second;
68 git++;
69 }
70 for (; git != git_end; git++)
71 {
72 out << "," << (*git).first << "=" << (*git).second;
73 }
74 out << "]" << std::endl;
75
76 out << "node [";
77 std::map<std::string,std::string>::const_iterator nit, nit_end;
78 nit = m_nodeDotOptions.begin(); nit_end = m_nodeDotOptions.end();
79 if (nit != nit_end)
80 {
81 out << (*nit).first << "=" << (*nit).second;
82 nit++;
83 }
84 for (; nit != nit_end; nit++)
85 {
86 out << "," << (*nit).first << "=" << (*nit).second;
87 }
88 out << "]" << std::endl;
89
90 out << "edge [";
91 std::map<std::string,std::string>::const_iterator eit, eit_end;
92 eit = m_edgeDotOptions.begin(); eit_end = m_edgeDotOptions.end();
93 if (eit != eit_end)
94 {
95 out << (*eit).first << "=" << (*eit).second;
96 eit++;
97 }
98 for (; eit != eit_end; eit++)
99 {
100 out << "," << (*eit).first << "=" << (*eit).second;
101 }
102 out << "]" << std::endl;
103 }
104
105 private:
106 const std::map<std::string,std::string>& m_graphDotOptions;
107 const std::map<std::string,std::string>& m_nodeDotOptions;
108 const std::map<std::string,std::string>& m_edgeDotOptions;
109
110};
111
112} // LinguisticProcessing
113} // Lima
114
115#endif
#define LIMA_POSTAGGER_EXPORT
Holds all data that pass through the ProcessUnits Analysis data are shared pointers,...
Manage initialization of InitializableObjects using configuration module and parameters.
std::shared_ptr< Lima::LinguisticProcessing::PosTagger::TrigramMatrix > m_trigramMatrix
std::map< std::string, std::string > m_nodeDotOptions
std::shared_ptr< Lima::LinguisticProcessing::PosTagger::BigramMatrix > m_bigramMatrix
std::map< std::string, std::string > m_edgeDotOptions
std::map< std::string, std::string > m_graphDotOptions
void init(Common::XMLConfigurationFiles::GroupConfigurationStructure &unitConfiguration, Manager *manager) override
initialize with parameters from configuration file.
std::deque< std::string > m_vertexDisplay
NAUTITIA.
LimaStatusCode
Definition LimaCommon.h:236
Defines Bigrams and Trigrams matrices *.
LimaGraphGraphvizGraphWriter(const std::map< std::string, std::string > &graphDotOptions, const std::map< std::string, std::string > &nodeDotOptions, const std::map< std::string, std::string > &edgeDotOptions)