JASSv2
instream_directory_iterator.h
Go to the documentation of this file.
1 /*
2  INSTREAM_DIRECTORY_ITERATOR.H
3  -----------------------------
4  Copyright (c) 2016 Andrew Trotman
5  Released under the 2-clause BSD license (See:https://en.wikipedia.org/wiki/BSD_licenses)
6 */
13 #pragma once
14 
15 #include <filesystem>
16 
17 #include "instream.h"
18 
19 namespace JASS
20  {
21  /*
22  CLASS INSTREAM_DIRECTORY_ITERATOR
23  ---------------------------------
24  */
29  {
30  protected:
31  std::filesystem::directory_iterator source;
32  std::filesystem::directory_iterator current;
33  std::filesystem::directory_iterator last;
34 
35  std::shared_ptr<instream> reader;
36  size_t bytes_read;
37 
38  public:
39  /*
40  INSTREAM_DIRECTORY_ITERATOR::INSTREAM_DIRECTORY_ITERATOR()
41  ----------------------------------------------------------
42  */
47  instream_directory_iterator(const std::string &directory_name);
48 
49  /*
50  INSTREAM_DIRECTORY_ITERATOR::~INSTREAM_DIRECTORY_ITERATOR()
51  -----------------------------------------------------------
52  */
57  {
58  /* Nothing */
59  }
60 
61  /*
62  INSTREAM_DIRECTORY_ITERATOR::READ()
63  -----------------------------------
64  */
69  virtual void read(document &buffer);
70 
71  /*
72  INSTREAM_DIRECTORY_ITERATOR::UNITTEST()
73  ---------------------------------------
74  */
78  static void unittest(void);
79  };
80 }
81 
Subclass of instream for reading data from multiple files in a directory (as if they were all concati...
Definition: instream_directory_iterator.h:28
std::shared_ptr< instream > reader
A chain of instram objects responsible for sourcing the data.
Definition: instream_directory_iterator.h:35
instream_directory_iterator(const std::string &directory_name)
Constructor.
Definition: instream_directory_iterator.cpp:20
std::filesystem::directory_iterator source
Use the C++17 directory iterator.
Definition: instream_directory_iterator.h:31
virtual void read(document &buffer)
Read buffer.contents.size() bytes of data into buffer.contents, resizing on eof.
Definition: instream_directory_iterator.cpp:32
Read data from an input stream.
Definition: instream.h:45
size_t bytes_read
The number of bytes that have been read from the file.
Definition: instream_directory_iterator.h:36
Container class representing a document through the indexing pipeline.
Definition: document.h:31
std::filesystem::directory_iterator current
Where we are in the current iteration.
Definition: instream_directory_iterator.h:32
virtual ~instream_directory_iterator()
Destructor.
Definition: instream_directory_iterator.h:56
Base class for reading data from some input source.
std::filesystem::directory_iterator last
The point where the iterator finishes iterating.
Definition: instream_directory_iterator.h:33
Definition: compress_integer_elias_delta_simd.c:23
static void unittest(void)
Unit test this class.
Definition: instream_directory_iterator.cpp:87