.. _program_listing_file_src_rdf4cpp_parser_RDFFileParser.hpp: Program Listing for File RDFFileParser.hpp ========================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/rdf4cpp/parser/RDFFileParser.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef RDF4CPP_RDFFILEPARSER_HPP #define RDF4CPP_RDFFILEPARSER_HPP #include #include namespace rdf4cpp::parser { struct RDFFileParser { using value_type = Quad; using state_type = IStreamQuadIterator::state_type; using flags_type = IStreamQuadIterator::flags_type; private: std::string file_path_; flags_type flags_; state_type *state_; public: explicit RDFFileParser(const std::string &file_path, flags_type flags = flags_type::none(), state_type *state = nullptr); explicit RDFFileParser(std::string &&file_path, flags_type flags = flags_type::none(), state_type *state = nullptr); struct iterator { friend struct RDFFileParser; private: friend bool operator==(const RDFFileParser::iterator &iter, std::default_sentinel_t) noexcept; FILE *stream_; std::unique_ptr iter_; iterator(); iterator(FILE *&&stream, flags_type flags, state_type *state); public: ~iterator() noexcept; using value_type = IStreamQuadIterator::value_type; using reference = IStreamQuadIterator::reference; using pointer = IStreamQuadIterator::pointer; using difference_type = IStreamQuadIterator::difference_type; using iterator_category = IStreamQuadIterator::iterator_category; using istream_type = IStreamQuadIterator::istream_type; reference operator*() const noexcept; pointer operator->() const noexcept; iterator &operator++(); [[nodiscard]] bool operator==(const iterator &other) const noexcept; // != gets generated by compiler }; using sentinel = std::default_sentinel_t; [[nodiscard]] iterator begin() const; [[nodiscard]] sentinel end() const noexcept; }; [[nodiscard]] bool operator==(const RDFFileParser::iterator &iter, std::default_sentinel_t s) noexcept; [[nodiscard]] bool operator==(std::default_sentinel_t s, const RDFFileParser::iterator &iter) noexcept; } // namespace rdf4cpp::parser #endif //RDF4CPP_RDFFILEPARSER_HPP