Merge pull request #30 from seleznevae/issue-26_2
[A] Add function `ft_row_count`
This commit is contained in:
commit
85f275e41c
@ -5,6 +5,7 @@
|
|||||||
- Add functions to check if table is empty to the API.
|
- Add functions to check if table is empty to the API.
|
||||||
- `ft_ln` returns status of operation.
|
- `ft_ln` returns status of operation.
|
||||||
- Add new table property `adding_strategy` (2 strategies available - replace(default) and insert).
|
- 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
|
## v0.3.2
|
||||||
|
|
||||||
|
@ -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_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_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_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
|
- Data structures and types
|
||||||
- @link ft_table_t ft_table_t @endlink -- table handler
|
- @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::row row @endlink -- get row
|
||||||
- @link fort::table::column column @endlink -- get column
|
- @link fort::table::column column @endlink -- get column
|
||||||
- @link fort::table::is_empty is_empty @endlink -- check if table is empty
|
- @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
|
- @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
|
- Modify appearance
|
||||||
|
11
lib/fort.c
11
lib/fort.c
@ -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)
|
int ft_is_empty(const ft_table_t *table)
|
||||||
{
|
{
|
||||||
assert(table);
|
assert(table);
|
||||||
if (table->rows == NULL || (vector_size(table->rows) == 0))
|
return ft_row_count(table) == 0;
|
||||||
return 1;
|
}
|
||||||
else
|
|
||||||
return 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)
|
static int ft_row_printf_impl_(ft_table_t *table, size_t row, const struct f_string_view *fmt, va_list *va)
|
||||||
|
10
lib/fort.h
10
lib/fort.h
@ -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);
|
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)
|
#if defined(FT_CLANG_COMPILER) || defined(FT_GCC_COMPILER)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
12
lib/fort.hpp
12
lib/fort.hpp
@ -1069,6 +1069,18 @@ public:
|
|||||||
return ft_is_empty(table_);
|
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.
|
* Get current cell.
|
||||||
*
|
*
|
||||||
|
10
src/fort.h
10
src/fort.h
@ -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);
|
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)
|
#if defined(FT_CLANG_COMPILER) || defined(FT_GCC_COMPILER)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
12
src/fort.hpp
12
src/fort.hpp
@ -1069,6 +1069,18 @@ public:
|
|||||||
return ft_is_empty(table_);
|
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.
|
* Get current cell.
|
||||||
*
|
*
|
||||||
|
@ -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)
|
int ft_is_empty(const ft_table_t *table)
|
||||||
{
|
{
|
||||||
assert(table);
|
assert(table);
|
||||||
if (table->rows == NULL || (vector_size(table->rows) == 0))
|
return ft_row_count(table) == 0;
|
||||||
return 1;
|
}
|
||||||
else
|
|
||||||
return 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)
|
static int ft_row_printf_impl_(ft_table_t *table, size_t row, const struct f_string_view *fmt, va_list *va)
|
||||||
|
@ -198,6 +198,7 @@ void test_table_basic(void)
|
|||||||
table = ft_create_table();
|
table = ft_create_table();
|
||||||
assert_true(table != NULL);
|
assert_true(table != NULL);
|
||||||
assert_true(ft_is_empty(table) == 1);
|
assert_true(ft_is_empty(table) == 1);
|
||||||
|
assert_true(ft_row_count(table) == 0);
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
const char *table_str = ft_to_string(table);
|
||||||
assert_true(table_str != NULL);
|
assert_true(table_str != NULL);
|
||||||
@ -217,6 +218,7 @@ void test_table_basic(void)
|
|||||||
|
|
||||||
ft_set_cur_cell(table, 5, 6);
|
ft_set_cur_cell(table, 5, 6);
|
||||||
assert_true(ft_is_empty(table) == 1);
|
assert_true(ft_is_empty(table) == 1);
|
||||||
|
assert_true(ft_row_count(table) == 0);
|
||||||
ft_destroy_table(table);
|
ft_destroy_table(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,6 +228,7 @@ void test_table_basic(void)
|
|||||||
assert_true(ft_is_empty(table) == 1);
|
assert_true(ft_is_empty(table) == 1);
|
||||||
assert_true(ft_write_ln(table, "") == FT_SUCCESS);
|
assert_true(ft_write_ln(table, "") == FT_SUCCESS);
|
||||||
assert_true(ft_is_empty(table) == 0);
|
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 = ft_to_string(table);
|
||||||
const char *table_str_etalon =
|
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_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_is_empty(table) == 0);
|
||||||
|
assert_true(ft_row_count(table) == 3);
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
const char *table_str = ft_to_string(table);
|
||||||
assert_true(table_str != NULL);
|
assert_true(table_str != NULL);
|
||||||
|
@ -38,6 +38,7 @@ void test_cpp_table_basic(void)
|
|||||||
std::string table_str_etalon = "";
|
std::string table_str_etalon = "";
|
||||||
assert_string_equal(table_str, table_str_etalon);
|
assert_string_equal(table_str, table_str_etalon);
|
||||||
assert_true(table.is_empty());
|
assert_true(table.is_empty());
|
||||||
|
assert_true(table.row_count() == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WHEN("All columns are equal and not empty.") {
|
WHEN("All columns are equal and not empty.") {
|
||||||
@ -66,6 +67,7 @@ void test_cpp_table_basic(void)
|
|||||||
"+---+---+-----+----------+\n";
|
"+---+---+-----+----------+\n";
|
||||||
assert_string_equal(table_str, table_str_etalon);
|
assert_string_equal(table_str, table_str_etalon);
|
||||||
assert_true(table.is_empty() == false);
|
assert_true(table.is_empty() == false);
|
||||||
|
assert_true(table.row_count() == 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
WHEN("Checking basic constructors and assignmets.") {
|
WHEN("Checking basic constructors and assignmets.") {
|
||||||
|
Loading…
Reference in New Issue
Block a user