.. _program_listing_file_src_rdf4cpp_Quad.cpp: Program Listing for File Quad.cpp ================================= |exhale_lsh| :ref:`Return to documentation for file ` (``src/rdf4cpp/Quad.cpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "Quad.hpp" #include namespace rdf4cpp { Quad::Quad(Node subject, Node predicate, Node object) noexcept : QuadPattern(IRI::default_graph(), subject, predicate, object) {} Quad::Quad(Node graph, Node subject, Node predicate, Node object) noexcept : QuadPattern(graph, subject, predicate, object) {} bool Quad::valid() const noexcept { return (graph().is_iri() || graph().is_blank_node()) && (subject().is_iri() || subject().is_blank_node()) && (predicate().is_iri()) && (object().is_iri() || object().is_literal() || object().is_blank_node()); } std::optional Quad::create_validated(Node graph, Node subject, Node predicate, Node object) noexcept { Quad quad{graph, subject, predicate, object}; if (quad.valid()) { return quad; } else { return std::nullopt; } } std::optional Quad::create_validated(Node subject, Node predicate, Node object) noexcept { Quad quad{subject, predicate, object}; if (quad.valid()) { return quad; } else { return std::nullopt; } } Statement const &Quad::without_graph() const noexcept { static_assert(sizeof(Quad) == 4 * sizeof(Node)); static_assert(sizeof(Statement) == 3 * sizeof(Node)); return *reinterpret_cast(entries_.data() + 1); } Quad Quad::to_node_storage(storage::DynNodeStoragePtr node_storage) const { Quad qu; auto it = qu.begin(); for (auto const item : *this) { *(it++) = item.to_node_storage(node_storage); } return qu; } Quad Quad::try_get_in_node_storage(storage::DynNodeStoragePtr node_storage) const noexcept { Quad qu; auto it = qu.begin(); for (auto const item : *this) { *(it++) = item.try_get_in_node_storage(node_storage); } return qu; } bool Quad::serialize_ntriples(writer::BufWriterParts const writer) const noexcept { return writer::write_quad(*this, writer, nullptr); } bool Quad::serialize_nquads(writer::BufWriterParts const writer) const noexcept { return writer::write_quad(*this, writer, nullptr); } bool Quad::serialize_turtle(writer::SerializationState &state, writer::BufWriterParts const writer) const noexcept { return writer::write_quad(*this, writer, &state); } bool Quad::serialize_trig(writer::SerializationState &state, writer::BufWriterParts const writer) const noexcept { return writer::write_quad(*this, writer, &state); } } // namespace rdf4cpp