59 bool set_has_header(
bool enabled)
noexcept;
66 bool set_delimiter(
char delimiter)
noexcept;
72 [[nodiscard]]
bool can_read(
const std::string& filepath)
const override;
80 bool open(
const std::string& filepath,
84 void close()
override;
87 [[nodiscard]]
bool is_open()
const override {
return m_file.is_open(); }
90 [[nodiscard]] std::optional<FileMetadata> get_metadata()
const override;
93 [[nodiscard]] std::vector<FileRegion>
get_regions()
const override {
return {}; }
99 [[nodiscard]] std::optional<Kakshya::CompositeArray>
100 read_composite()
override;
108 [[nodiscard]] std::optional<Kakshya::CompositeArray>
109 read_next(
size_t max_elements)
override;
112 [[nodiscard]] std::optional<Kakshya::CompositeLayout>
121 return { m_row_position };
133 bool seek(
const std::vector<uint64_t>&
position)
override;
138 return {
"csv",
"tsv" };
164 std::streampos m_data_start {};
165 uint64_t m_row_position {};
168 char m_active_delimiter {};
169 bool m_has_header {
true };
172 [[nodiscard]]
bool read_record(
173 std::vector<ParsedField>& fields,
bool& at_end);
175 [[nodiscard]]
bool append_record(
177 const std::vector<ParsedField>& fields);
std::optional< glm::vec3 > position
Typed FileReader boundary for schema-bearing Composite data.
std::optional< Kakshya::CompositeLayout > m_requested_layout
std::optional< Kakshya::CompositeLayout > get_layout() const override
Copy the layout established by open(), if available.
bool supports_streaming() const override
Bounded sequential reads are supported.
DelimitedTextReader()=default
std::vector< FileRegion > get_regions() const override
Delimited text does not declare semantic file regions.
bool is_open() const override
Whether a file is currently open.
std::vector< uint64_t > get_dimension_sizes() const override
Total element count is not known without scanning the file.
~DelimitedTextReader() override
std::vector< uint64_t > get_read_position() const override
Zero-based index of the next data record.
uint64_t get_preferred_chunk_size() const override
Suggested number of records per bounded read.
std::optional< Kakshya::CompositeLayout > m_layout
std::vector< std::string > get_supported_extensions() const override
Supported file extensions without dots.
size_t get_num_dimensions() const override
Delimited data has one element axis.
Incremental CSV and TSV reader producing CompositeArray values.
Owns a sequence of values that share a CompositeLayout.
Shared field description and byte layout for a CompositeArray.
FileReadOptions
Generic options for file reading behavior.