guanaqo 1.0.0-alpha.27
Utilities for scientific software
Loading...
Searching...
No Matches
csv.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file
4/// @ingroup io
5/// Reading matrices and vectors from CSV files.
6
7#include <guanaqo/export.h>
9#include <concepts>
10#include <cstddef>
11#include <iosfwd>
12#include <span>
13#include <stdexcept>
14#include <vector>
15
16namespace guanaqo::io {
17
18/// @addtogroup io
19/// @{
20
21struct GUANAQO_EXPORT csv_read_error : std::runtime_error {
22 using std::runtime_error::runtime_error;
23};
24
25template <class F>
26 requires(std::floating_point<F> || std::integral<F>)
27void GUANAQO_EXPORT csv_read_row(std::istream &is, std::span<F> v,
28 char sep = ',');
29
30template <class F, size_t E>
31 requires(E != std::dynamic_extent)
32void GUANAQO_EXPORT csv_read_row(std::istream &is, std::span<F, E> v,
33 char sep = ',') {
34 csv_read_row(is, std::span<F, std::dynamic_extent>{v}, sep);
35}
36
37template <class F>
38 requires(std::floating_point<F> || std::integral<F>)
39void GUANAQO_EXPORT csv_read(std::istream &is,
41 char sep = ',');
42
43template <class F, class I, class S>
44 requires(!std::same_as<I, ptrdiff_t> || !std::same_as<S, ptrdiff_t>)
45void GUANAQO_EXPORT csv_read(std::istream &is, MatrixView<F, I, S> M,
46 char sep = ',') {
47 csv_read(is,
49 {.data = M.data,
50 .rows = static_cast<ptrdiff_t>(M.rows),
51 .cols = static_cast<ptrdiff_t>(M.cols),
52 .inner_stride = static_cast<ptrdiff_t>(M.inner_stride),
53 .outer_stride = static_cast<ptrdiff_t>(M.outer_stride)}},
54 sep);
55}
56
57template <class F>
58 requires(std::floating_point<F> || std::integral<F>)
59std::vector<F> GUANAQO_EXPORT csv_read_row_std_vector(std::istream &is,
60 char sep = ',');
61
62/// @}
63
64} // namespace guanaqo::io
void csv_read_row(std::istream &is, std::span< F > v, char sep)
Definition csv.tpp:157
std::vector< F > csv_read_row_std_vector(std::istream &is, char sep)
Definition csv.tpp:180
void csv_read(std::istream &is, MatrixView< F, ptrdiff_t, ptrdiff_t > v, char sep)
Definition csv.tpp:167
Non-owning matrix view.
A lightweight view of a 2D matrix.
Definition mat-view.hpp:68
index_type outer_stride
Definition mat-view.hpp:80
inner_stride_type inner_stride
Definition mat-view.hpp:79
value_type * data
Definition mat-view.hpp:76