16namespace data_table_detail
25 stream.write(
text.data(),
static_cast<std::streamsize
>(
text.size()));
47 else if constexpr (std::same_as<T, std::string>)
49 else if constexpr (runtime_real<T>)
53 out <<
",\"precision\":";
57 out << fmt::format(
"{}",
value.precision().bit_count());
82 out <<
",\"description\":";
85 if constexpr (half_integer<V>)
87 out <<
"\"half_int\",\"storage_bits\":"
90 else if constexpr (runtime_real<V>)
91 out <<
"\"real\",\"radix\":2,\"precision\":\"per_value\",\"encoding\":\"value_precision\"";
96 <<
",\"encoding\":\"decimal_string\"";
100 write_json_string(out.stream, fmt::format(
"{}int{}", std::is_signed_v<V> ?
"" :
"u",
102 out <<
",\"encoding\":";
105 else if constexpr (std::same_as<V, bool>)
112template <
typename Schema,
typename Row>
118 if (!std::exchange(first,
false)) out.put(
',');
129 for (
auto const& [key,
value] : metadata)
131 if (!std::exchange(first,
false)) out.put(
',');
139template <
typename Schema>
144 out <<
"{\"title\":";
146 out <<
",\"metadata\":";
148 out <<
",\"first_row\":" << fmt::format(
"{}", start.
first_row) <<
",\"columns\":[";
150 for (
auto index : selection.
indices)
152 if (!std::exchange(first,
false)) out.put(
',');
155 out <<
"],\"rows\":[";
164 out <<
",\"summary\":";
178template <DataTableValue... Ts>
181 auto rows = table.rows();
183 data_table_detail::json_output out{stream};
186 for (
auto const&
row : rows)
188 if (!std::exchange(first,
false)) out.put(
',');
Typed column schema with owned metadata and deferred display formatting.
Definition data_table.hpp:206
data_column & label(std::string text)
Definition data_table.hpp:218
data_column & description(std::string text)
Definition data_table.hpp:228
std::string const & identifier() const noexcept
Definition data_table.hpp:283
data_column & unit(std::string text)
Definition data_table.hpp:223
Typed result table with synchronous sinks and optional retained history.
Definition data_table.hpp:404
Concept for real scalar types (float, double, etc.).
Definition scalar_concepts.hpp:69
Definition data_table.hpp:48
locale_t value
Definition data_table.cpp:49
Typed result tables with deferred presentation and numerical export.
presentation::styled_text text
Definition display.cpp:141
streaming_table table(std::string title, stream destination)
Create a schema-first streaming display table.
Definition display.cpp:800
void write_json_column(json_output &out, data_column< T > const &column)
Definition data_table_json.hpp:73
void visit_selected(Schema const &schema, Row const &row, resolved_projection const &selection, Function &&function)
Definition data_table.hpp:719
void write_json_value(json_output &out, T const &value)
Definition data_table_json.hpp:38
void write_json_end(json_output &out, table_metadata const *summary)
Definition data_table_json.hpp:159
void check_output(std::ostream &out)
Definition data_table.cpp:40
resolved_projection resolve_projection(Schema const &schema, table_projection const &options)
Definition data_table.hpp:688
void visit_column(Schema const &schema, std::size_t index, Function &&function)
Definition data_table.hpp:681
std::string cell_text(T const &value, data_column_display const &display, bool machine)
Definition data_table.hpp:636
void write_json_begin(json_output &out, std::string const &title, Schema const &schema, table_metadata const &metadata, resolved_projection const &selection, data_sink_start start)
Definition data_table_json.hpp:140
void write_json_string(std::ostream &out, std::string_view value)
Definition data_table.cpp:71
void write_json_row(json_output &out, Schema const &schema, Row const &row, resolved_projection const &selection)
Definition data_table_json.hpp:113
void write_json_metadata(json_output &out, table_metadata const &metadata)
Definition data_table_json.hpp:125
typename optional_traits< T >::value_type value_type
Definition data_table.hpp:42
Definition data_table.cpp:8
std::map< std::string, std::string > table_metadata
Application metadata is owned text, independent of numerical rows.
Definition data_table.hpp:314
void write_json(std::ostream &stream, data_table< Ts... > const &table, data_json_options const &options={})
Write an ordered schema and typed rows, preserving real and integer precision.
Definition data_table_json.hpp:179
Project-level numeric limits customization point.
Definition numeric_limits.hpp:16
Ordered JSON column selection. Empty selects every column; display precision is never applied.
Definition data_table_json.hpp:12
std::vector< std::string > columns
Definition data_table_json.hpp:13
The index of the first row this attachment can emit (zero for full replay).
Definition data_table.hpp:344
std::size_t first_row
Definition data_table.hpp:345
Definition data_table_json.hpp:20
void put(char c)
Definition data_table_json.hpp:22
json_output & operator<<(char c)
Definition data_table_json.hpp:28
json_output & operator<<(std::string_view text)
Definition data_table_json.hpp:23
std::ostream & stream
Definition data_table_json.hpp:21
Definition data_table.hpp:33
Definition data_table.hpp:675
std::vector< std::size_t > indices
Definition data_table.hpp:676