From: Robert Kessl Date: Tue, 15 Jul 2014 12:35:33 +0000 (+0200) Subject: tableprinter: code cleanup, update of formats of double X-Git-Tag: v6.1~3^2~96 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=dbadbb6cd3cb9c845205b1dc3883a76dc36ac7fa;hp=19dcf6467986a5cc7c6b20ee07541260ad1da60f;p=libucw.git tableprinter: code cleanup, update of formats of double --- diff --git a/ucw/table-test-align.c b/ucw/table-test-align.c index 1de8041e..eb22f2e2 100644 --- a/ucw/table-test-align.c +++ b/ucw/table-test-align.c @@ -20,7 +20,7 @@ static struct table_template test_tbl = { [test_col1_int] = TBL_COL_INT("col1_int", 8), [test_col2_uint] = TBL_COL_UINT("col2_uint", 9), [test_col3_bool] = TBL_COL_BOOL("col3_bool", 9 | CELL_ALIGN_LEFT), - [test_col4_double] = TBL_COL_DOUBLE("col4_double", 11 | CELL_ALIGN_LEFT, 5), + [test_col4_double] = TBL_COL_DOUBLE_FMT("col4_double", 11 | CELL_ALIGN_LEFT, XTYPE_FMT_DEFAULT), TBL_COL_END }, TBL_OUTPUT_HUMAN_READABLE, diff --git a/ucw/table-test.c b/ucw/table-test.c index 55614f56..1f888d0d 100644 --- a/ucw/table-test.c +++ b/ucw/table-test.c @@ -11,20 +11,20 @@ #include enum test_table_cols { - test_col0_str, test_col1_int, test_col2_uint, test_col3_bool, test_col4_double, test_col5_size, test_col6_time + TEST_COL0_STR, TEST_COL1_INT, TEST_COL2_UINT, TEST_COL3_BOOL, TEST_COL4_DOUBLE, TEST_COL5_SIZE, TEST_COL6_TIME }; -static struct table_col_instance test_column_order[] = { TBL_COL(test_col3_bool), TBL_COL(test_col4_double), TBL_COL(test_col2_uint), TBL_COL(test_col1_int), TBL_COL(test_col0_str) }; +static struct table_col_instance test_column_order[] = { TBL_COL(TEST_COL3_BOOL), TBL_COL(TEST_COL4_DOUBLE), TBL_COL(TEST_COL2_UINT), TBL_COL(TEST_COL1_INT), TBL_COL(TEST_COL0_STR) }; static struct table_template test_tbl = { TBL_COLUMNS { - [test_col0_str] = TBL_COL_STR("col0_str", 20), - [test_col1_int] = TBL_COL_INT("col1_int", 8), - [test_col2_uint] = TBL_COL_UINT("col2_uint", 9), - [test_col3_bool] = TBL_COL_BOOL("col3_bool", 9), - [test_col4_double] = TBL_COL_DOUBLE("col4_double", 11, 2), - [test_col5_size] = TBL_COL_SIZE("col5_size", 11), - [test_col6_time] = TBL_COL_TIMESTAMP("col6_timestamp", 20), + [TEST_COL0_STR] = TBL_COL_STR("col0_str", 20), + [TEST_COL1_INT] = TBL_COL_INT("col1_int", 8), + [TEST_COL2_UINT] = TBL_COL_UINT("col2_uint", 9), + [TEST_COL3_BOOL] = TBL_COL_BOOL("col3_bool", 9), + [TEST_COL4_DOUBLE] = TBL_COL_DOUBLE_FMT("col4_double", 11, XTYPE_FMT_PRETTY), + [TEST_COL5_SIZE] = TBL_COL_SIZE("col5_size", 11), + [TEST_COL6_TIME] = TBL_COL_TIMESTAMP("col6_timestamp", 20), TBL_COL_END }, TBL_COL_ORDER(test_column_order), @@ -33,14 +33,14 @@ static struct table_template test_tbl = { }; enum test_default_order_cols { - test_default_order_col0_int, test_default_order_col1_int, test_default_order_col2_int + TEST_DEFAULT_ORDER_COL0_INT, TEST_DEFAULT_ORDER_COL1_INT, TEST_DEFAULT_ORDER_COL2_INT }; static struct table_template test_default_order_tbl = { TBL_COLUMNS { - [test_default_order_col0_int] = TBL_COL_INT("col0_int", 8), - [test_default_order_col1_int] = TBL_COL_INT("col1_int", 9), - [test_default_order_col2_int] = TBL_COL_INT("col2_int", 9), + [TEST_DEFAULT_ORDER_COL0_INT] = TBL_COL_INT("col0_int", 8), + [TEST_DEFAULT_ORDER_COL1_INT] = TBL_COL_INT("col1_int", 9), + [TEST_DEFAULT_ORDER_COL2_INT] = TBL_COL_INT("col2_int", 9), TBL_COL_END }, TBL_OUTPUT_HUMAN_READABLE, @@ -53,14 +53,14 @@ static void do_default_order_test(struct fastbuf *out) table_start(tbl, out); - table_col_int(tbl, test_default_order_col0_int, 0); - table_col_int(tbl, test_default_order_col1_int, 1); - table_col_int(tbl, test_default_order_col2_int, 2); + table_col_int(tbl, TEST_DEFAULT_ORDER_COL0_INT, 0); + table_col_int(tbl, TEST_DEFAULT_ORDER_COL1_INT, 1); + table_col_int(tbl, TEST_DEFAULT_ORDER_COL2_INT, 2); table_end_row(tbl); - table_col_int(tbl, test_default_order_col0_int, 10); - table_col_int(tbl, test_default_order_col1_int, 11); - table_col_int(tbl, test_default_order_col2_int, 12); + table_col_int(tbl, TEST_DEFAULT_ORDER_COL0_INT, 10); + table_col_int(tbl, TEST_DEFAULT_ORDER_COL1_INT, 11); + table_col_int(tbl, TEST_DEFAULT_ORDER_COL2_INT, 12); table_end_row(tbl); table_end(tbl); @@ -72,24 +72,24 @@ static void do_default_order_test(struct fastbuf *out) **/ static void do_print1(struct table *test_tbl) { - table_col_str(test_tbl, test_col0_str, "sdsdf"); - table_col_int(test_tbl, test_col1_int, -10); - table_col_int(test_tbl, test_col1_int, 10000); - table_col_uint(test_tbl, test_col2_uint, 10); - table_col_printf(test_tbl, test_col2_uint, "XXX-%u", 22222); - table_col_bool(test_tbl, test_col3_bool, 1); - table_col_double(test_tbl, test_col4_double, 1.5); - table_col_size(test_tbl, test_col5_size, (1024LLU*1024LLU*1024LLU*5LLU)); - table_col_timestamp(test_tbl, test_col6_time, 1404305876); + table_col_str(test_tbl, TEST_COL0_STR, "sdsdf"); + table_col_int(test_tbl, TEST_COL1_INT, -10); + table_col_int(test_tbl, TEST_COL1_INT, 10000); + table_col_uint(test_tbl, TEST_COL2_UINT, 10); + table_col_printf(test_tbl, TEST_COL2_UINT, "XXX-%u", 22222); + table_col_bool(test_tbl, TEST_COL3_BOOL, 1); + table_col_double(test_tbl, TEST_COL4_DOUBLE, 1.5); + table_col_size(test_tbl, TEST_COL5_SIZE, (1024LLU*1024LLU*1024LLU*5LLU)); + table_col_timestamp(test_tbl, TEST_COL6_TIME, 1404305876); table_end_row(test_tbl); - table_col_str(test_tbl, test_col0_str, "test"); - table_col_int(test_tbl, test_col1_int, -100); - table_col_uint(test_tbl, test_col2_uint, 100); - table_col_bool(test_tbl, test_col3_bool, 0); - table_col_double(test_tbl, test_col4_double, 1.5); - table_col_size(test_tbl, test_col5_size, (1024LLU*1024LLU*1024LLU*2LLU)); - table_col_timestamp(test_tbl, test_col6_time, 1404305909); + table_col_str(test_tbl, TEST_COL0_STR, "test"); + table_col_int(test_tbl, TEST_COL1_INT, -100); + table_col_uint(test_tbl, TEST_COL2_UINT, 100); + table_col_bool(test_tbl, TEST_COL3_BOOL, 0); + table_col_double(test_tbl, TEST_COL4_DOUBLE, 1.5); + table_col_size(test_tbl, TEST_COL5_SIZE, (1024LLU*1024LLU*1024LLU*2LLU)); + table_col_timestamp(test_tbl, TEST_COL6_TIME, 1404305909); table_end_row(test_tbl); } diff --git a/ucw/table.c b/ucw/table.c index 4896b6f3..51f50b99 100644 --- a/ucw/table.c +++ b/ucw/table.c @@ -340,11 +340,6 @@ TABLE_COL(bool, bool, COL_TYPE_BOOL) TABLE_COL_STR(bool, bool, COL_TYPE_BOOL) TABLE_COL_FMT(bool, bool, COL_TYPE_BOOL) -#undef TABLE_COL -#undef TABLE_COL_FMT -#undef TABLE_COL_STR -#undef TABLE_COL_BODIES - void table_reset_row(struct table *tbl) { for(uint i = 0; i < tbl->cols_to_output; i++) { @@ -574,7 +569,7 @@ static struct table_template test_tbl = { [test_col1_int] = TBL_COL_INT("col1_int", 8), [test_col2_uint] = TBL_COL_UINT("col2_uint", 9), [test_col3_bool] = TBL_COL_BOOL("col3_bool", 9), - [test_col4_double] = TBL_COL_DOUBLE("col4_double", 11, 2), + [test_col4_double] = TBL_COL_DOUBLE("col4_double", 11), TBL_COL_END }, TBL_COL_ORDER(test_column_order), @@ -657,15 +652,15 @@ static void test_simple1(struct fastbuf *out) } enum test_any_table_cols { - test_any_col0_int, test_any_col1_any + TEST_ANY_COL0_INT, TEST_ANY_COL1_ANY }; -static struct table_col_instance test_any_column_order[] = { TBL_COL(test_any_col0_int), TBL_COL(test_any_col1_any) }; +static struct table_col_instance test_any_column_order[] = { TBL_COL(TEST_ANY_COL0_INT), TBL_COL(TEST_ANY_COL1_ANY) }; static struct table_template test_any_tbl = { TBL_COLUMNS { - [test_any_col0_int] = TBL_COL_INT("col0_int", 8), - [test_any_col1_any] = TBL_COL_ANY("col1_any", 9), + [TEST_ANY_COL0_INT] = TBL_COL_INT("col0_int", 8), + [TEST_ANY_COL1_ANY] = TBL_COL_ANY("col1_any", 9), TBL_COL_END }, TBL_COL_ORDER(test_any_column_order), @@ -677,18 +672,20 @@ static void test_any_type(struct fastbuf *out) { struct table *tbl = table_init(&test_any_tbl); + tbl->columns[TEST_ANY_COL1_ANY].fmt = XTYPE_FMT_PRETTY; + table_start(tbl, out); - table_col_int(tbl, test_any_col0_int, -10); - table_col_int(tbl, test_any_col1_any, 10000); + table_col_int(tbl, TEST_ANY_COL0_INT, -10); + table_col_int(tbl, TEST_ANY_COL1_ANY, 10000); table_end_row(tbl); - table_col_int(tbl, test_any_col0_int, -10); - table_col_double(tbl, test_any_col1_any, 1.4); + table_col_int(tbl, TEST_ANY_COL0_INT, -10); + table_col_double(tbl, TEST_ANY_COL1_ANY, 1.4); table_end_row(tbl); - table_col_printf(tbl, test_any_col0_int, "%d", 10); - table_col_double(tbl, test_any_col1_any, 1.4); + table_col_printf(tbl, TEST_ANY_COL0_INT, "%d", 10); + table_col_double(tbl, TEST_ANY_COL1_ANY, 1.4); table_end_row(tbl); table_end(tbl); diff --git a/ucw/table.h b/ucw/table.h index 49b7fbb3..16b234c8 100644 --- a/ucw/table.h +++ b/ucw/table.h @@ -194,7 +194,7 @@ struct table { #define TBL_COL_INTMAX(_name, _width) { .name = _name, .width = _width, .fmt = XTYPE_FMT_DEFAULT, .type_def = COL_TYPE_INTMAX, TBL_COL_LIST_INIT } #define TBL_COL_UINTMAX(_name, _width) { .name = _name, .width = _width, .fmt = XTYPE_FMT_DEFAULT, .type_def = COL_TYPE_UINTMAX, TBL_COL_LIST_INIT } #define TBL_COL_HEXUINT(_name, _width) { .name = _name, .width = _width, .fmt = XTYPE_FMT_DEFAULT, .type_def = COL_TYPE_UINT, TBL_COL_LIST_INIT } -#define TBL_COL_DOUBLE(_name, _width, _prec) { .name = _name, .width = _width, .fmt = XTYPE_FMT_DEFAULT, .type_def = COL_TYPE_DOUBLE, TBL_COL_LIST_INIT } +#define TBL_COL_DOUBLE(_name, _width) { .name = _name, .width = _width, .fmt = XTYPE_FMT_DEFAULT, .type_def = COL_TYPE_DOUBLE, TBL_COL_LIST_INIT } #define TBL_COL_BOOL(_name, _width) { .name = _name, .width = _width, .fmt = XTYPE_FMT_DEFAULT, .type_def = COL_TYPE_BOOL, TBL_COL_LIST_INIT } #define TBL_COL_ANY(_name, _width) { .name = _name, .width = _width, .fmt = XTYPE_FMT_DEFAULT, .type_def = COL_TYPE_ANY, TBL_COL_LIST_INIT } #define TBL_COL_CUSTOM(_name, _width, _xtype) { .name = _name, .width = _width, .fmt = XTYPE_FMT_DEFAULT, .type_def = _xtype, TBL_COL_LIST_INIT } @@ -208,6 +208,7 @@ struct table { #define TBL_COL_UINTMAX_FMT(_name, _width, _fmt) { .name = _name, .width = _width, .fmt = _fmt, .type_def = COL_TYPE_UINTMAX, TBL_COL_LIST_INIT } #define TBL_COL_HEXUINT_FMT(_name, _width, _fmt) { .name = _name, .width = _width, .fmt = _fmt, .type_def = COL_TYPE_UINT, TBL_COL_LIST_INIT } #define TBL_COL_BOOL_FMT(_name, _width, _fmt) { .name = _name, .width = _width, .fmt = _fmt, .type_def = COL_TYPE_BOOL, TBL_COL_LIST_INIT } +#define TBL_COL_DOUBLE_FMT(_name, _width, _fmt) { .name = _name, .width = _width, .fmt = _fmt, .type_def = COL_TYPE_DOUBLE, TBL_COL_LIST_INIT } #define TBL_COL_END { .name = 0, .width = 0, .fmt = 0, .type_def = NULL } @@ -316,7 +317,7 @@ TABLE_COL_PROTO(bool, bool); TABLE_COL_FMT(_name_, _type_, _typeconst_); // FIXME: the next line was removed, the question is whether it should -// be there currently it is impossible to undef the macro. +// be there. Currently it is impossible to undef the macro. // #undef TABLE_COL_PROTO /** diff --git a/ucw/xtypes-basic.c b/ucw/xtypes-basic.c index cf3010b5..abbc6700 100644 --- a/ucw/xtypes-basic.c +++ b/ucw/xtypes-basic.c @@ -49,13 +49,13 @@ static const char *xt_double_format(void *src, u32 fmt, struct mempool *pool) { switch(fmt) { case XTYPE_FMT_RAW: - return mp_printf(pool, "%.2lf", *(double *)src); + return mp_printf(pool, "%.10lf", *(double *)src); case XTYPE_FMT_PRETTY: return mp_printf(pool, "%.2lf", *(double *)src); case XTYPE_FMT_DEFAULT: default: - return mp_printf(pool, "%.2lf", *(double *)src); + return mp_printf(pool, "%.5lf", *(double *)src); } }