.. _program_listing_file_src_rdf4cpp_query_TriplePattern.cpp: Program Listing for File TriplePattern.cpp ========================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/rdf4cpp/query/TriplePattern.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "TriplePattern.hpp" #include namespace rdf4cpp::query { TriplePattern::TriplePattern(Node subject, Node predicate, Node object) noexcept : entries_{subject, predicate, object} { } bool TriplePattern::valid() const noexcept { return !subject().null() && !subject().is_literal() && !predicate().null() && (predicate().is_iri() || predicate().is_variable()) && !object().null(); } TriplePattern::operator std::string() const { auto s = writer::StringWriter::oneshot([this](auto &w) { return writer::write_quad(*this, w, nullptr); }); s.pop_back(); // remove newline return s; } std::ostream &operator<<(std::ostream &os, TriplePattern const &pattern) { os << static_cast(pattern); return os; } TriplePattern TriplePattern::to_node_storage(storage::DynNodeStoragePtr node_storage) const { TriplePattern tp; auto it = tp.begin(); for (const auto &item : *this) { *(it++) = item.to_node_storage(node_storage); } return tp; } TriplePattern TriplePattern::try_get_in_node_storage(storage::DynNodeStoragePtr node_storage) const noexcept { TriplePattern tp; auto it = tp.begin(); for (const auto &item : *this) { *(it++) = item.try_get_in_node_storage(node_storage); } return tp; } } // namespace rdf4cpp::query