From d7823f32275a5bd7fbe5f013fa8d9aebecce8eb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Can=20B=C3=B6l=C3=BCk?= Date: Sat, 29 Aug 2020 05:43:43 +0200 Subject: [PATCH] Table should accept convertible iterables as well. --- VTIL-Common/io/table_view.hpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/VTIL-Common/io/table_view.hpp b/VTIL-Common/io/table_view.hpp index 09fc9d4..eda838e 100644 --- a/VTIL-Common/io/table_view.hpp +++ b/VTIL-Common/io/table_view.hpp @@ -71,14 +71,15 @@ namespace vtil::format table_rendering_configuration config; std::array labels; - constexpr table_view( C&& data_source, std::initializer_list vlabels, table_rendering_configuration config = {} ) + template> requires Convertible, std::string_view> + constexpr table_view( C&& data_source, I&& vlabels, table_rendering_configuration config = {} ) : data_source( std::forward( data_source ) ), config( std::move( config ) ) { - auto it = vlabels.begin(); + auto it = std::begin( vlabels ); for ( size_t i = 0; i < field_count; i++ ) { - if ( it == vlabels.end() ) labels[ i ] = ""; - else labels[ i ] = *it++; + if ( it == std::end( vlabels ) ) labels[ i ] = ""; + else labels[ i ] = *it++; } } @@ -160,7 +161,7 @@ namespace vtil::format fill( config.horizontal_delimiter, line_length ); rendl(); }; - auto write_fields = [ & ] ( const auto& fields ) + auto write_entry = [ & ] ( const auto& fields ) { begl(); write( config.vertical_delimiter, ' ' ); @@ -206,10 +207,10 @@ namespace vtil::format // Format the whole table and return the result. // write_table_limit(); - write_fields( labels ); + write_entry( labels ); write_label_delim(); for( auto& fields : string_entries ) - write_fields( fields ); + write_entry( fields ); write_overflow_delim(); write_table_limit(); return result; @@ -220,4 +221,6 @@ namespace vtil::format // template table_view( C&&, std::initializer_list )->table_view; template table_view( C&&, std::initializer_list, table_rendering_configuration )->table_view; + template table_view( C&&, I&& )->table_view; + template table_view( C&&, I&&, table_rendering_configuration )->table_view; }; \ No newline at end of file