- * [[ Usage ]]
- * The table works as follows:
- * The table can be used after table_init is called. Then at the beginning of each printing, the
- * table_start function must be called. After printing, the table_end must be called. The
- * table_start MUST be paired with table_end. Inbetween table_start/table_end the user can set the
- * cells of one row and one row is finished and printed using table_end_row. The pairs
- * table_start/table_end can be used multiple-times for one table. The table is deallocated using
- * table_cleanup. After table_cleanup is called it is not possible to further use the struct table.
- * The struct table must be reinitialized.
- *
- * Default behaviour of the table_col_* is replacement of already set data. To append, the user
- * must use table_append_*
- *
- * To summarize:
- * 1) @table_init is called;
- * 2) @table_start is called following by table_col_xxx functions and @table_end.
- * table_start/table_end forms 1-level parenthesis structure. Some of the table
- * settings can be changed only between table_init and @table_start or after table_end
- * is called (but before next table_start.
- * 3) the table is deallocated using @table_cleanup. After the cleanup
- * is done, the struct table is unusable and must be initialized.
- *
- *
- * An example of the procedure is following sequence of calls:
- * table_init
- *
- * table_start
- * table_end
- * table_start
- * table_end
- *
- * table_cleanup
- *
- * The tableprinter supports user-specified callback for each row and table-print (i.e., a callback
- * that is called in table_end).
- *
- * The table is initialized by defining a table struct using the following macros:
- * o TBL_COLUMNS indicates start of definition of columns
- * o TBL_COL_XXX macros specify the column types with some default formatting the column is specified using a column
- * name (which should be C identifier) and a prefix. the column name is the a string with the column
- * name. The prefix is used for discriminating between columns from different tables. The column index
- * should be taken from an enum. The enum identifier is prefix concatenated with the column name identifier.
- * o TBL_COL_XXX_F macros specify column types with user supplied formatting
- * o TBL_COL_END indicates end of column definitions
- * o TBL_COL_ORDER specify the column order
- * o TBL_COL_DELIMITER specify the in-between cell delimiter
- *
- * The table cells have strict type control, with the exception of type TBL_COL_ANY. In the case of
- * TBL_COL_ANY, the type is not tested and an arbitrary value can be printed into the cell.
- * It is also possible to print string to an arbitrary cell.
- *
- * Features:
- * - user supplied callback functions can be used for modifying the output format.