[C] Improved encapsulation
This commit is contained in:
parent
d2798da48d
commit
379af00762
@ -9,11 +9,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* CELL
|
* CELL
|
||||||
* ***************************************************************************/
|
* ***************************************************************************/
|
||||||
//struct fort_cell
|
|
||||||
//{
|
|
||||||
// string_buffer_t *str_buffer;
|
|
||||||
// fort_table_options_t *options;
|
|
||||||
//};
|
|
||||||
|
|
||||||
fort_cell_t * create_cell();
|
fort_cell_t * create_cell();
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ static int ft_row_printf_impl(FTABLE *FORT_RESTRICT table, size_t row, const cha
|
|||||||
*cur_row_p = new_row;
|
*cur_row_p = new_row;
|
||||||
table->cur_col = 0;
|
table->cur_col = 0;
|
||||||
table->cur_row++;
|
table->cur_row++;
|
||||||
return vector_size(new_row->cells);
|
return columns_in_row(new_row);
|
||||||
|
|
||||||
clear:
|
clear:
|
||||||
destroy_row(new_row);
|
destroy_row(new_row);
|
||||||
@ -151,7 +151,7 @@ int ft_hdr_printf(FTABLE *FORT_RESTRICT table, const char* FORT_RESTRICT fmt, ..
|
|||||||
if (result >= 0 && table->rows) {
|
if (result >= 0 && table->rows) {
|
||||||
int sz = vector_size(table->rows);
|
int sz = vector_size(table->rows);
|
||||||
if (sz != 0) {
|
if (sz != 0) {
|
||||||
(*(fort_row_t**)vector_at(table->rows, sz - 1))->is_header = F_TRUE;
|
set_row_type(*(fort_row_t**)vector_at(table->rows, sz - 1), Header);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
25
src/row.c
25
src/row.c
@ -5,6 +5,14 @@
|
|||||||
#include "vector.h"
|
#include "vector.h"
|
||||||
#include "ctype.h"
|
#include "ctype.h"
|
||||||
|
|
||||||
|
struct fort_row
|
||||||
|
{
|
||||||
|
vector_t *cells;
|
||||||
|
enum RowType type;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fort_row_t * create_row()
|
fort_row_t * create_row()
|
||||||
{
|
{
|
||||||
fort_row_t * row = F_CALLOC(sizeof(fort_row_t), 1);
|
fort_row_t * row = F_CALLOC(sizeof(fort_row_t), 1);
|
||||||
@ -15,7 +23,8 @@ fort_row_t * create_row()
|
|||||||
F_FREE(row);
|
F_FREE(row);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
row->is_header = F_FALSE;
|
// row->is_header = F_FALSE;
|
||||||
|
row->type = Common;
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,7 +127,7 @@ int print_row_separator(char *buffer, size_t buffer_sz,
|
|||||||
|
|
||||||
const fort_row_t *main_row = NULL;
|
const fort_row_t *main_row = NULL;
|
||||||
if (upper_row != NULL && lower_row != NULL) {
|
if (upper_row != NULL && lower_row != NULL) {
|
||||||
main_row = lower_row->is_header == F_TRUE ? lower_row : upper_row;
|
main_row = lower_row->type == Header ? lower_row : upper_row;
|
||||||
} else if (upper_row != NULL && lower_row == NULL) {
|
} else if (upper_row != NULL && lower_row == NULL) {
|
||||||
main_row = upper_row;
|
main_row = upper_row;
|
||||||
} else if (upper_row == NULL && lower_row != NULL) {
|
} else if (upper_row == NULL && lower_row != NULL) {
|
||||||
@ -137,7 +146,7 @@ int print_row_separator(char *buffer, size_t buffer_sz,
|
|||||||
const char *R = NULL;
|
const char *R = NULL;
|
||||||
|
|
||||||
const char (*border_chars)[BorderItemPosSize] = NULL;
|
const char (*border_chars)[BorderItemPosSize] = NULL;
|
||||||
if (main_row && main_row->is_header == F_TRUE) {
|
if (main_row && main_row->type == Header) {
|
||||||
border_chars = &context->header_border_chars;
|
border_chars = &context->header_border_chars;
|
||||||
} else {
|
} else {
|
||||||
border_chars = &context->border_chars;
|
border_chars = &context->border_chars;
|
||||||
@ -333,7 +342,7 @@ int snprintf_row(const fort_row_t *row, char *buffer, size_t buf_sz, size_t *col
|
|||||||
* L data IV data IV data R
|
* L data IV data IV data R
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char (*bord_chars)[BorderItemPosSize] = (row->is_header)
|
const char (*bord_chars)[BorderItemPosSize] = (row->type == Header)
|
||||||
? (&context->header_border_chars)
|
? (&context->header_border_chars)
|
||||||
: (&context->border_chars);
|
: (&context->border_chars);
|
||||||
const char *L = &(*bord_chars)[LL_bip];
|
const char *L = &(*bord_chars)[LL_bip];
|
||||||
@ -361,3 +370,11 @@ int snprintf_row(const fort_row_t *row, char *buffer, size_t buf_sz, size_t *col
|
|||||||
}
|
}
|
||||||
return dev;
|
return dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void set_row_type(fort_row_t *row, enum RowType type)
|
||||||
|
{
|
||||||
|
assert(row);
|
||||||
|
row->type = type;
|
||||||
|
}
|
||||||
|
11
src/row.h
11
src/row.h
@ -7,12 +7,12 @@
|
|||||||
|
|
||||||
struct fort_row;
|
struct fort_row;
|
||||||
typedef struct fort_row fort_row_t;
|
typedef struct fort_row fort_row_t;
|
||||||
struct fort_row
|
|
||||||
{
|
|
||||||
vector_t *cells;
|
|
||||||
enum F_BOOL is_header;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
enum RowType
|
||||||
|
{
|
||||||
|
Common,
|
||||||
|
Header
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
fort_row_t * create_row();
|
fort_row_t * create_row();
|
||||||
@ -44,5 +44,6 @@ fort_row_t* create_row_from_fmt_string(const char* FORT_RESTRICT fmt, va_list *v
|
|||||||
int snprintf_row(const fort_row_t *row, char *buffer, size_t buf_sz, size_t *col_width_arr, size_t col_width_arr_sz,
|
int snprintf_row(const fort_row_t *row, char *buffer, size_t buf_sz, size_t *col_width_arr, size_t col_width_arr_sz,
|
||||||
size_t row_height, const context_t *context);
|
size_t row_height, const context_t *context);
|
||||||
|
|
||||||
|
void set_row_type(fort_row_t *row, enum RowType type);
|
||||||
|
|
||||||
#endif // ROW_H
|
#endif // ROW_H
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* STRING BUFFER
|
* STRING BUFFER
|
||||||
* ***************************************************************************/
|
* ***************************************************************************/
|
||||||
|
|
||||||
string_buffer_t* create_string_buffer(size_t sz)
|
string_buffer_t* create_string_buffer(size_t sz)
|
||||||
{
|
{
|
||||||
string_buffer_t *result = (string_buffer_t *)F_MALLOC(sizeof(string_buffer_t));
|
string_buffer_t *result = (string_buffer_t *)F_MALLOC(sizeof(string_buffer_t));
|
||||||
@ -130,3 +131,4 @@ int buffer_printf(string_buffer_t *buffer, size_t buffer_row, size_t table_colum
|
|||||||
written += snprint_n_chars(buf + written, buf_len - written, right, ' ');
|
written += snprint_n_chars(buf + written, buf_len - written, right, ' ');
|
||||||
return written;
|
return written;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,13 +65,6 @@ string_buffer_t * get_cur_str_buffer_and_create_if_not_exists(FTABLE *FORT_RESTR
|
|||||||
if (cell == NULL)
|
if (cell == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
// if (cell->str_buffer == NULL) {
|
|
||||||
// cell->str_buffer = create_string_buffer(DEFAULT_STR_BUF_SIZE);
|
|
||||||
// if (cell->str_buffer == NULL)
|
|
||||||
// return NULL;
|
|
||||||
// }
|
|
||||||
// return cell->str_buffer;
|
|
||||||
|
|
||||||
return cell_get_string_buffer(cell);
|
return cell_get_string_buffer(cell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user