/* This file is part of Ingen. Copyright 2007-2015 David Robillard Ingen is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. Ingen is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for details. You should have received a copy of the GNU Affero General Public License along with Ingen. If not, see . */ #ifndef INGEN_CLASHAVOIDER_HPP #define INGEN_CLASHAVOIDER_HPP #include #include #include "ingen/ingen.h" #include "raul/Path.hpp" #include "raul/URI.hpp" namespace Ingen { class Store; /** Maps paths so they do not clash with an existing object in a store. * * @ingroup ingen */ class INGEN_API ClashAvoider { public: ClashAvoider(const Store& store); const Raul::URI map_uri(const Raul::URI& in); const Raul::Path map_path(const Raul::Path& in); bool exists(const Raul::Path& path) const; private: typedef std::map Offsets; typedef std::map SymbolMap; const Store& _store; Offsets _offsets; SymbolMap _symbol_map; }; } // namespace Ingen #endif // INGEN_CLASHAVOIDER_HPP