21 #ifndef _cvc3__include__cdmap_ordered_h_
22 #define _cvc3__include__cdmap_ordered_h_
47 template <
class Key,
class Data>
72 d_cdmap->d_trash.push_back(
this);
86 const Key& key,
const Data& data,
int scope = -1)
98 d_prev->d_next = first->d_prev =
this;
102 void set(
const Data& data,
int scope=-1) {
106 const Data&
get()
const {
return d_data; }
107 operator Data() {
return get(); }
127 template <
class Key,
class Data>
131 std::map<Key,CDOmapOrdered<Key,Data>*>
d_map;
133 std::vector<CDOmapOrdered<Key,Data>*>
d_trash;
155 i!=iend; ++i)
delete (*i).second;
162 IF_DEBUG(setName(
"CDMapOrdered")); ;
172 typename std::map<Key,CDOmapOrdered<Key,Data>*>
::iterator i(
d_map.find(k));
174 if(i ==
d_map.end()) {
183 void insert(
const Key& k,
const Data& d,
int scope = -1) {
185 typename std::map<Key,CDOmapOrdered<Key,Data>*>
::iterator i(
d_map.find(k));
186 if(i ==
d_map.end()) {
191 (*i).second->
set(d, scope);
198 class iterator :
public std::iterator<std::input_iterator_tag,std::pair<const Key, Data>,std::ptrdiff_t> {
201 typename std::map<Key,CDOmapOrdered<Key,Data>*>::const_iterator
d_it;
219 const std::pair<const Key, CDOmapOrdered<Key,Data>*>& p(*
d_it);
220 return std::pair<const Key, Data>(p.first, *p.second);
234 const std::pair<const Key, Data>*
d_pair;
269 return std::pair<const Key, Data>(
d_it->getKey(),
d_it->get());
277 const std::pair<const Key, Data>*
d_pair;