ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/addin/outil/src/ot_parametres.cpp
Revision: 1156
Committed: Thu Jun 13 22:02:48 2024 UTC (14 months, 2 weeks ago) by francois
File size: 7927 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

# Content
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// ot_parametres.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:54:00 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include <stdio.h>
23 #include <string.h>
24 #include <iostream>
25 #include "ot_parametres.h"
26 #include "ot_chaine.h"
27
28
29
30
31
32
33
34
35
36
37
38
39 OT_PARAMETRES::OT_PARAMETRES()
40 {
41 }
42
43 OT_PARAMETRES::OT_PARAMETRES(OT_PARAMETRES &mdd)
44 {
45 int taille=nom_param.size();
46 for (int i=0;i<taille;i++)
47 {
48 nom_param.insert(nom_param.end(),mdd.nom_param[i]);
49 valeur_param.insert(valeur_param.end(),mdd.valeur_param[i]);
50 aide_param.insert(aide_param.end(),mdd.aide_param[i]);
51 type_param.insert(type_param.end(),mdd.type_param[i]);
52 }
53 }
54
55
56 OT_PARAMETRES::~OT_PARAMETRES()
57 {
58 }
59
60
61 void OT_PARAMETRES::ajouter(std::string chaine,double valeur,int typep,std::string aide)
62 {
63 int res=get_num_param(chaine);
64 if (res==-1)
65 {
66 nom_param.insert(nom_param.end(),chaine);
67 char mess[255];
68 sprintf(mess,"%lf",valeur);
69 valeur_param.insert(valeur_param.end(),mess);
70 aide_param.insert(aide_param.end(),aide);
71 type_param.insert(type_param.end(),typep);
72 }
73 else
74 {
75 char mess[255];
76 sprintf(mess,"%lf",valeur);
77 valeur_param[res]=mess;
78 if (aide.length()>aide_param[res].length()) aide_param[res]=aide;
79 }
80 }
81
82 void OT_PARAMETRES::ajouter(std::string chaine,std::vector<double> &valeur,int typep,std::string aide)
83 {
84 int res=get_num_param(chaine);
85 if (res==-1)
86 {
87 nom_param.insert(nom_param.end(),chaine);
88 std::string chainetmp="";
89 for (int i=0;i<valeur.size();i++)
90 {
91 char mess[255];
92 sprintf(mess,"%lf",valeur[i]);
93 chainetmp=chainetmp+mess;
94 if (i!=valeur.size()-1) chainetmp=chainetmp+";" ;
95 }
96 valeur_param.insert(valeur_param.end(),chainetmp);
97 aide_param.insert(aide_param.end(),aide);
98 type_param.insert(type_param.end(),typep);
99 }
100 else
101 {
102 std::string chainetmp="";
103 for (int i=0;i<valeur.size();i++)
104 {
105 char mess[255];
106 sprintf(mess,"%lf",valeur[i]);
107 chainetmp=chainetmp+mess;
108 if (i!=valeur.size()-1) chainetmp=chainetmp+";" ;
109 }
110 valeur_param[res]=chainetmp;
111 if (aide.length()>aide_param[res].length()) aide_param[res]=aide;
112 }
113 }
114 void OT_PARAMETRES::ajouter(std::string chaine,std::string valeurstring,int typep,std::string aide)
115 {
116 int res=get_num_param(chaine);
117 if (res==-1)
118 {
119 nom_param.insert(nom_param.end(),chaine);
120 valeur_param.insert(valeur_param.end(),valeurstring);
121 aide_param.insert(aide_param.end(),aide);
122 type_param.insert(type_param.end(),typep);
123 }
124 else
125 {
126 valeur_param[res]=valeurstring;
127 if (aide.length()>aide_param[res].length()) aide_param[res]=aide;
128 }
129
130 }
131
132 void OT_PARAMETRES::enregistrer(char *nom)
133 {
134 FILE* in=fopen(nom,"wt");
135 int taille=nom_param.size();
136 for (int i=0;i<taille;i++)
137 fprintf(in,"%s = %s //%s\n",nom_param[i].c_str(),valeur_param[i].c_str(),aide_param[i].c_str());
138 taille=params.size();
139 for (int i=0;i<taille;i++)
140 fprintf(in,"-> %s\n",params[i].c_str());
141 fclose(in);
142 }
143
144 int OT_PARAMETRES::lire(char *nom)
145 {
146 FILE* in=fopen(nom,"rt");
147 if (in==NULL)
148 {
149 std::cerr << "*** OT_PARAMETRES::lire : Erreur de lecture du fichier (" << nom <<") ***" << std::endl;
150 return 0;
151 }
152 while (!feof(in))
153 {
154 char chaine[4000];
155 char* res=fgets(chaine,4000,in);
156 if (!feof(in))
157 {
158 char nom[255],c;
159 char nom2[255];
160 nom2[0]=0;
161 int nb=sscanf(chaine,"%s %s",nom,nom2);
162 if (nb==2)
163 if (strcmp(nom,"->")==0)
164 {
165 lire(nom2);
166 ajouter(nom2);
167 continue;
168 }
169 nb=sscanf(chaine,"%s %c %s",nom,&c,nom2);
170 if (nb!=3) continue;
171 double val;
172 char *aide=strstr(chaine,"//");
173 if (aide==NULL) aide=chaine+strlen(chaine)-1; else aide=aide+2;
174 for (int i=0;i<strlen(aide);i++)
175 if (aide[i]=='\n') aide[i]=0;
176 int num=sscanf(nom2,"%lf",&val);
177 if (num==1) ajouter(nom,nom2,DOUBLE,aide);
178 else ajouter(nom,nom2,STRING,aide);
179 }
180 }
181 fclose(in);
182 return 1; // return OK;
183 }
184
185 void OT_PARAMETRES::ajouter(std::string chaine)
186 {
187 params.push_back(chaine);
188 }
189
190
191 double OT_PARAMETRES::get_valeur(std::string chaine,int num)
192 {
193 int taille=nom_param.size();
194 for (int i=0;i<taille;i++)
195 {
196 std::string valtmp=nom_param[i];
197 if (valtmp==chaine)
198 {
199 OT_CHAINE opc;
200 std::vector<std::string> tab=opc.split(valeur_param[i],';');
201 double val;
202 sscanf(tab[num].c_str(),"%lf",&val);
203 return val;
204 }
205
206 }
207 return 0.;
208 }
209
210 void OT_PARAMETRES::change_valeur(std::string chaine,double val,int num)
211 {
212 int taille=nom_param.size();
213 for (int i=0;i<taille;i++)
214 {
215 std::string valtmp=nom_param[i];
216 if (valtmp==chaine)
217 {
218 OT_CHAINE opc;
219 std::vector<std::string> tab=opc.split(valeur_param[i],';');
220 char mess[255];
221 sprintf(mess,"%lf",val);
222 tab[num]=mess;
223 valeur_param[i]="";
224 for (int j=0;j<tab.size();j++)
225 {
226 valeur_param[i]=valeur_param[i]+tab[j];
227 if (i!=tab.size()-1)
228 valeur_param[i]=valeur_param[i]+";";
229
230 }
231 }
232
233 }
234 }
235
236 void OT_PARAMETRES::change_valeur(std::string chaine,std::string val)
237 {
238 int taille=nom_param.size();
239 for (int i=0;i<taille;i++)
240 {
241 std::string valtmp=nom_param[i];
242 if (valtmp==chaine)
243 {
244 valeur_param[i]=val;
245 }
246
247 }
248 }
249
250 int OT_PARAMETRES::get_num_param(std::string chaine)
251 {
252 int taille=nom_param.size();
253 for (int i=0;i<taille;i++)
254 {
255 std::string valtmp=nom_param[i];
256 if (valtmp==chaine)
257 {
258 return i;
259 }
260
261 }
262 return -1;
263 }
264
265
266 std::string OT_PARAMETRES::get_nom(std::string chaine)
267 {
268 int taille=nom_param.size();
269 for (int i=0;i<taille;i++)
270 {
271 std::string valtmp=nom_param[i];
272 if (valtmp==chaine)
273 {
274 return valeur_param[i];
275 }
276
277 }
278 return "";
279 }
280
281 int OT_PARAMETRES::get_type(std::string chaine)
282 {
283 int taille=nom_param.size();
284 for (int i=0;i<taille;i++)
285 {
286 std::string valtmp=nom_param[i];
287 if (valtmp==chaine)
288 {
289 return type_param[i];
290 }
291
292 }
293 return 0;
294 }
295 double OT_PARAMETRES::get_valeur(int num)
296 {
297 double val;
298 sscanf(valeur_param[num].c_str(),"%lf",&val);
299 return val;
300 }
301
302 std::string OT_PARAMETRES::get_nom(int num)
303 {
304 return nom_param[num];
305 }
306
307 int OT_PARAMETRES::get_type(int num)
308 {
309 return type_param[num];
310 }
311 int OT_PARAMETRES::get_nb(void)
312 {
313 return nom_param.size();
314 }
315
316
317 void OT_PARAMETRES::vide(void)
318 {
319 nom_param.clear();
320 valeur_param.clear();
321 aide_param.clear();
322 type_param.clear();
323 params.clear();
324 }
325