ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/outil/src/ot_parametres.cpp
Revision: 1028
Committed: Thu Jul 11 13:41:36 2019 UTC (5 years, 11 months ago) by francois
File size: 5188 byte(s)
Log Message:
Parralélisation des calculs de polycristaux

File Contents

# User Rev Content
1 francois 265 #include <stdio.h>
2 francois 1019 #include <string.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     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 couturad 964 int OT_PARAMETRES::lire(char *nom)
89 francois 258 {
90 francois 283 FILE* in=fopen(nom,"rt");
91 couturad 964 if (in==NULL) return 0; // return FAIL
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 francois 1028 int nb=sscanf(chaine,"%s %s",nom,nom2);
107     if (nb==2)
108     if (strcmp(nom,"->")==0)
109     {
110     lire(nom2);
111     continue;
112     }
113     nb=sscanf(chaine,"%s %c %s",nom,&c,nom2);
114 francois 681 if (nb!=3) continue;
115     double val;
116 francois 738 char *aide=strstr(chaine,"//");
117     if (aide==NULL) aide=chaine+strlen(chaine)-1; else aide=aide+2;
118 francois 737 for (int i=0;i<strlen(aide);i++)
119     if (aide[i]=='\n') aide[i]=0;
120 francois 396 int num=sscanf(nom2,"%lf",&val);
121 francois 737 if (num==1) ajouter(nom,nom2,DOUBLE,aide);
122     else ajouter(nom,nom2,STRING,aide);
123 francois 283 }
124     }
125     fclose(in);
126 couturad 964 return 1; // return OK;
127 francois 258 }
128    
129    
130    
131     double OT_PARAMETRES::get_valeur(std::string chaine)
132     {
133 francois 283 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     double val;
140     sscanf(valeur_param[i].c_str(),"%lf",&val);
141     return val;
142     }
143    
144     }
145     return 0.;
146 francois 258 }
147    
148 francois 512 void OT_PARAMETRES::change_valeur(std::string chaine,double val)
149     {
150     int taille=nom_param.size();
151     for (int i=0;i<taille;i++)
152     {
153     std::string valtmp=nom_param[i];
154     if (valtmp==chaine)
155     {
156     char mess[255];
157     sprintf(mess,"%lf",val);
158     valeur_param[i]=mess;
159     }
160    
161     }
162     }
163    
164     void OT_PARAMETRES::change_valeur(std::string chaine,std::string val)
165     {
166     int taille=nom_param.size();
167     for (int i=0;i<taille;i++)
168     {
169     std::string valtmp=nom_param[i];
170     if (valtmp==chaine)
171     {
172     valeur_param[i]=val;
173     }
174    
175     }
176     }
177    
178 francois 603 int OT_PARAMETRES::get_num_param(std::string chaine)
179     {
180     int taille=nom_param.size();
181     for (int i=0;i<taille;i++)
182     {
183     std::string valtmp=nom_param[i];
184     if (valtmp==chaine)
185     {
186     return i;
187     }
188    
189     }
190     return -1;
191     }
192    
193    
194 francois 258 std::string OT_PARAMETRES::get_nom(std::string chaine)
195     {
196 francois 283 int taille=nom_param.size();
197     for (int i=0;i<taille;i++)
198     {
199     std::string valtmp=nom_param[i];
200     if (valtmp==chaine)
201     {
202 cuillier 338 return valeur_param[i];
203 francois 283 }
204    
205     }
206     return "";
207 francois 258 }
208    
209 francois 396 int OT_PARAMETRES::get_type(std::string chaine)
210     {
211     int taille=nom_param.size();
212     for (int i=0;i<taille;i++)
213     {
214     std::string valtmp=nom_param[i];
215     if (valtmp==chaine)
216     {
217     return type_param[i];
218     }
219    
220     }
221     return 0;
222     }
223 francois 271 double OT_PARAMETRES::get_valeur(int num)
224     {
225 francois 283 double val;
226     sscanf(valeur_param[num].c_str(),"%lf",&val);
227     return val;
228 francois 271 }
229    
230     std::string OT_PARAMETRES::get_nom(int num)
231     {
232 francois 283 return nom_param[num];
233 francois 271 }
234    
235 francois 396 int OT_PARAMETRES::get_type(int num)
236     {
237     return type_param[num];
238     }
239 francois 271 int OT_PARAMETRES::get_nb(void)
240     {
241 francois 283 return nom_param.size();
242 francois 271 }
243    
244    
245 francois 258 void OT_PARAMETRES::vide(void)
246     {
247 francois 283 nom_param.clear();
248     valeur_param.clear();
249     aide_param.clear();
250 francois 396 type_param.clear();
251 francois 258 }
252