Josh's better version which handles multiple keys pointing to the same data.

This commit is contained in:
Redmond Urbino 2007-08-21 18:36:24 +00:00
parent 1f37ba4d24
commit 56724b87ff

View File

@ -57,20 +57,30 @@ print_data(const string &marker) {
void OdeTriMeshData:: void OdeTriMeshData::
remove_data(OdeTriMeshData *data) { remove_data(OdeTriMeshData *data) {
odetrimeshdata_cat.debug() << get_class_type() << "::remove_data(" << data->get_id() << ")" << "\n"; odetrimeshdata_cat.debug() << get_class_type() << "::remove_data(" << data->get_id() << ")" << "\n";
TriMeshDataMap::iterator iter = _tri_mesh_data_map.begin(); TriMeshDataMap::iterator iter;
int i = 0;
for (;iter != _tri_mesh_data_map.end(); ++iter) { for (iter = _tri_mesh_data_map.begin();
odetrimeshdata_cat.debug() << i<< " iter->first=" << iter->first << " iter->second=" << iter->second <<"\n"; iter != _tri_mesh_data_map.end();
++iter) {
if ( iter->second == data ) { if ( iter->second == data ) {
odetrimeshdata_cat.debug() << "erasing iter->first=" << iter->first << " iter->second=" << iter->second <<"\n"; break;
_tri_mesh_data_map.erase(iter); }
return; }
//iter = _tri_mesh_data_map.end();
while (iter != _tri_mesh_data_map.end()) {
_tri_mesh_data_map.erase(iter);
for (iter = _tri_mesh_data_map.begin();
iter != _tri_mesh_data_map.end();
++iter) {
if ( iter->second == data ) {
break;
}
} }
++i;
} }
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////