~Impl() { if (engine) { engine->quit(); } // Delete module objects but save pointers to libraries typedef std::list<Glib::Module*> Libs; Libs libs; for (auto& m : modules) { libs.push_back(m.second->library); delete m.second; } serialiser.reset(); parser.reset(); interface.reset(); engine.reset(); store.reset(); interface_factories.clear(); script_runners.clear(); delete rdf_world; delete lv2_features; delete uris; delete forge; delete uri_map; lilv_world_free(lilv_world); // Close module libraries for (auto& l : libs) { delete l; } }