Tatooine
reader.h
Go to the documentation of this file.
1#ifndef TATOOINE_VTK_XML_READER_H
2#define TATOOINE_VTK_XML_READER_H
3//==============================================================================
5#include <tatooine/parse.h>
13
14#include <array>
15#include <cstring>
16#include <fstream>
17#include <optional>
18#include <rapidxml.hpp>
19#include <sstream>
20#include <string>
21#include <vector>
22//==============================================================================
23namespace tatooine::vtk::xml {
24//==============================================================================
25struct reader {
26 //==============================================================================
27 // MEMBERS
28 //==============================================================================
29 private:
33 std::string m_version = "";
34 filesystem::path m_path = {};
35 mutable std::ifstream m_file;
36 rapidxml::xml_document<> m_doc;
37 std::size_t m_begin_appended_data = {};
38
39 std::optional<xml::image_data> m_image_data;
40 std::optional<xml::rectilinear_grid> m_rectilinear_grid;
41 std::optional<xml::structured_grid> m_structured_grid;
42 std::optional<xml::poly_data> m_poly_data;
43 std::optional<xml::unstructured_grid> m_unstructured_grid;
44
45 public:
46 auto type() const { return m_type; }
47 auto byte_order() const { return m_byte_order; }
48 auto version() const -> auto const& { return m_version; }
49 auto image_data() const -> auto const& { return m_image_data; }
50 auto rectilinear_grid() const -> auto const& { return m_rectilinear_grid; }
51 auto structured_grid() const -> auto const& { return m_structured_grid; }
52 auto poly_data() const -> auto const& { return m_poly_data; }
53 auto unstructured_grid() const -> auto const& { return m_unstructured_grid; }
54 auto file() const -> auto const& { return m_file; }
55 auto file() -> auto& { return m_file; }
56 auto xml_document() const -> auto const& { return m_doc; }
57 auto xml_document() -> auto& { return m_doc; }
58
60 auto read_appended_data_size(std::size_t offset) const -> std::size_t;
63 auto read_appended_data(char* data, std::size_t num_bytes,
64 std::size_t offset) const -> void;
65
66 //==============================================================================
67 // CTORS
68 //==============================================================================
69 reader(filesystem::path const& path);
70 ~reader() { m_file.close(); }
71 //==============================================================================
72 // STATIC METHODS
73 //==============================================================================
76 auto extract_appended_data(std::string& content) -> void;
77 //==============================================================================
78 // METHODS
79 //==============================================================================
80 auto read_meta() -> void;
81};
82//==============================================================================
83} // namespace tatooine::vtk::xml
84//==============================================================================
85#endif
Definition: byte_order.h:6
byte_order
Definition: byte_order.h:8
vtk_type
Definition: vtk_type.h:10
data_type
Definition: data_type.h:11
Definition: reader.h:25
std::ifstream m_file
Definition: reader.h:35
~reader()
Definition: reader.h:70
reader(filesystem::path const &path)
auto xml_document() -> auto &
Definition: reader.h:57
auto xml_document() const -> auto const &
Definition: reader.h:56
auto structured_grid() const -> auto const &
Definition: reader.h:51
xml::data_type m_header_type
Definition: reader.h:32
auto read_appended_data(char *data, std::size_t num_bytes, std::size_t offset) const -> void
std::optional< xml::structured_grid > m_structured_grid
Definition: reader.h:41
auto byte_order() const
Definition: reader.h:47
auto read_appended_data_size(std::size_t offset) const -> std::size_t
Returns number of bytes of the following data block.
rapidxml::xml_document m_doc
Definition: reader.h:36
xml::byte_order m_byte_order
Definition: reader.h:31
filesystem::path m_path
Definition: reader.h:34
std::optional< xml::image_data > m_image_data
Definition: reader.h:39
std::string m_version
Definition: reader.h:33
std::optional< xml::rectilinear_grid > m_rectilinear_grid
Definition: reader.h:40
auto version() const -> auto const &
Definition: reader.h:48
auto file() -> auto &
Definition: reader.h:55
auto type() const
Definition: reader.h:46
auto image_data() const -> auto const &
Definition: reader.h:49
auto unstructured_grid() const -> auto const &
Definition: reader.h:53
std::optional< xml::poly_data > m_poly_data
Definition: reader.h:42
auto file() const -> auto const &
Definition: reader.h:54
std::optional< xml::unstructured_grid > m_unstructured_grid
Definition: reader.h:43
auto poly_data() const -> auto const &
Definition: reader.h:52
std::size_t m_begin_appended_data
Definition: reader.h:37
auto extract_appended_data(std::string &content) -> void
auto rectilinear_grid() const -> auto const &
Definition: reader.h:50
vtk_type m_type
Definition: reader.h:30