ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/outil/src/tpl_map_entite.h
Revision: 195
Committed: Thu Jul 16 22:05:49 2009 UTC (15 years, 11 months ago) by francois
Content type: text/plain
Original Path: magic/lib/template/template/src/tpl_map_entite.h
File size: 3254 byte(s)
Log Message:
Ajout de groupe de topologie pour appliquer des algos sur une partie du fichier magic seulement
Ajout de methode qui permette de connaitre la topologie sous jacente a une topologie donnee
Gestion des maillages FEM qui ne sont attaches a une geometrie

File Contents

# User Rev Content
1 5 //------------------------------------------------------------
2     //------------------------------------------------------------
3     // MAGiC
4 francois 195 // Jean Christophe Cuilli�re et Vincent FRANCOIS
5     // D�partement de G�nie M�canique - UQTR
6 5 //------------------------------------------------------------
7 francois 195 // 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 5 // des auteurs (contact : francois@uqtr.ca)
12     //------------------------------------------------------------
13     //------------------------------------------------------------
14     //
15     // tpl_map_entite.h
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20 francois 195 // Version du 02/03/2006 � 11H24
21 5 //------------------------------------------------------------
22     //------------------------------------------------------------
23     #ifndef _TPLMAPENTITE_
24     #define _TPLMAPENTITE_
25    
26     #include <stdio.h>
27    
28    
29     #ifdef BORLANDCPP
30     #include <map.h>
31     #else
32     #include <map>
33     #endif
34    
35     template <class X>
36     class TPL_MAP_ENTITE
37     {
38     public:
39     typedef typename std::map<unsigned long,X,std::less<unsigned long> >::iterator ITERATEUR;
40    
41     TPL_MAP_ENTITE() {};
42     virtual ~TPL_MAP_ENTITE() {};
43    
44     /*
45     syntaxe :
46     TPL_MAP_ENTITE<MG_ELEMENT_MAILLAGE*> liste;
47     TPL_MAP_ENTITE<MG_ELEMENT_MAILLAGE*>::ITERATEUR it;
48     MG_ELEMENT_MAILLAGE* element;
49     for (element = liste.get_premier(it); element; element = liste.get_suivant(it) )
50     {
51     printf("element id = %d", element->get_id());
52     }
53     */
54    
55    
56     virtual void ajouter(X x)
57     {
58     typename std::pair<const unsigned long,X> tmp(x->get_id(),x);
59     lst_X.insert(tmp);
60     };
61    
62 francois 195 virtual int existe(X x)
63     {
64     typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.find(x->get_id());
65     if (j!=lst_X.end()) return 1;
66     return 0;
67     };
68 5
69    
70     virtual void supprimer(X x)
71     {
72     typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.find(x->get_id());
73     if (j==lst_X.end())
74     {
75     ITERATEUR it;
76     return;
77     }
78     lst_X.erase(j);
79     };
80    
81    
82    
83    
84    
85     virtual int get_nb(void)
86     {
87     return lst_X.size();
88     };
89    
90    
91     virtual X get(int num)
92     {
93     typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.begin();
94     for (int i=0;i<num;i++) j++;
95     return ((*j).second);
96     };
97    
98     virtual X getid(unsigned long num)
99     {
100     typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.find(num);
101     if (j==lst_X.end())
102     {
103     return NULL;
104     }
105     return ((*j).second);
106     };
107    
108     virtual void vide(void)
109     {
110     lst_X.clear();
111     };
112    
113    
114     virtual X get_premier(ITERATEUR &it)
115     {
116     it = lst_X.begin();
117     if (it == lst_X.end())
118     return NULL;
119     return it->second ;
120     };
121    
122     virtual X get_suivant(ITERATEUR &it)
123     {
124     it++;
125     if(it==lst_X.end())
126     {
127     return NULL;
128     }
129     return it->second;
130     }
131    
132     virtual X get(ITERATEUR & it)
133     {
134     if (it == lst_X.end())
135     return NULL;
136    
137     return it->second;
138     }
139    
140     private:
141     typename std::map<unsigned long,X,std::less<unsigned long> > lst_X;
142    
143    
144     };
145    
146    
147    
148    
149    
150    
151    
152    
153     #endif