+void ResourceManager::move_resource(Resource &from, Resource &to)
+{
+ if(to.get_manager()!=this || from.get_manager_data()!=to.get_manager_data())
+ throw invalid_operation("ResourceManager::move_resource");
+ ManagedResource *managed = reinterpret_cast<ManagedResource *>(to.get_manager_data());
+ MutexLock lock(map_mutex);
+ insert_unique(resources, &to, *managed);
+ resources.erase(&from);
+}
+