]> mj.ucw.cz Git - libucw.git/commitdiff
tableprinter: code cleanup, update of formats of double
authorRobert Kessl <kesslr@centrum.cz>
Tue, 15 Jul 2014 12:35:33 +0000 (14:35 +0200)
committerRobert Kessl <kesslr@centrum.cz>
Tue, 15 Jul 2014 12:35:33 +0000 (14:35 +0200)
ucw/table-test-align.c
ucw/table-test.c
ucw/table.c
ucw/table.h
ucw/xtypes-basic.c

index 1de8041ec1fb55981b9526aad73f543001f4790b..eb22f2e24b511919ef908ce732c75ea7d729298b 100644 (file)
@@ -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,
index 55614f5695663c4ea06eeb2a8807a0e3c2d5c408..1f888d0d428f93b57c29b349bc7bc6776f742df1 100644 (file)
 #include <stdio.h>
 
 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);
 }
 
index 4896b6f310388913dc4026ccb34791cf0252c3fd..51f50b991e4c04a1513c54f8f0c5e7dd8cc252e3 100644 (file)
@@ -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);
index 49b7fbb30e90b2b3003418b11e300a6f95a8481a..16b234c8bbe63d6b682d34c35303ebfe584b9aac 100644 (file)
@@ -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
 
 /**
index cf3010b5f3d5afafae4471d9af2094a1fed45d8f..abbc6700275dc49ba539ae275b33e95a672fb2ba 100644 (file)
@@ -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);
   }
 }