[A] Add function ft_row_count
				
					
				
			This commit is contained in:
		@@ -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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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)
 | 
			
		||||
{
 | 
			
		||||
    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)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 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)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								lib/fort.hpp
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								lib/fort.hpp
									
									
									
									
									
								
							@@ -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.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 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)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								src/fort.hpp
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/fort.hpp
									
									
									
									
									
								
							@@ -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.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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.") {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user