MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
ot_parametres.cpp
Aller à la documentation de ce fichier.
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 
40 {
41 }
42 
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 
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 
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 }
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 
308 {
309  return type_param[num];
310 }
312 {
313  return nom_param.size();
314 }
315 
316 
318 {
319  nom_param.clear();
320  valeur_param.clear();
321  aide_param.clear();
322  type_param.clear();
323  params.clear();
324 }
325 
OT_PARAMETRES::~OT_PARAMETRES
~OT_PARAMETRES()
Definition: ot_parametres.cpp:56
OT_PARAMETRES::get_valeur
double get_valeur(std::string chaine, int num=0)
Definition: ot_parametres.cpp:191
OT_PARAMETRES::type_param
std::vector< int > type_param
Definition: ot_parametres.h:62
OT_PARAMETRES::STRING
@ STRING
Definition: ot_parametres.h:38
OT_CHAINE::split
std::vector< std::string > split(std::string chaine, char c)
Definition: ot_chaine.cpp:187
OT_PARAMETRES::ajouter
void ajouter(std::string chaine, double valeur, int typep, std::string aide="")
Definition: ot_parametres.cpp:61
OT_PARAMETRES::params
std::vector< std::string > params
Definition: ot_parametres.h:61
OT_PARAMETRES::OT_PARAMETRES
OT_PARAMETRES()
Definition: ot_parametres.cpp:39
OT_PARAMETRES::valeur_param
std::vector< std::string > valeur_param
Definition: ot_parametres.h:59
OT_CHAINE
Definition: ot_chaine.h:29
OT_PARAMETRES::nom_param
std::vector< std::string > nom_param
Definition: ot_parametres.h:58
OT_PARAMETRES::get_nom
std::string get_nom(std::string chaine)
Definition: ot_parametres.cpp:266
OT_PARAMETRES::DOUBLE
@ DOUBLE
Definition: ot_parametres.h:38
ot_parametres.h
OT_PARAMETRES::get_type
int get_type(std::string chaine)
Definition: ot_parametres.cpp:281
OT_PARAMETRES
Definition: ot_parametres.h:31
OT_PARAMETRES::enregistrer
void enregistrer(char *nom)
Definition: ot_parametres.cpp:132
OT_PARAMETRES::get_nb
int get_nb(void)
Definition: ot_parametres.cpp:311
OT_PARAMETRES::aide_param
std::vector< std::string > aide_param
Definition: ot_parametres.h:60
OT_PARAMETRES::get_num_param
int get_num_param(std::string chaine)
Definition: ot_parametres.cpp:250
OT_PARAMETRES::vide
void vide(void)
Definition: ot_parametres.cpp:317
OT_PARAMETRES::lire
int lire(char *nom)
Definition: ot_parametres.cpp:144
res
#define res(i, j)
ot_chaine.h
OT_PARAMETRES::change_valeur
void change_valeur(std::string chaine, double val, int num=0)
Definition: ot_parametres.cpp:210