LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
posTransition.cpp
Go to the documentation of this file.
1// Copyright 2002-2020 CEA LIST
2// SPDX-FileCopyrightText: 2022 CEA LIST <gael.de-chalendar@cea.fr>
3//
4// SPDX-License-Identifier: MIT
5
6/*************************************************************************
7*
8* File : posTransition.cpp
9* Author : Romaric Besan�n (besanconr@zoe.cea.fr)
10* Created on : Mon Oct 14 2002
11* Copyright : (c) 2002 by CEA
12* Version : $Id$
13*
14*************************************************************************/
15
16
17#include "posTransition.h"
19#include <iostream>
20#include <sstream>
21
22using namespace std;
24
25namespace Lima {
26namespace LinguisticProcessing {
27namespace Automaton {
28
29/***********************************************************************/
30// constructors
31/***********************************************************************/
34 const Common::PropertyCode::PropertyAccessor* macroAccessor,
35 const Common::PropertyCode::PropertyAccessor* microAccessor,
36 bool keep):
37 TransitionUnit(keep),
38 m_pos(p),
39 m_macroAccessor(macroAccessor),
40 m_microAccessor(microAccessor) {
41}
44 m_pos(t.pos()),
45 m_macroAccessor(t.m_macroAccessor),
46 m_microAccessor(t.m_microAccessor) {
47// copyProperties(t);
48}
49
50/***********************************************************************/
51// destructor
52/***********************************************************************/
54
55/***********************************************************************/
56// copy
57/***********************************************************************/
59 if (this != &t) {
60 m_pos = t.pos();
61 m_macroAccessor = t.m_macroAccessor;
62 m_microAccessor = t.m_microAccessor;
64 }
65 return *this;
66}
67
68std::string PosTransition::printValue() const {
69 ostringstream oss;
70 oss << "posT_$" << m_pos.toString();
71 return oss.str();
72}
73
74
75/***********************************************************************/
76// comparison tests
77/***********************************************************************/
78bool PosTransition::operator== (const TransitionUnit& tright) const {
79 if ( (type() == tright.type())
80 &&(m_pos == static_cast<const PosTransition&>(tright).pos())
81 ) {
82 return compareProperties(tright);
83 }
84 else {
85 return false;
86 }
87}
88
89//**********************************************************************
92 const LinguisticGraphVertex& /*vertex*/,
93 AnalysisContent& analysis,
96{
97 auto metadata = std::dynamic_pointer_cast<LinguisticMetaData>(analysis.getData("LinguisticMetaData"));
98 if (metadata == nullptr) {
100 LERROR << "TransitionSearchStructure::findMatchingTransitions no LinguisticMetaData ! abort";
101 return false;
102 }
103 auto& propertyCodeManager = static_cast<const Common::MediaticData::LanguageData&>(Common::MediaticData::MediaticData::single().mediaData(metadata->getMetaData("Lang"))).getPropertyCodeManager();
104 auto& macroAccessor = propertyCodeManager.getPropertyAccessor("MACRO");
105 auto& microAccessor = propertyCodeManager.getPropertyAccessor("MICRO");
106
107 for (const auto& d: *data) {
108 if (compareTpos(m_pos,d.properties, macroAccessor, microAccessor)) {
109 return true;
110 }
111 }
112 return false;
113}
114
115// bool PosTransition::
116// comparePos(const LinguisticCode& pos) const
117// {
118// return compareTpos(m_pos,pos,
119// *m_macroAccessor,
120// *m_microAccessor);
121// }
122
123} // namespace end
124} // namespace end
125} // namespace end
#define LERROR
Definition LimaCommon.h:161
LinguisticGraph::vertex_descriptor LinguisticGraphVertex
#define AULOGINIT
Holds all data that pass through the ProcessUnits Analysis data are shared pointers,...
std::shared_ptr< AnalysisData > getData(const QString &id)
return AnalysisData by id
Holds linguistic data for one language.
const MediaData & mediaData(MediaId media) const
Provide function to read write and check a property.
std::string toString() const
Definition StdBitset.h:152
PosTransition & operator=(const PosTransition &)
bool compare(const LinguisticAnalysisStructure::AnalysisGraph &graph, const LinguisticGraphVertex &vertex, AnalysisContent &analysis, const LinguisticAnalysisStructure::Token *token, const LinguisticAnalysisStructure::MorphoSyntacticData *data) const override
comparison of the transition with a token : can use the graph and vertex info, associated with genera...
bool operator==(const TransitionUnit &) const override
bool compareProperties(const TransitionUnit &t) const
An AnalysisData containing a LinguisticGraph with a language and an id.
static const MediaticData & single()
const singleton accessor
Definition Singleton.h:51
bool compareTpos(const Tpos &pos, const LinguisticCode &lingProperty, const PropertyCode::PropertyAccessor &macroAccessor, const PropertyCode::PropertyAccessor &microAccessor)
NAUTITIA.
STL namespace.