.. _program_listing_file_src_rdf4cpp_query_QuadPattern.hpp: Program Listing for File QuadPattern.hpp ======================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/rdf4cpp/query/QuadPattern.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef RDF4CPP_QUADPATTERN_HPP #define RDF4CPP_QUADPATTERN_HPP #include #include #include #include namespace rdf4cpp::query { struct QuadPattern { using value_type = Node; using reference = value_type &; using const_reference = value_type const &; using pointer = value_type *; using const_pointer = value_type const *; using size_type = size_t; using difference_type = ptrdiff_t; protected: using storage_type = std::array; storage_type entries_{}; public: QuadPattern() noexcept = default; QuadPattern(Node graph, Node subject, Node predicate, Node object) noexcept; [[nodiscard]] reference graph() noexcept { return entries_[0]; } [[nodiscard]] const_reference graph() const noexcept { return entries_[0]; } [[nodiscard]] reference subject() noexcept { return entries_[1]; } [[nodiscard]] const_reference subject() const noexcept { return entries_[1]; } [[nodiscard]] reference predicate() noexcept { return entries_[2]; } [[nodiscard]] const_reference predicate() const noexcept { return entries_[2]; } [[nodiscard]] reference object() noexcept { return entries_[3]; } [[nodiscard]] const_reference object() const noexcept { return entries_[3]; } [[nodiscard]] reference operator[](size_type ix) noexcept { return entries_[ix]; } [[nodiscard]] const_reference operator[](size_type ix) const noexcept { return entries_[ix]; } [[nodiscard]] size_type size() const noexcept { return entries_.size(); } [[nodiscard]] bool valid() const noexcept; using iterator = typename storage_type::iterator; using const_iterator = typename storage_type::const_iterator; using reverse_iterator = typename storage_type::reverse_iterator; using const_reverse_iterator = typename storage_type::const_reverse_iterator; [[nodiscard]] iterator begin() noexcept { return entries_.begin(); } [[nodiscard]] const_iterator begin() const noexcept { return entries_.begin(); } [[nodiscard]] iterator end() noexcept { return entries_.end(); } [[nodiscard]] const_iterator end() const noexcept { return entries_.end(); } [[nodiscard]] reverse_iterator rbegin() noexcept { return entries_.rbegin(); } [[nodiscard]] const_reverse_iterator rbegin() const noexcept { return entries_.rbegin(); } [[nodiscard]] reverse_iterator rend() noexcept { return entries_.rend(); } [[nodiscard]] const_reverse_iterator rend() const noexcept { return entries_.rend(); } [[nodiscard]] TriplePattern const &without_graph() const noexcept; auto operator<=>(QuadPattern const &rhs) const = default; [[nodiscard]] explicit operator std::string() const; friend std::ostream &operator<<(std::ostream &os, QuadPattern const &pattern); [[nodiscard]] QuadPattern to_node_storage(storage::DynNodeStoragePtr node_storage) const; [[nodiscard]] QuadPattern try_get_in_node_storage(storage::DynNodeStoragePtr node_storage) const noexcept; }; } // namespace rdf4cpp::query #endif //RDF4CPP_QUADPATTERN_HPP