LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
genericDocumentProperties.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 documentProperties.h
9 * @author Besancon Romaric (besanconr@zoe.cea.fr)
10 * @date Fri Oct 10 2003
11 * @version $Id$
12 * copyright Copyright (C) 2003-2012 by CEA LIST
13 * Project BagOfWords
14 *
15 * @brief representation of generic properties of a document
16 *
17 *
18 ***********************************************************************/
19
20#ifndef GENERICDOCUMENTPROPERTIES_H
21#define GENERICDOCUMENTPROPERTIES_H
22
23#include "common/LimaCommon.h"
24
25#include <QtCore/QDate>
26
27#include <iostream>
28#include <string>
29#include <vector>
30#include <map>
31
32namespace Lima {
33namespace Common {
34namespace Misc {
35
39template<typename ValT>
41public:
42 MultiValuedPropertyIterator(const typename std::map<std::string, std::vector<ValT> >::const_iterator pos);
46 bool operator != (const MultiValuedPropertyIterator& orig ) const;
47 bool operator == (const MultiValuedPropertyIterator& orig ) const;
48 const std::string& operator *() const;
49private:
50 typename std::map<std::string,std::vector<ValT> >::const_iterator m_pos;
51};
52
53typedef std::vector<std::string>::const_iterator StringPropMultIter;
54typedef std::vector<std::pair<std::string,float> >::const_iterator WeightedPropMultIter;
55
58{
60 public:
65
66 virtual void reinit();
67
68 virtual void read(std::istream& file);
69 void write(std::ostream& file) const;
70
71 friend LIMA_DATA_EXPORT std::ostream& operator << (std::ostream&, const GenericDocumentProperties&);
72 friend LIMA_DATA_EXPORT QTextStream& operator << (QTextStream&, const GenericDocumentProperties&);
73 friend LIMA_DATA_EXPORT QDebug& operator << (QDebug&, const GenericDocumentProperties&);
74
75 virtual void print(std::ostream&) const;
76 virtual void print(QTextStream&) const;
77 virtual void print(QDebug&) const;
78 virtual bool is_empty() const;
79
89 std::pair<uint64_t, bool> getIntValue(std::string propName) const;
90 std::pair<std::string, bool> getStringValue(std::string propName) const;
91 std::pair<QDate, bool> getDateValue(std::string propName) const;
92 std::pair<std::pair<QDate,QDate>, bool> getDateIntervalValue(std::string propName) const;
93
101 std::pair< StringPropMultIter, StringPropMultIter > getMultipleStringPropValue(std::string propName) const;
102 std::pair< WeightedPropMultIter, WeightedPropMultIter > getMultipleWeightedPropValue(std::string propName) const;
103
110 typedef std::map<std::string,uint64_t>::const_iterator IntPropertiesIterator;
111 std::pair<IntPropertiesIterator,IntPropertiesIterator> getIntProperties() const;
112
113 typedef std::map<std::string,std::string>::const_iterator StringPropertiesIterator;
114 std::pair<StringPropertiesIterator,StringPropertiesIterator> getStringProperties() const;
115
116 typedef std::map<std::string,QDate>::const_iterator DatePropertiesIterator;
117 std::pair<DatePropertiesIterator,DatePropertiesIterator> getDateProperties() const;
118
119 typedef std::map<std::string,std::pair<QDate,QDate> >::const_iterator DateIntervalPropertiesIterator;
120 std::pair<DateIntervalPropertiesIterator,DateIntervalPropertiesIterator> getDateIntervalProperties() const;
121
127 std::pair<MultiValuedPropertyIterator<std::string>,MultiValuedPropertyIterator<std::string> > getStringPropertyNames() const;
128 std::pair<MultiValuedPropertyIterator<std::pair<std::string,float> >,MultiValuedPropertyIterator<std::pair<std::string,float> > > getWeightedPropPropertyNames() const;
129 void setIntValue(const std::string& propName, const uint64_t& val);
130 void setStringValue(const std::string& propName, const std::string& val);
131 void setDateValue(const std::string& propName, const QDate& val);
132 void setDateIntervalValue(const std::string& propName, const std::pair<QDate,QDate>& val);
133 void setMultipleStringPropValue(const std::string& propName, const std::vector<std::string>& val);
134 void setMultipleWeightedPropValue(const std::string& propName, const std::vector<std::pair<std::string,float> >& val);
135
136 void addStringValue(const std::string& propName, const std::string& str);
137 void addWeightedPropValue(const std::string& propName, const std::pair<std::string,float>& str);
138
139 protected:
141};
142
143//***********************************************************************
144// iterator for multi-valued properties
145//***********************************************************************
146template<typename ValT>
147// Constructor
149 const typename std::map<std::string,std::vector<ValT> >::const_iterator pos)
150 : m_pos(pos) {
151}
152
153template<typename ValT>
158
159template<typename ValT>
165
166template<typename ValT>
171
172template<typename ValT>
174 return( m_pos != orig.m_pos );
175}
176
177template<typename ValT>
179 return( m_pos == orig.m_pos );
180}
181
182template<typename ValT>
184 return( (*m_pos).first );
185}
186
187
188} // end namespace Misc
189} // end namespace Common
190} // end namespace Lima
191
192#endif
QDebug & operator<<(QDebug &qd, const std::string &str)
Definition QsLog.cpp:39
#define LIMA_DATA_EXPORT
Definition LimaCommon.h:128
std::map< std::string, std::string >::const_iterator StringPropertiesIterator
std::map< std::string, std::pair< QDate, QDate > >::const_iterator DateIntervalPropertiesIterator
std::map< std::string, QDate >::const_iterator DatePropertiesIterator
std::map< std::string, uint64_t >::const_iterator IntPropertiesIterator
Read access functions for all "only once valued" properties return an iterator Types may be any of (u...
bool operator!=(const MultiValuedPropertyIterator &orig) const
MultiValuedPropertyIterator & operator=(const MultiValuedPropertyIterator &orig)
bool operator==(const MultiValuedPropertyIterator &orig) const
MultiValuedPropertyIterator(const typename std::map< std::string, std::vector< ValT > >::const_iterator pos)
std::vector< std::string >::const_iterator StringPropMultIter
std::vector< std::pair< std::string, float > >::const_iterator WeightedPropMultIter
NAUTITIA.