ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/materiau/src/mt_gestionnaire.cpp
Revision: 5
Committed: Tue Jun 12 20:26:34 2007 UTC (17 years, 11 months ago)
Original Path: magic/lib/materiau/materiau/src/mt_gestionnaire.cpp
File size: 4168 byte(s)
Log Message:

File Contents

# User Rev Content
1 5 //------------------------------------------------------------
2     //------------------------------------------------------------
3     // MAGiC
4     // Jean Christophe Cuillière et Vincent FRANCOIS
5     // Département de Génie Mécanique - UQTR
6     //------------------------------------------------------------
7     // Le projet MAGIC est un projet de recherche du département
8     // de génie mécanique de l'Université du Québec à
9     // Trois Rivières
10     // Les librairies ne peuvent être utilisées sans l'accord
11     // des auteurs (contact : francois@uqtr.ca)
12     //------------------------------------------------------------
13     //------------------------------------------------------------
14     //
15     // mt_gestionnaire.cpp
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 à 11H23
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23    
24    
25     #include "gestionversion.h"
26    
27     #pragma hdrstop
28    
29     #include "mt_gestionnaire.h"
30     #include "mt_materiau.h"
31     #include "parse.h"
32     #include "pars_argument.h"
33     //---------------------------------------------------------------------------
34     MT_GESTIONNAIRE::MT_GESTIONNAIRE(char* path)
35     {
36     chemin=path;
37     lire();
38     }
39    
40     MT_GESTIONNAIRE::~MT_GESTIONNAIRE()
41     {
42     int nb=lst_mat.get_nb();
43     while (nb!=0)
44     {
45     MT_MATERIAU* mat=lst_mat.get(0);
46     lst_mat.supprimer(mat);
47     delete mat;
48     nb=lst_mat.get_nb();
49     }
50     }
51    
52     class MT_MATERIAU* MT_GESTIONNAIRE::ajouter_materiau(std::string nom,std::string descrip)
53     {
54     MT_MATERIAU* mat=new MT_MATERIAU((char*)nom.c_str(),(char*)descrip.c_str());
55     lst_mat.ajouter(mat);
56     return mat;
57     }
58    
59     int MT_GESTIONNAIRE::get_nb_materiau()
60     {
61     return lst_mat.get_nb();
62     }
63    
64     class MT_MATERIAU* MT_GESTIONNAIRE::get_materiau(int num)
65     {
66     return lst_mat.get(num);
67     }
68    
69     char* MT_GESTIONNAIRE::get_chemin()
70     {
71     return (char*)chemin.c_str();
72     }
73    
74    
75     void MT_GESTIONNAIRE::lire(void)
76     {
77     FILE *in=fopen(chemin.c_str(),"rt");
78     if (in==NULL) return ;
79     PARS_ARGUMENT param[20];
80     PARSE parse;
81     do
82     {
83     char mess[255];
84     fgets(mess,255,in);
85     std::string ligne=mess;
86     parse.decode(ligne.c_str(),"@\n",param);
87     if (param[0].argument[0]!="END")
88     {
89     parse.decode(ligne.c_str(),"@:@\n",param);
90     if (param[0].argument[0]=="MATL")
91     {
92     parse.decode(ligne.c_str(),"@:@:@:@\n",param);
93     MT_MATERIAU* mate=ajouter_materiau(param[1].argument[0],param[3].argument[0].c_str());
94     do
95     {
96     char mess[255];
97     fgets(mess,255,in);
98     std::string ligne=mess;
99     parse.decode(ligne.c_str(),"@\n",param);
100     if (param[0].argument[0]!="ENDMATL")
101     {
102     char nom[20],uni1[50],uni2[50],uni3[50];
103     double val1,val2,val3;
104     int nb=sscanf(ligne.c_str(),"%s %lf %s %lf %s %lf %s",nom,&val1,uni1,&val2,uni2,&val3,uni3);
105     if (nb==7)
106     mate->ajouter_propriete(nom,val1,uni1,val2,uni2,val3,uni3);
107     else
108     {
109     sscanf(ligne.c_str(),"%s %lf %lf %lf",nom,&val1,&val2,&val3);
110     mate->ajouter_propriete(nom,val1,"",val2,"",val3,"");
111     }
112    
113     }
114     }
115     while (param[0].argument[0]!="ENDMATL");
116     }
117     }
118     }
119     while (param[0].argument[0]!="END");
120     fclose(in);
121     }
122    
123