capydi
Loading...
Searching...
No Matches
DelimFileReader.hpp
Go to the documentation of this file.
1#ifndef DELIM_FILE_READER_
2#define DELIM_FILE_READER_
3
4#include "ITokenizer.hpp"
5#include "FileSystem.hpp"
6#include <string>
7#include <filesystem>
8#include <fstream>
9#include <iterator>
10
11class DelimFileReader : public ITokenizer<FileSystem::FileContentType>
12{
13private:
15
16public:
21
22private:
23 using IteratorType = std::istreambuf_iterator<FileCharType>;
24
25public:
26 DelimFileReader(const PathType& file_path, const DelimsType& delims, const std::size_t average_token_size = 0u);
27 ~DelimFileReader() override = default;
28
29public:
30 std::optional<TokenType> next_token() noexcept override;
31
32private:
33 bool is_delim(const FileCharType character) const noexcept;
34
35private:
36 std::ifstream file_;
37 IteratorType iterator_;
38 DelimsType delims_;
39 std::size_t average_token_size_;
40};
41
42#endif // ! DELIM_FILE_READER_
FileSystem::PathType PathType
Definition DelimFileReader.hpp:17
FileSystem::FileCharType FileCharType
Definition DelimFileReader.hpp:19
~DelimFileReader() override=default
TokenType DelimsType
Definition DelimFileReader.hpp:20
typename BaseType::TokenType TokenType
Definition DelimFileReader.hpp:18
std::optional< TokenType > next_token() noexcept override
Definition DelimFileReader.cpp:24
DelimFileReader(const PathType &file_path, const DelimsType &delims, const std::size_t average_token_size=0u)
Definition DelimFileReader.cpp:8
Definition ITokenizer.hpp:8
FileSystem::FileContentType TokenType
Definition ITokenizer.hpp:10
std::filesystem::path PathType
Definition FileSystem.hpp:9
typename FileContentType::value_type FileCharType
Definition FileSystem.hpp:13