9namespace LinguisticProcessing {
10namespace EventAnalysis {
17m_posBegin(
std::numeric_limits<uint64_t>::max()),
37 unsigned int cardinality)
39 if (m_template.count(role)>=cardinality) {
45 LDEBUG <<
"EventTemplate::addElement: too many values for role" << role <<
": ignore new value '"<< elt <<
"'";
48 m_template.emplace(role,elt);
51 if (posEnd > m_posEnd) {
54 if (posBegin < m_posBegin) {
65 LDEBUG <<
"EventTemplate::setTemplateElements: set"<<m_template.size()<<
"new elements";
67 for (
const auto& elt: m_template) {
68 uint64_t posBegin=elt.second.getPositionBegin();
69 uint64_t posEnd=elt.second.getPositionEnd();
70 if (posEnd > m_posEnd) {
73 if (posBegin < m_posBegin) {
77 LDEBUG <<
"EventTemplate::setTemplateElements: new position is ["<<m_posBegin<<
","<<m_posEnd<<
"]";
85 m_posBegin=std::numeric_limits<uint64_t>::max();
92 std::map<std::string,EventTemplateElement>::const_iterator
93 it=m_template.find(role);
94 if (it==m_template.end()) {
96 LERROR <<
"No element '" << role <<
"' in EventTemplate";
104 os << e.m_type <<
"/[" << e.m_posBegin <<
"-" << e.m_posEnd <<
"]";
105 for (
const auto& elt: e.m_template) {
106 os <<
"/" << elt.first <<
":" << elt.second;
112 std::ostringstream oss;
#define EVENTANALYSISLOGINIT
uint64_t getPositionEnd() const
uint64_t getPositionBegin() const
const EventTemplateElement & getElement(const std::string &role) const
void setTemplateElements(const TemplateElements &elts)
void addElement(const std::string &role, const EventTemplateElement &elt, unsigned int cardinality)
std::multimap< std::string, EventTemplateElement > TemplateElements
std::ostream & operator<<(std::ostream &os, const Entity &annot)