[A] Add function ft_row_count

This commit is contained in:
seleznevae 2020-01-10 21:22:41 +03:00
parent c81d23e468
commit 628b509991
10 changed files with 67 additions and 8 deletions

View File

@ -5,6 +5,7 @@
- Add functions to check if table is empty to the API.
- `ft_ln` returns status of operation.
- Add new table property `adding_strategy` (2 strategies available - replace(default) and insert).
- Add function `ft_row_count` (`row_count` in C++ API) to get number of rows in the table.
## v0.3.2

View File

@ -40,6 +40,7 @@ These pages contain the API documentation of **libfort** - simple library to cre
- @link ft_set_memory_funcs ft_set_memory_funcs @endlink -- set memory allocation functions for the library
- @link ft_set_default_printf_field_separator ft_set_default_printf_field_separator @endlink -- Set field separator for ft_printf, ft_printf_ln
- @link ft_is_empty ft_is_empty @endlink -- check if table is empty
- @link ft_row_count ft_row_count @endlink -- get number of rows in the table
- Data structures and types
- @link ft_table_t ft_table_t @endlink -- table handler
@ -76,6 +77,7 @@ These pages contain the API documentation of **libfort** - simple library to cre
- @link fort::table::row row @endlink -- get row
- @link fort::table::column column @endlink -- get column
- @link fort::table::is_empty is_empty @endlink -- check if table is empty
- @link fort::table::row_count row_count @endlink -- get number of rows in the table
- @link fort::property_owner fort::property_owner @endlink -- base class for all objects (table, row, column, cell) for which user can specify properties
- Modify appearance

View File

@ -2797,10 +2797,13 @@ void ft_set_cur_cell(ft_table_t *table, size_t row, size_t col)
int ft_is_empty(const ft_table_t *table)
{
assert(table);
if (table->rows == NULL || (vector_size(table->rows) == 0))
return 1;
else
return 0;
return ft_row_count(table) == 0;
}
size_t ft_row_count(const ft_table_t *table)
{
assert(table && table->rows);
return vector_size(table->rows);
}
static int ft_row_printf_impl_(ft_table_t *table, size_t row, const struct f_string_view *fmt, va_list *va)

View File

@ -330,6 +330,16 @@ void ft_set_cur_cell(ft_table_t *table, size_t row, size_t col);
*/
int ft_is_empty(const ft_table_t *table);
/**
* Get number of rows in the table.
*
* @param table
* Pointer to formatted table.
* @return
* Number of rows in the table.
*/
size_t ft_row_count(const ft_table_t *table);
#if defined(FT_CLANG_COMPILER) || defined(FT_GCC_COMPILER)
/**

View File

@ -1069,6 +1069,18 @@ public:
return ft_is_empty(table_);
}
/**
* Get number of rows in the table.
*
* @return
* Number of rows in the table.
*/
std::size_t
row_count() const noexcept
{
return ft_row_count(table_);
}
/**
* Get current cell.
*

View File

@ -330,6 +330,16 @@ void ft_set_cur_cell(ft_table_t *table, size_t row, size_t col);
*/
int ft_is_empty(const ft_table_t *table);
/**
* Get number of rows in the table.
*
* @param table
* Pointer to formatted table.
* @return
* Number of rows in the table.
*/
size_t ft_row_count(const ft_table_t *table);
#if defined(FT_CLANG_COMPILER) || defined(FT_GCC_COMPILER)
/**

View File

@ -1069,6 +1069,18 @@ public:
return ft_is_empty(table_);
}
/**
* Get number of rows in the table.
*
* @return
* Number of rows in the table.
*/
std::size_t
row_count() const noexcept
{
return ft_row_count(table_);
}
/**
* Get current cell.
*

View File

@ -224,10 +224,13 @@ void ft_set_cur_cell(ft_table_t *table, size_t row, size_t col)
int ft_is_empty(const ft_table_t *table)
{
assert(table);
if (table->rows == NULL || (vector_size(table->rows) == 0))
return 1;
else
return 0;
return ft_row_count(table) == 0;
}
size_t ft_row_count(const ft_table_t *table)
{
assert(table && table->rows);
return vector_size(table->rows);
}
static int ft_row_printf_impl_(ft_table_t *table, size_t row, const struct f_string_view *fmt, va_list *va)

View File

@ -198,6 +198,7 @@ void test_table_basic(void)
table = ft_create_table();
assert_true(table != NULL);
assert_true(ft_is_empty(table) == 1);
assert_true(ft_row_count(table) == 0);
const char *table_str = ft_to_string(table);
assert_true(table_str != NULL);
@ -217,6 +218,7 @@ void test_table_basic(void)
ft_set_cur_cell(table, 5, 6);
assert_true(ft_is_empty(table) == 1);
assert_true(ft_row_count(table) == 0);
ft_destroy_table(table);
}
@ -226,6 +228,7 @@ void test_table_basic(void)
assert_true(ft_is_empty(table) == 1);
assert_true(ft_write_ln(table, "") == FT_SUCCESS);
assert_true(ft_is_empty(table) == 0);
assert_true(ft_row_count(table) == 1);
const char *table_str = ft_to_string(table);
const char *table_str_etalon =
@ -247,6 +250,7 @@ void test_table_basic(void)
assert_true(ft_write_ln(table, "3", "c", "234", "3.140000") == FT_SUCCESS);
assert_true(ft_write_ln(table, "3", "c", "234", "3.140000") == FT_SUCCESS);
assert_true(ft_is_empty(table) == 0);
assert_true(ft_row_count(table) == 3);
const char *table_str = ft_to_string(table);
assert_true(table_str != NULL);

View File

@ -38,6 +38,7 @@ void test_cpp_table_basic(void)
std::string table_str_etalon = "";
assert_string_equal(table_str, table_str_etalon);
assert_true(table.is_empty());
assert_true(table.row_count() == 0);
}
WHEN("All columns are equal and not empty.") {
@ -66,6 +67,7 @@ void test_cpp_table_basic(void)
"+---+---+-----+----------+\n";
assert_string_equal(table_str, table_str_etalon);
assert_true(table.is_empty() == false);
assert_true(table.row_count() == 3);
}
WHEN("Checking basic constructors and assignmets.") {