ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/outil/src/tpl_map_entite.h
Revision: 5
Committed: Tue Jun 12 20:26:34 2007 UTC (18 years ago)
Content type: text/plain
Original Path: magic/lib/template/template/src/tpl_map_entite.h
File size: 3304 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     // tpl_map_entite.h
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 à 11H24
21     //------------------------------------------------------------
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    
63    
64     virtual void supprimer(X x)
65     {
66     typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.find(x->get_id());
67     if (j==lst_X.end())
68     {
69     ITERATEUR it;
70     /* printf(" warning : did not find key %d\n", x->get_id());
71     for (X s = get_premier(it); s; s = get_suivant(it))
72     printf("lst_X [ %d ]\n ", it->first);*/
73     return;
74     }
75     lst_X.erase(j);
76     };
77    
78    
79    
80    
81    
82     virtual int get_nb(void)
83     {
84     return lst_X.size();
85     };
86    
87    
88     virtual X get(int num)
89     {
90     typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.begin();
91     for (int i=0;i<num;i++) j++;
92     return ((*j).second);
93     };
94    
95     virtual X getid(unsigned long num)
96     {
97     typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.find(num);
98     if (j==lst_X.end())
99     {
100     return NULL;
101     }
102     return ((*j).second);
103     };
104    
105     virtual void vide(void)
106     {
107     lst_X.clear();
108     };
109    
110    
111     virtual X get_premier(ITERATEUR &it)
112     {
113     it = lst_X.begin();
114     if (it == lst_X.end())
115     return NULL;
116     return it->second ;
117     };
118    
119     virtual X get_suivant(ITERATEUR &it)
120     {
121     it++;
122     if(it==lst_X.end())
123     {
124     return NULL;
125     }
126     printf("distance = %d\n", std::distance(lst_X.begin(), it)) ;
127     return it->second;
128     }
129    
130     virtual X get(ITERATEUR & it)
131     {
132     if (it == lst_X.end())
133     return NULL;
134    
135     return it->second;
136     }
137    
138     private:
139     typename std::map<unsigned long,X,std::less<unsigned long> > lst_X;
140    
141    
142     };
143    
144    
145    
146    
147    
148    
149    
150    
151     #endif