2 * Copyright (c) 2017 Jiri Svoboda
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 #ifndef LIBC_IO_TABLE_H_
36 #define LIBC_IO_TABLE_H_
46 /** Space to the left of the table */
53 struct table_row
*row
;
54 /** Link to table_row_t.cells */
61 typedef struct table_row
{
62 /** Containing table */
64 /** Link to table_t.rows */
66 /** Cells of this row */
72 /** Containing table */
74 /** Link to table_t.columns */
81 typedef struct table
{
82 /** @c true if the first row is a header row */
84 /** Encountered error while writing to table */
87 list_t rows
; /* of table_row_t */
89 list_t columns
; /* of table_column_t */
95 table_column_t
*wcolumn
;
97 table_metrics_t metrics
;
100 extern errno_t
table_create(table_t
**);
101 extern void table_destroy(table_t
*);
102 extern errno_t
table_print_out(table_t
*, FILE *);
103 extern void table_header_row(table_t
*);
104 extern errno_t
table_printf(table_t
*, const char *, ...);
105 extern errno_t
table_get_error(table_t
*);
106 extern void table_set_margin_left(table_t
*, size_t);