24 virtual std::unique_ptr<const ResourceIO>
with_root(
const std::string &root)
const = 0;
28 virtual bool exists(
const std::string &path)
const = 0;
29 virtual bool is_group(
const std::string &path)
const = 0;
30 virtual std::vector<std::string>
list(
const std::string &path)
const = 0;
33 std::vector<std::string>
glob(
const std::string &pattern)
const;
34 virtual std::unique_ptr<std::istream>
open(
const std::string &path,
bool binary)
const = 0;
35 virtual std::string
read_string(
const std::string &path)
const;
36 virtual Eigen::MatrixXd
read_matrix(
const std::string &path)
const = 0;
41 virtual bool has_attribute(
const std::string &path,
const std::string &name)
const = 0;
45 const std::string &path,
const std::string &name)
const = 0;
46 virtual std::filesystem::path
materialize(
const std::string &path)
const = 0;
50 virtual std::string
describe(
const std::string &path)
const = 0;
67 const std::filesystem::path &root,
70 std::unique_ptr<const ResourceIO>
with_root(
const std::string &root)
const override;
72 bool exists(
const std::string &path)
const override;
73 bool is_group(
const std::string &path)
const override;
74 std::vector<std::string>
list(
const std::string &path)
const override;
75 std::unique_ptr<std::istream>
open(
const std::string &path,
bool binary)
const override;
76 Eigen::MatrixXd
read_matrix(
const std::string &path)
const override;
77 Eigen::MatrixXi
read_int_matrix(
const std::string &path)
const override;
79 std::vector<int>
read_int_vector(
const std::string &path)
const override;
81 bool has_attribute(
const std::string &path,
const std::string &name)
const override;
85 const std::string &path,
const std::string &name)
const override;
86 std::filesystem::path
materialize(
const std::string &path)
const override;
88 std::string
describe(
const std::string &path)
const override;
90 std::filesystem::path
resolve(
const std::string &path)
const;
105 const std::filesystem::path &file,
106 const std::string &root =
"/",
108 const std::string &storage_root =
"");
111 std::unique_ptr<const ResourceIO>
with_root(
const std::string &root)
const override;
113 bool exists(
const std::string &path)
const override;
114 bool is_group(
const std::string &path)
const override;
115 std::vector<std::string>
list(
const std::string &path)
const override;
116 std::unique_ptr<std::istream>
open(
const std::string &path,
bool binary)
const override;
117 std::string
read_string(
const std::string &path)
const override;
118 Eigen::MatrixXd
read_matrix(
const std::string &path)
const override;
119 Eigen::MatrixXi
read_int_matrix(
const std::string &path)
const override;
121 std::vector<int>
read_int_vector(
const std::string &path)
const override;
123 bool has_attribute(
const std::string &path,
const std::string &name)
const override;
127 const std::string &path,
const std::string &name)
const override;
128 std::filesystem::path
materialize(
const std::string &path)
const override;
130 std::string
describe(
const std::string &path)
const override;
135 std::string
resolve(
const std::string &path)
const;
std::filesystem::path host_directory_
bool has_attribute(const std::string &path, const std::string &name) const override
std::filesystem::path resolve(const std::string &path) const
std::filesystem::path root_
bool exists(const std::string &path) const override
long read_integer_attribute(const std::string &path, const std::string &name) const override
std::unique_ptr< const ResourceIO > with_root(const std::string &root) const override
std::string read_string_attribute(const std::string &path, const std::string &name) const override
std::vector< std::string > list(const std::string &path) const override
std::vector< int > read_int_vector(const std::string &path) const override
std::filesystem::path materialize(const std::string &path) const override
bool is_group(const std::string &path) const override
Eigen::MatrixXd read_matrix(const std::string &path) const override
std::vector< long > read_long_vector(const std::string &path) const override
std::string canonical_path(const std::string &path) const override
Absolute resource identity, independent of the active reader root.
std::unique_ptr< std::istream > open(const std::string &path, bool binary) const override
Eigen::MatrixXi read_int_matrix(const std::string &path) const override
std::vector< double > read_double_vector(const std::string &path) const override
const std::filesystem::path & host_directory() const override
Host directory used only as the base for ordinary filesystem outputs.
std::string describe(const std::string &path) const override
std::array< long, 2 > read_shape_attribute(const std::string &path, const std::string &name) const override
HDF5 logical paths always use POSIX separators and roots.
std::vector< int > read_int_vector(const std::string &path) const override
std::vector< long > read_long_vector(const std::string &path) const override
std::filesystem::path file_path_
bool has_attribute(const std::string &path, const std::string &name) const override
std::unique_ptr< std::istream > open(const std::string &path, bool binary) const override
std::string read_string(const std::string &path) const override
long read_integer_attribute(const std::string &path, const std::string &name) const override
std::string logical_resolve(const std::string &path) const
std::filesystem::path materialize(const std::string &path) const override
std::shared_ptr< Impl > impl_
const std::string & logical_root() const
Eigen::MatrixXd read_matrix(const std::string &path) const override
std::filesystem::path host_directory_
std::vector< std::string > list(const std::string &path) const override
bool is_group(const std::string &path) const override
bool exists(const std::string &path) const override
const std::filesystem::path & file_path() const
std::string storage_root_
std::vector< double > read_double_vector(const std::string &path) const override
std::unique_ptr< const ResourceIO > with_root(const std::string &root) const override
std::array< long, 2 > read_shape_attribute(const std::string &path, const std::string &name) const override
std::string describe(const std::string &path) const override
Eigen::MatrixXi read_int_matrix(const std::string &path) const override
std::string resolve(const std::string &path) const
std::string canonical_path(const std::string &path) const override
Absolute resource identity, independent of the active reader root.
std::string read_string_attribute(const std::string &path, const std::string &name) const override
const std::filesystem::path & host_directory() const override
Host directory used only as the base for ordinary filesystem outputs.
Read-only interface to a hierarchical collection of simulation resources.
virtual std::array< long, 2 > read_shape_attribute(const std::string &path, const std::string &name) const =0
virtual std::vector< int > read_int_vector(const std::string &path) const =0
std::vector< std::string > accessed_resources() const
A snapshot of canonical paths consumed so far, including solver setup.
virtual Eigen::MatrixXi read_int_matrix(const std::string &path) const =0
void record_access(const std::string &path) const
virtual std::vector< std::string > list(const std::string &path) const =0
virtual ~ResourceIO()=default
std::vector< std::string > glob(const std::string &pattern) const
Glob normalized logical paths using POSIX '*' and '?' wildcards.
virtual std::string read_string(const std::string &path) const
virtual std::string read_string_attribute(const std::string &path, const std::string &name) const =0
virtual std::string canonical_path(const std::string &path) const =0
Absolute resource identity, independent of the active reader root.
virtual std::unique_ptr< const ResourceIO > with_root(const std::string &root) const =0
std::shared_ptr< AccessTracker > access_tracker_
virtual const std::filesystem::path & host_directory() const =0
Host directory used only as the base for ordinary filesystem outputs.
virtual long read_integer_attribute(const std::string &path, const std::string &name) const =0
virtual std::filesystem::path materialize(const std::string &path) const =0
virtual bool has_attribute(const std::string &path, const std::string &name) const =0
virtual std::string describe(const std::string &path) const =0
virtual std::vector< double > read_double_vector(const std::string &path) const =0
virtual bool exists(const std::string &path) const =0
virtual std::unique_ptr< std::istream > open(const std::string &path, bool binary) const =0
virtual Eigen::MatrixXd read_matrix(const std::string &path) const =0
virtual std::vector< long > read_long_vector(const std::string &path) const =0
virtual bool is_group(const std::string &path) const =0