LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
transitionUnit.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/************************************************************************
7 *
8 * @file transitionUnit.h
9 * @author besancon (besanconr@zoe.cea.fr)
10 * @date Fri Oct 04 2002
11 * copyright Copyright (C) 2002 by CEA LIST
12 * Project Automaton
13 *
14 * @brief abstract base class for generic transitions
15 *
16 ***********************************************************************/
17
18#ifndef TRANSITIONUNIT_H
19#define TRANSITIONUNIT_H
20
21#include "AutomatonExport.h"
23#include "constraint.h"
26
27#include <vector>
28
29namespace Lima {
30namespace LinguisticProcessing {
31namespace Automaton {
32
33// the Transition class is a abstract base class : it is instantiated
34// as a transition of one of the following transition types
50
52{
53 public:
55 TransitionUnit(const bool keep, const bool negative=false);
56 TransitionUnit(const TransitionUnit& transition);
57 virtual ~TransitionUnit();
58 TransitionUnit& operator = (const TransitionUnit& transition);
59
60 virtual TransitionUnit* clone() const =0;
61 virtual TransitionUnit* create() const =0;
62
63 bool keep() const;
64 void setKeep(const bool);
65 bool negative() const;
66 void setNegative(const bool);
67 bool head() const;
68 bool isHead() const;
69 void setHead(const bool);
70 const std::string& getId() const;
71 void setId(const std::string& id);
72 const std::string& getActionHash() const;
73 void setActionHash(const std::string& actionHash);
74
75 const Constraint& constraint(const uint64_t) const;
76 uint64_t numberOfConstraints() const;
77 void addConstraint(const Constraint&);
78 void copyProperties(const TransitionUnit& t);
79 bool compareProperties(const TransitionUnit& t) const;
80 virtual std::string printValue() const { return ""; }
81 virtual TypeTransition type() const =0;
82
83 virtual bool operator== (const TransitionUnit&) const =0;
84
100 const LinguisticGraphVertex& vertex,
101 AnalysisContent& analysis,
104
105 // check constraints
106 bool checkConstraints(const LinguisticAnalysisStructure::AnalysisGraph& graph,
107 const LinguisticGraphVertex& vertex,
108 AnalysisContent& analysis,
109 ConstraintCheckList&) const;
110
111 void popConstraints(ConstraintCheckList&) const;
112
113 virtual bool isEpsilonTransition() const { return false; }
114
115 friend LIMA_AUTOMATON_EXPORT std::ostream& operator << (std::ostream& os, const TransitionUnit& t);
116 friend LIMA_AUTOMATON_EXPORT QDebug& operator << (QDebug& os, const TransitionUnit& t);
117
118 protected:
119 bool m_keep; // indicates if the transition must be kept
120 // in the recognized expression
121 bool m_negative; // indicates if the transition is negative
122 bool m_head;
123 std::string m_id; // id of transition = ruleElementId
124 // Hash of set of constraints of type action like (XXXEntityFeature). Usefull to differentiate
125 // transition during optimzation step automatonCompiler.
126 std::string m_actionHash;
127 std::vector<Constraint> m_constraints;
128};
129
130/***********************************************************************/
131// inline access functions
132/***********************************************************************/
133inline bool TransitionUnit::keep() const { return m_keep; }
134inline void TransitionUnit::setKeep(const bool keep) { m_keep = keep; }
135inline bool TransitionUnit::negative() const { return m_negative; }
136inline void TransitionUnit::setNegative(const bool negative) { m_negative = negative; }
137inline bool TransitionUnit::head() const { return m_head; }
138inline bool TransitionUnit::isHead() const { return m_head; }
139inline void TransitionUnit::setHead(const bool h) { m_head = h; }
140inline const std::string& TransitionUnit::getId() const { return m_id; }
141inline void TransitionUnit::setId(const std::string& id) { m_id = id; }
142inline const std::string& TransitionUnit::getActionHash() const { return m_actionHash;}
143inline void TransitionUnit::setActionHash(const std::string& actionHash) { m_actionHash = actionHash;}
144
145inline const Constraint& TransitionUnit::constraint(const uint64_t i) const {
146 return m_constraints[i];
147}
148inline uint64_t TransitionUnit::numberOfConstraints() const {
149 return m_constraints.size();
150}
152 m_constraints.push_back(c);
153}
154
155} // namespace end
156} // namespace end
157} // namespace end
158
159#endif
#define LIMA_AUTOMATON_EXPORT
QDebug & operator<<(QDebug &qd, const std::string &str)
Definition QsLog.cpp:39
LinguisticGraph::vertex_descriptor LinguisticGraphVertex
Holds all data that pass through the ProcessUnits Analysis data are shared pointers,...
virtual bool compare(const LinguisticAnalysisStructure::AnalysisGraph &graph, const LinguisticGraphVertex &vertex, AnalysisContent &analysis, const LinguisticAnalysisStructure::Token *token, const LinguisticAnalysisStructure::MorphoSyntacticData *data) const =0
comparison of the transition with a token : can use the graph and vertex info, associated with genera...
virtual TransitionUnit * create() const =0
const Constraint & constraint(const uint64_t) const
void setActionHash(const std::string &actionHash)
virtual TransitionUnit * clone() const =0
An AnalysisData containing a LinguisticGraph with a language and an id.
std::vector< ConstraintCheckListElement > ConstraintCheckList
NAUTITIA.