MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
tpl_map_entite.h
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// tpl_map_entite.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:53:59 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef _TPLMAPENTITE_
23 #define _TPLMAPENTITE_
24 
25 #include <stdio.h>
26 
27 
28  #ifdef BORLANDCPP
29  #include <map.h>
30  #else
31  #include <map>
32  #endif
33 
34 template <class X>
36 {
37 public:
38 typedef typename std::map<unsigned long,X,std::less<unsigned long> >::iterator ITERATEUR;
39 
41 virtual ~TPL_MAP_ENTITE() {};
42 
43 /*
44 syntaxe :
45 TPL_MAP_ENTITE<MG_ELEMENT_MAILLAGE*> liste;
46 TPL_MAP_ENTITE<MG_ELEMENT_MAILLAGE*>::ITERATEUR it;
47 MG_ELEMENT_MAILLAGE* element;
48 for (element = liste.get_premier(it); element; element = liste.get_suivant(it) )
49 {
50  printf("element id = %d", element->get_id());
51 }
52 */
53 
54 
55 virtual void ajouter(X x)
56 {
57 typename std::pair<const unsigned long,X> tmp(x->get_id(),x);
58 lst_X.insert(tmp);
59 };
60 
61 virtual int existe(X x)
62 {
63 typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.find(x->get_id());
64 if (j!=lst_X.end()) return 1;
65 return 0;
66 };
67 
68 
69 virtual void supprimer(X x)
70 {
71 typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.find(x->get_id());
72 if (j==lst_X.end())
73 {
74  ITERATEUR it;
75  return;
76 }
77 lst_X.erase(j);
78 };
79 
80 
81 
82 
83 virtual int get_nb(void)
84 {
85 return lst_X.size();
86 };
87 
88 
89 virtual X get(int num)
90 {
91 typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.begin();
92 for (int i=0;i<num;i++) j++;
93 return ((*j).second);
94 };
95 
96 virtual X getid(unsigned long num)
97 {
98 typename std::map<unsigned long,X,std::less<unsigned long> >::iterator j=lst_X.find(num);
99 if (j==lst_X.end())
100  {
101  return NULL;
102  }
103 return ((*j).second);
104 };
105 
106 virtual void vide(void)
107 {
108 lst_X.clear();
109 };
110 
111 
112 virtual X get_premier(ITERATEUR &it)
113 {
114 it = lst_X.begin();
115 if (it == lst_X.end())
116  return NULL;
117 return it->second ;
118 };
119 
120 virtual X get_suivant(ITERATEUR &it)
121 {
122 it++;
123 if(it==lst_X.end())
124 {
125  return NULL;
126 }
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 
140 {
141 X suiv2;
142 it1=lst_X.begin();
143 suiv2=lst2.get_premier(it2);
144 int ok=0;
145 X rep=NULL;
146 if (it1==lst_X.end()) ok=1;
147 if (suiv2==NULL) ok=1;
148 while (ok==0)
149  {
150  unsigned long id1=it1->first;
151  unsigned long id2=it2->first;
152  if (id2==id1)
153  {
154  rep=it1->second;
155  ok=1;
156  }
157  else if (id2<id1) suiv2=get_suivant(it2);
158  else if (id2>id1) it1++;
159  if (it1==lst_X.end()) ok=1;
160  if (suiv2==NULL) ok=1;
161  }
162 return rep;
163 }
164 
166 {
167 X suiv2;
168 it1++;
169 suiv2=lst2.get_suivant(it2);
170 int ok=0;
171 X rep=NULL;
172 if (it1==lst_X.end()) ok=1;
173 if (suiv2==NULL) ok=1;
174 while (ok==0)
175  {
176  unsigned long id1=it1->first;
177  unsigned long id2=it2->first;
178  if (id2==id1)
179  {
180  rep=it1->second;
181  ok=1;
182  }
183  else if (id2<id1) suiv2=get_suivant(it2);
184  else if (id2>id1) it1++;
185  if (it1==lst_X.end()) ok=1;
186  if (suiv2==NULL) ok=1;
187  }
188 return rep;
189 }
190 
191 
192 
193 private:
194 typename std::map<unsigned long,X,std::less<unsigned long> > lst_X;
195 
196 
197 };
198 
199 
200 
201 
202 
203 
204 
205 
206 #endif
TPL_MAP_ENTITE::supprimer
virtual void supprimer(X x)
Definition: tpl_map_entite.h:69
TPL_MAP_ENTITE::get_premier
virtual X get_premier(ITERATEUR &it)
Definition: tpl_map_entite.h:112
TPL_MAP_ENTITE
Definition: tpl_map_entite.h:35
TPL_MAP_ENTITE::~TPL_MAP_ENTITE
virtual ~TPL_MAP_ENTITE()
Definition: tpl_map_entite.h:41
TPL_MAP_ENTITE::premier_commun
virtual X premier_commun(TPL_MAP_ENTITE< X > &lst2, ITERATEUR &it1, ITERATEUR &it2)
Definition: tpl_map_entite.h:139
TPL_MAP_ENTITE::existe
virtual int existe(X x)
Definition: tpl_map_entite.h:61
TPL_MAP_ENTITE::get
virtual X get(ITERATEUR &it)
Definition: tpl_map_entite.h:130
TPL_MAP_ENTITE::get_nb
virtual int get_nb(void)
Definition: tpl_map_entite.h:83
TPL_MAP_ENTITE::suivant_commun
virtual X suivant_commun(TPL_MAP_ENTITE< X > &lst2, ITERATEUR &it1, ITERATEUR &it2)
Definition: tpl_map_entite.h:165
TPL_MAP_ENTITE::ITERATEUR
std::map< unsigned long, X, std::less< unsigned long > >::iterator ITERATEUR
Definition: tpl_map_entite.h:38
TPL_MAP_ENTITE::lst_X
std::map< unsigned long, X, std::less< unsigned long > > lst_X
Definition: tpl_map_entite.h:194
TPL_MAP_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_map_entite.h:55
TPL_MAP_ENTITE::getid
virtual X getid(unsigned long num)
Definition: tpl_map_entite.h:96
TPL_MAP_ENTITE::TPL_MAP_ENTITE
TPL_MAP_ENTITE()
Definition: tpl_map_entite.h:40
TPL_MAP_ENTITE::get
virtual X get(int num)
Definition: tpl_map_entite.h:89
TPL_MAP_ENTITE::get_suivant
virtual X get_suivant(ITERATEUR &it)
Definition: tpl_map_entite.h:120
TPL_MAP_ENTITE::vide
virtual void vide(void)
Definition: tpl_map_entite.h:106