Objects returned by __getitem__ are declared new (%newobject) so that when destroyed they
call decrRef (see feature("unref") for RefCounter).
*/
-/*
-%inline %{
-template <typename U> class StopIterator {};
-template <typename U> class Iterator {
- public:
- Iterator(std::map<std::string,U*>::iterator _cur, std::map<std::string,U*>::iterator _end) : cur(_cur), end(_end) {}
- Iterator* __iter__()
- {
- return this;
- }
- template <typename U> std::map<std::string,U*>::iterator cur;
- template <typename U> std::map<std::string,U*>::iterator end;
- };
-%}
%include "exception.i"
%exception Iterator::next {
throw StopIterator();
}
}
-*/
+
template<>
class std::map<std::string,T*>
{
}
return keyList;
}
-/* Iterator __iter__()
+ Iterator<T> __iter__()
{
// return a constructed Iterator object
- return Iterator($self->begin(), $self->end());
+ return typename Iterator($self->begin(), $self->end());
}
-*/
+
int __len__()
{
int pysize = self->size();
}
}
};
-
+%rename(__next__) Iterator::next;
%newobject std::map<std::string,T* >::__getitem__;
+%newobject std::map<std::string,T* >::__iter__;
%template() std::pair<std::string, T* >;
%template(tname) std::map<std::string, T* >;
%pythoncode{