ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/outil/src/tpl_map_entite.h
Revision: 27
Committed: Thu Jul 5 15:26:40 2007 UTC (17 years, 11 months ago) by foucault
Content type: text/plain
Original Path: magic/lib/template/template/src/tpl_map_entite.h
File size: 3053 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     return;
71     }
72     lst_X.erase(j);
73     };
74    
75    
76    
77    
78    
79     virtual int get_nb(void)
80     {
81     return lst_X.size();
82     };
83    
84    
85     virtual X get(int num)
86     {
87     typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.begin();
88     for (int i=0;i<num;i++) j++;
89     return ((*j).second);
90     };
91    
92     virtual X getid(unsigned long num)
93     {
94     typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.find(num);
95     if (j==lst_X.end())
96     {
97     return NULL;
98     }
99     return ((*j).second);
100     };
101    
102     virtual void vide(void)
103     {
104     lst_X.clear();
105     };
106    
107    
108     virtual X get_premier(ITERATEUR &it)
109     {
110     it = lst_X.begin();
111     if (it == lst_X.end())
112     return NULL;
113     return it->second ;
114     };
115    
116     virtual X get_suivant(ITERATEUR &it)
117     {
118     it++;
119     if(it==lst_X.end())
120     {
121     return NULL;
122     }
123     return it->second;
124     }
125    
126     virtual X get(ITERATEUR & it)
127     {
128     if (it == lst_X.end())
129     return NULL;
130    
131     return it->second;
132     }
133    
134     private:
135     typename std::map<unsigned long,X,std::less<unsigned long> > lst_X;
136    
137    
138     };
139    
140    
141    
142    
143    
144    
145    
146    
147     #endif