Program Listing for File ClosedNamespace.hpp

Return to documentation for file (src/rdf4cpp/ClosedNamespace.hpp)

#ifndef RDF4CPP_CLOSEDNAMESPACE_HPP
#define RDF4CPP_CLOSEDNAMESPACE_HPP

#include <rdf4cpp/Namespace.hpp>

namespace rdf4cpp {

struct ClosedNamespace : Namespace {
    template<typename Suffixes>
        requires std::convertible_to<std::ranges::range_value_t<Suffixes>, std::string_view>
    ClosedNamespace(std::string_view namespace_iri, Suffixes all_suffixes, storage::DynNodeStoragePtr node_storage)
        : Namespace(namespace_iri, node_storage) {

        for (auto const &suffix : all_suffixes) {
            IRI iri{namespace_iri_ + std::string{suffix}, node_storage};
            this->cache_.emplace(suffix, iri.backend_handle().id());
        }
    }

    IRI operator+(std::string_view suffix) const override;

    void clear() const override;
};

}  // namespace rdf4cpp

#endif  //RDF4CPP_CLOSEDNAMESPACE_HPP