ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/outil/src/ot_parametres.cpp
Revision: 681
Committed: Wed Jun 10 15:52:55 2015 UTC (9 years, 11 months ago) by francois
File size: 4642 byte(s)
Log Message:
Affichage du numero des iterations de la SIMP_adaptative lors du déroulement de celle-ci
bug de relecture du fichier de parametre

File Contents

# User Rev Content
1 francois 258 #include "gestionversion.h"
2 francois 265 #include <stdio.h>
3 francois 258 #include "ot_parametres.h"
4    
5    
6    
7    
8    
9    
10    
11    
12    
13    
14    
15    
16    
17    
18     OT_PARAMETRES::OT_PARAMETRES()
19     {
20     }
21    
22     OT_PARAMETRES::OT_PARAMETRES(OT_PARAMETRES &mdd)
23     {
24 francois 283 int taille=nom_param.size();
25     for (int i=0;i<taille;i++)
26     {
27     nom_param.insert(nom_param.end(),mdd.nom_param[i]);
28     valeur_param.insert(valeur_param.end(),mdd.valeur_param[i]);
29 francois 396 aide_param.insert(aide_param.end(),mdd.aide_param[i]);
30     type_param.insert(type_param.end(),mdd.type_param[i]);
31 francois 283 }
32 francois 258 }
33    
34    
35     OT_PARAMETRES::~OT_PARAMETRES()
36     {
37     }
38    
39    
40 francois 396 void OT_PARAMETRES::ajouter(std::string chaine,double valeur,int typep,std::string aide)
41 francois 258 {
42 francois 603 int res=get_num_param(chaine);
43     if (res==-1)
44     {
45     nom_param.insert(nom_param.end(),chaine);
46     char mess[255];
47     sprintf(mess,"%lf",valeur);
48     valeur_param.insert(valeur_param.end(),mess);
49     aide_param.insert(aide_param.end(),aide);
50     type_param.insert(type_param.end(),typep);
51     }
52     else
53     {
54     char mess[255];
55     sprintf(mess,"%lf",valeur);
56     valeur_param[res]=mess;
57     if (aide.length()>aide_param[res].length()) aide_param[res]=aide;
58     }
59 francois 258 }
60    
61 francois 396 void OT_PARAMETRES::ajouter(std::string chaine,std::string valeurstring,int typep,std::string aide)
62 francois 258 {
63 francois 603 int res=get_num_param(chaine);
64     if (res==-1)
65     {
66     nom_param.insert(nom_param.end(),chaine);
67     valeur_param.insert(valeur_param.end(),valeurstring);
68     aide_param.insert(aide_param.end(),aide);
69     type_param.insert(type_param.end(),typep);
70     }
71     else
72     {
73     valeur_param[res]=valeurstring;
74     if (aide.length()>aide_param[res].length()) aide_param[res]=aide;
75     }
76    
77 francois 258 }
78    
79     void OT_PARAMETRES::enregistrer(char *nom)
80     {
81 francois 283 FILE* in=fopen(nom,"wt");
82     int taille=nom_param.size();
83     for (int i=0;i<taille;i++)
84     fprintf(in,"%s = %s //%s\n",nom_param[i].c_str(),valeur_param[i].c_str(),aide_param[i].c_str());
85     fclose(in);
86 francois 258 }
87    
88     void OT_PARAMETRES::lire(char *nom)
89     {
90 francois 283 FILE* in=fopen(nom,"rt");
91 francois 632 if (in==NULL) return;
92 francois 283 while (!feof(in))
93     {
94     char chaine[4000];
95     char* res=fgets(chaine,4000,in);
96     if (!feof(in))
97     {
98     char nom[255],c;
99     char nom2[255];
100     nom2[0]=0;
101     int nb=sscanf(chaine,"%s %c %s",nom,&c,nom2);
102 francois 681 if (nb!=3) continue;
103     double val;
104 francois 396 int num=sscanf(nom2,"%lf",&val);
105     if (num==1) ajouter(nom,nom2,DOUBLE);
106     else ajouter(nom,nom2,STRING);
107 francois 283 }
108     }
109     fclose(in);
110 francois 258 }
111    
112    
113    
114     double OT_PARAMETRES::get_valeur(std::string chaine)
115     {
116 francois 283 int taille=nom_param.size();
117     for (int i=0;i<taille;i++)
118     {
119     std::string valtmp=nom_param[i];
120     if (valtmp==chaine)
121     {
122     double val;
123     sscanf(valeur_param[i].c_str(),"%lf",&val);
124     return val;
125     }
126    
127     }
128     return 0.;
129 francois 258 }
130    
131 francois 512 void OT_PARAMETRES::change_valeur(std::string chaine,double val)
132     {
133     int taille=nom_param.size();
134     for (int i=0;i<taille;i++)
135     {
136     std::string valtmp=nom_param[i];
137     if (valtmp==chaine)
138     {
139     char mess[255];
140     sprintf(mess,"%lf",val);
141     valeur_param[i]=mess;
142     }
143    
144     }
145     }
146    
147     void OT_PARAMETRES::change_valeur(std::string chaine,std::string val)
148     {
149     int taille=nom_param.size();
150     for (int i=0;i<taille;i++)
151     {
152     std::string valtmp=nom_param[i];
153     if (valtmp==chaine)
154     {
155     valeur_param[i]=val;
156     }
157    
158     }
159     }
160    
161 francois 603 int OT_PARAMETRES::get_num_param(std::string chaine)
162     {
163     int taille=nom_param.size();
164     for (int i=0;i<taille;i++)
165     {
166     std::string valtmp=nom_param[i];
167     if (valtmp==chaine)
168     {
169     return i;
170     }
171    
172     }
173     return -1;
174     }
175    
176    
177 francois 258 std::string OT_PARAMETRES::get_nom(std::string chaine)
178     {
179 francois 283 int taille=nom_param.size();
180     for (int i=0;i<taille;i++)
181     {
182     std::string valtmp=nom_param[i];
183     if (valtmp==chaine)
184     {
185 cuillier 338 return valeur_param[i];
186 francois 283 }
187    
188     }
189     return "";
190 francois 258 }
191    
192 francois 396 int OT_PARAMETRES::get_type(std::string chaine)
193     {
194     int taille=nom_param.size();
195     for (int i=0;i<taille;i++)
196     {
197     std::string valtmp=nom_param[i];
198     if (valtmp==chaine)
199     {
200     return type_param[i];
201     }
202    
203     }
204     return 0;
205     }
206 francois 271 double OT_PARAMETRES::get_valeur(int num)
207     {
208 francois 283 double val;
209     sscanf(valeur_param[num].c_str(),"%lf",&val);
210     return val;
211 francois 271 }
212    
213     std::string OT_PARAMETRES::get_nom(int num)
214     {
215 francois 283 return nom_param[num];
216 francois 271 }
217    
218 francois 396 int OT_PARAMETRES::get_type(int num)
219     {
220     return type_param[num];
221     }
222 francois 271 int OT_PARAMETRES::get_nb(void)
223     {
224 francois 283 return nom_param.size();
225 francois 271 }
226    
227    
228 francois 258 void OT_PARAMETRES::vide(void)
229     {
230 francois 283 nom_param.clear();
231     valeur_param.clear();
232     aide_param.clear();
233 francois 396 type_param.clear();
234 francois 258 }
235