void erase(const T& item) { if(list_.erase(item) > 0) { if(added_list_.erase(item) == 0) { removed_list_.insert(item); } state_index_++; } }
void insert(const T& item) { insert_type result = list_.insert(item); if(result.second) { if(removed_list_.erase(item) == 0) { added_list_.insert(item); } state_index_++; } }
bool pop_type(const std::string& type) { for(list_type::iterator it = list_.begin(); it != list_.end(); it++) { if(it->type == type) { list_.erase(it); return true; } } return false; }
static void del(list_type & x, int i) { if( i<0 ) i += x.size(); iter_type it = x.begin(); for (int pos = 0; pos < i; ++pos) ++it; if( i >= 0 && i < (int)x.size() ) { x.erase(it); } else { PyErr_SetString(PyExc_IndexError, "Index out of range"); boost::python::throw_error_already_set(); } }