LIMA
Libre Multilingual Analyzer — C++ API
Loading...
Searching...
No Matches
moduleConfigurationStructure.cpp
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
16#include "common/LimaCommon.h"
19
20#include <iostream>
21
22using namespace std;
23
24namespace Lima
25{
26namespace Common
27{
28namespace XMLConfigurationFiles
29{
30
42
43ModuleConfigurationStructurePrivate::ModuleConfigurationStructurePrivate(const std::string& name) :
44 m_name(name)
45{}
46
47ModuleConfigurationStructurePrivate::ModuleConfigurationStructurePrivate(const ModuleConfigurationStructurePrivate& mod) :
48 m_name(mod.m_name)
49{}
50
51ModuleConfigurationStructurePrivate& ModuleConfigurationStructurePrivate::operator=(const ModuleConfigurationStructurePrivate& mod)
52{
53 m_name = mod.m_name;
54 return *this;
55}
56
57ModuleConfigurationStructurePrivate::~ModuleConfigurationStructurePrivate()
58{
59}
60
65
70
72 std::map< std::string, GroupConfigurationStructure >(),
73 m_d(new ModuleConfigurationStructurePrivate(name.toStdString()))
74{}
75
77 std::map< std::string, GroupConfigurationStructure >(mod),
79{
80#ifdef DEBUG_CD
82 LDEBUG << "ModuleConfigurationStructure::ModuleConfigurationStructure" << this << m_d->m_name;
83#endif
84
85}
86
88{
89 clear();
90 for (auto it = mod.cbegin(); it != mod.cend(); it++)
91 {
92 insert(std::make_pair((*it).first, (*it).second));
93 }
94 *m_d = *mod.m_d;
95#ifdef DEBUG_CD
97 LDEBUG << "ModuleConfigurationStructure::operator=" << this << m_d->m_name;
98#endif
99 return *this;
100}
101
106
108{
109 return m_d->m_name;
110}
111
113{
114 ModuleConfigurationStructure::iterator it = find(name);
115 if (it == end())
116 {
118 LWARN << "Error ("<<this<<"): no such group '" << name.c_str() << "' !";
119 throw NoSuchGroup(m_d->m_name+"["+name+"]");
120 }
121 return ((*it).second);
122}
123
124string& ModuleConfigurationStructure::getParamValueAtKeyOfGroupNamed(const std::string& key, const std::string& groupName)
125{
126 try
127 {
128 return (getGroupNamed(groupName).getParamsValueAtKey(key));
129 }
130 catch (NoSuchGroup& nsg)
131 {
133 LWARN << "Getting param '"<<key.c_str()<<"' value for group '"<<groupName.c_str()<<"': "<< nsg.what();
134 throw NoSuchGroup(m_d->m_name+"["+groupName+"]["+key+"]");
135 }
136 catch (NoSuchParam& nsp)
137 {
139 LWARN << "Getting param '"<<key.c_str()<<"' value for group '"<<groupName.c_str()<<"': " << nsp.what();
140 throw NoSuchParam(m_d->m_name+"["+groupName+"]["+key+"]");
141 }
142 catch (...)
143 {
144 throw;
145 }
146}
147
148deque< string >& ModuleConfigurationStructure::getListValuesAtKeyOfGroupNamed(const std::string& key, const std::string& groupName)
149{
150 return (getGroupNamed(groupName).getListsValueAtKey(key));
151}
152
153
154map< string , string >& ModuleConfigurationStructure::getMapAtKeyOfGroupNamed(const std::string& key, const std::string& groupName)
155{
156 return (getGroupNamed(groupName).getMapAtKey(key));
157}
158
159
161 const std::string& value, const std::string& groupName)
162{
163 getGroupNamed(groupName).addParamValuePair(param, value);
164}
165
166
168 const std::string& groupName)
169{
170 getGroupNamed(groupName).addListNamed(listName);
171}
172
174 const std::string& listName, const std::string& groupName)
175{
176 getGroupNamed(groupName).addItemInListNamed(item, listName);
177}
178
180{
181#ifdef DEBUG_CD
183 LDEBUG << "ModuleConfigurationStructure::addGroupNamed" << this << groupName;
184#endif
185 if (find(groupName) == end())
186 {
187 insert(make_pair(groupName, GroupConfigurationStructure(groupName)));
188 }
189 else {
191 LWARN << "group " << groupName.c_str() << " not added: already exists";
192 }
193}
194
196 const std::string& mapName,const std::string& groupName)
197{
198 getGroupNamed(groupName).addMap(mapName);
199}
200
202 const std::string& entryKey,const std::string& entryValue,const std::string& mapName,const std::string& groupName)
203{
204 getGroupNamed(groupName).addEntryInMap(mapName,entryKey,entryValue);
205}
206
208 const std::string& attKey,const std::string& attValue,const std::string& groupName)
209{
210 getGroupNamed(groupName).addAttribute(attKey,attValue);
211}
212
214{
215 for (auto it = mod.cbegin(), it_end = mod.cend(); it!=it_end; it++)
216 {
217 if (find((*it).first) == end())
218 {
219 insert(*it);
220 }
221 else
222 {
224 LWARN << "group " << (*it).first.c_str() << " not added: already exists";
225 }
226 }
227}
228
229
230std::ostream& operator<<(std::ostream &os, const ModuleConfigurationStructure& dmcs)
231{
232 for (ModuleConfigurationStructure::const_iterator it = dmcs.begin(); it != dmcs.end(); it++)
233 {
234 os << " " << (*it).first << endl;
235 os << ((*it).second);
236 }
237 return os;
238}
239
240
242{
243 addGroupNamed(group.toStdString());
244}
245
246void ModuleConfigurationStructure::addParamValuePairForGroup(const QString& param, const QString& value, const QString& group)
247{
248 addParamValuePairForGroup(param.toStdString(), value.toStdString(), group.toStdString());
249}
250
251void ModuleConfigurationStructure::addListNamedForGroup(const QString& listName, const QString& group)
252{
253 addListNamedForGroup(listName.toStdString(), group.toStdString());
254}
255
256void ModuleConfigurationStructure::addItemInListNamedForGroup(const QString& item, const QString& listName, const QString& group)
257{
258 addItemInListNamedForGroup(item.toStdString(), listName.toStdString(), group.toStdString());
259}
260
261void ModuleConfigurationStructure::addMapInGroup(const QString& mapName,const QString& groupName)
262{
263 addMapInGroup(mapName.toStdString(), groupName.toStdString());
264}
265
266void ModuleConfigurationStructure::addEntryInMapInGroup(const QString& entryKey, const QString& entryValue,
267 const QString& mapName, const QString& groupName)
268{
269 addEntryInMapInGroup(entryKey.toStdString(), entryValue.toStdString(),
270 mapName.toStdString(), groupName.toStdString());
271}
272
273void ModuleConfigurationStructure::addAttributeInGroup(const QString& attKey, const QString& attValue,
274 const QString& groupName)
275{
276 addAttributeInGroup(attKey.toStdString(), attValue.toStdString(), groupName.toStdString());
277}
278
279} // closing namespace XMLConfigurationFiles
280} // closing namespace Common
281} // closing namespace Lima
#define XMLCFGLOGINIT
Definition LimaCommon.h:217
#define LWARN
Definition LimaCommon.h:160
#define LDEBUG
Definition LimaCommon.h:157
void addEntryInMap(const std::string &mapName, const std::string &key, const std::string &value)
void addAttribute(const std::string &key, const std::string &value)
void addParamValuePair(const std::string &key, const std::string &value)
void addItemInListNamed(const std::string &item, const std::string &listName)
std::string & getParamValueAtKeyOfGroupNamed(const std::string &key, const std::string &name)
std::map< std::string, std::string > & getMapAtKeyOfGroupNamed(const std::string &key, const std::string &groupName)
void addItemInListNamedForGroup(const std::string &item, const std::string &listName, const std::string &group)
std::deque< std::string > & getListValuesAtKeyOfGroupNamed(const std::string &key, const std::string &name)
void addEntryInMapInGroup(const std::string &entryKey, const std::string &entryValue, const std::string &mapName, const std::string &groupName)
void addParamValuePairForGroup(const std::string &param, const std::string &value, const std::string &group)
void addListNamedForGroup(const std::string &listName, const std::string &group)
GroupConfigurationStructure & getGroupNamed(const std::string &name)
void addMapInGroup(const std::string &mapName, const std::string &groupName)
void addAttributeInGroup(const std::string &attKey, const std::string &attValue, const std::string &groupName)
ModuleConfigurationStructure & operator=(const ModuleConfigurationStructure &mod)
return a message when a 'group' was not found
return a message when a 'param' was not found
virtual const char * what() const override
Definition LimaCommon.h:280
originally detectModuleConfigurationStructure.h in detectlibraries
std::ostream & operator<<(std::ostream &os, const ConfigurationStructure &conf)
NAUTITIA.
STL namespace.
launch exception related to the configuration file parsing