ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/outil/src/ot_parametres.cpp
Revision: 929
Committed: Fri May 11 18:14:54 2018 UTC (7 years ago) by couturad
File size: 4996 byte(s)
Log Message:
Mise a jour des fonctionnalites de MICROSTRUCTURE

File Contents

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