Example #1
0
	~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;
		}
	}