From d21052db06b28defd7a1094a88ebe65d331b9622 Mon Sep 17 00:00:00 2001 From: seleznevae Date: Sun, 25 Feb 2018 21:43:20 +0300 Subject: [PATCH] [C] Refactoring --- include/fort.h | 2 ++ src/fort.c | 18 ++++++++++++++++++ src/options.c | 28 ++++++++++++++-------------- src/options.h | 6 +++--- tests/test_table.c | 13 +++++++++---- 5 files changed, 46 insertions(+), 21 deletions(-) diff --git a/include/fort.h b/include/fort.h index 53c6bce..2e1c3dc 100644 --- a/include/fort.h +++ b/include/fort.h @@ -272,6 +272,8 @@ FORT_EXTERN int ft_set_table_borders(FTABLE * FORT_RESTRICT table, struct border FORT_EXTERN int ft_set_default_option(uint32_t option, int value); FORT_EXTERN int ft_set_table_option(FTABLE * FORT_RESTRICT table, uint32_t option, int value); +FORT_EXTERN int ft_set_cell_option(FTABLE * FORT_RESTRICT table, unsigned row, unsigned col, uint32_t option, int value); + FORT_END_DECLS diff --git a/src/fort.c b/src/fort.c index ec19f57..513b1c7 100644 --- a/src/fort.c +++ b/src/fort.c @@ -754,3 +754,21 @@ int ft_set_table_option(FTABLE *table, uint32_t option, int value) } + +int ft_set_cell_option(FTABLE *table, unsigned row, unsigned col, uint32_t option, int value) +{ + assert(table); + + if (table->options == NULL) { + table->options = create_table_options(); + if (table->options == NULL) + return F_MEMORY_ERROR; + } + if (table->options->cell_options == NULL) { + table->options->cell_options = create_cell_opt_container(); + if (table->options->cell_options == NULL) { + return F_ERROR; + } + } + return set_cell_option(table->options->cell_options, row, col, option, value); +} diff --git a/src/options.c b/src/options.c index 79bc936..61c3265 100644 --- a/src/options.c +++ b/src/options.c @@ -146,7 +146,7 @@ fort_table_options_t g_table_options = { '+', '=', '+', '+', }, - NULL, /* col_options */ +// NULL, /* col_options */ NULL, /* cell_options */ }; @@ -194,16 +194,16 @@ void destroy_table_options(fort_table_options_t* options) if (options == NULL) return; - if (options->col_options != NULL) { - destroy_vector(options->col_options); - } +// if (options->col_options != NULL) { +// destroy_vector(options->col_options); +// } if (options->cell_options != NULL) { destroy_cell_opt_container(options->cell_options); } F_FREE(options); } - +/* #define FORT_OPTIONS_SET_COLUMN_OPTION(options, column, opt_name, opt_value) \ assert(options);\ \ @@ -221,17 +221,17 @@ void destroy_table_options(fort_table_options_t* options) fort_column_options_t *col_option = (fort_column_options_t*)vector_at(options->col_options, column);\ col_option->opt_name = opt_value;\ \ - return F_SUCCESS; + return F_SUCCESS;*/ -fort_status_t fort_options_set_column_min_width(fort_table_options_t *options, size_t column, size_t width) -{ - FORT_OPTIONS_SET_COLUMN_OPTION(options, column, col_min_width, width); -} +//fort_status_t fort_options_set_column_min_width(fort_table_options_t *options, size_t column, size_t width) +//{ +// FORT_OPTIONS_SET_COLUMN_OPTION(options, column, col_min_width, width); +//} -fort_status_t fort_options_set_column_alignment(fort_table_options_t *options, size_t column, enum TextAlignment al) -{ - FORT_OPTIONS_SET_COLUMN_OPTION(options, column, align, al); -} +//fort_status_t fort_options_set_column_alignment(fort_table_options_t *options, size_t column, enum TextAlignment al) +//{ +// FORT_OPTIONS_SET_COLUMN_OPTION(options, column, align, al); +//} //int fort_options_column_width(const fort_table_options_t *options, size_t column) //{ diff --git a/src/options.h b/src/options.h index 049d047..ae47268 100644 --- a/src/options.h +++ b/src/options.h @@ -133,7 +133,7 @@ struct fort_table_options char border_chars[BorderItemPosSize]; char header_border_chars[BorderItemPosSize]; char separator_chars[SepratorItemPosSize]; - vector_t *col_options; +// vector_t *col_options; fort_cell_opt_container_t * cell_options; }; @@ -146,8 +146,8 @@ extern fort_table_options_t g_table_options; fort_table_options_t* create_table_options(); fort_table_options_t* copy_table_options(const fort_table_options_t *option); void destroy_table_options(fort_table_options_t* options); -fort_status_t fort_options_set_column_min_width(fort_table_options_t *options, size_t column, size_t width); -fort_status_t fort_options_set_column_alignment(fort_table_options_t *options, size_t column, enum TextAlignment al); +//fort_status_t fort_options_set_column_min_width(fort_table_options_t *options, size_t column, size_t width); +//fort_status_t fort_options_set_column_alignment(fort_table_options_t *options, size_t column, enum TextAlignment al); int fort_options_column_width(const fort_table_options_t *options, size_t column); int fort_options_column_alignment(const fort_table_options_t *options, size_t column); diff --git a/tests/test_table.c b/tests/test_table.c index 96f9906..f576d1a 100644 --- a/tests/test_table.c +++ b/tests/test_table.c @@ -817,10 +817,15 @@ void test_table_options(void **state) table = create_test_int_table(0); int status = F_SUCCESS; - status |= ft_set_column_min_width(table, 1, 7); - status |= ft_set_column_alignment(table, 1, LeftAligned); - status |= ft_set_column_min_width(table, 2, 8); - status |= ft_set_column_alignment(table, 2, CenterAligned); +// status |= ft_set_column_min_width(table, 1, 7); +// status |= ft_set_column_alignment(table, 1, LeftAligned); +// status |= ft_set_column_min_width(table, 2, 8); +// status |= ft_set_column_alignment(table, 2, CenterAligned); + + status |= ft_set_cell_option(table, FT_ANY_ROW, 1, FT_OPT_MIN_WIDTH, 7); + status |= ft_set_cell_option(table, FT_ANY_ROW, 1, FT_OPT_TEXT_ALIGN, LeftAligned); + status |= ft_set_cell_option(table, FT_ANY_ROW, 2, FT_OPT_MIN_WIDTH, 8); + status |= ft_set_cell_option(table, FT_ANY_ROW, 2, FT_OPT_TEXT_ALIGN, CenterAligned); assert_true( status == F_SUCCESS);