]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/shared/format-table.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
11 typedef enum TableDataType
{
22 _TABLE_DATA_TYPE_INVALID
= -1,
25 typedef struct Table Table
;
26 typedef struct TableCell TableCell
;
28 Table
*table_new_internal(const char *first_header
, ...) _sentinel_
;
29 #define table_new(...) table_new_internal(__VA_ARGS__, NULL)
30 Table
*table_new_raw(size_t n_columns
);
31 Table
*table_unref(Table
*t
);
33 DEFINE_TRIVIAL_CLEANUP_FUNC(Table
*, table_unref
);
35 int table_add_cell_full(Table
*t
, TableCell
**ret_cell
, TableDataType type
, const void *data
, size_t minimum_width
, size_t maximum_width
, unsigned weight
, unsigned align_percent
, unsigned ellipsize_percent
);
36 static inline int table_add_cell(Table
*t
, TableCell
**ret_cell
, TableDataType type
, const void *data
) {
37 return table_add_cell_full(t
, ret_cell
, type
, data
, (size_t) -1, (size_t) -1, (unsigned) -1, (unsigned) -1, (unsigned) -1);
40 int table_dup_cell(Table
*t
, TableCell
*cell
);
42 int table_set_minimum_width(Table
*t
, TableCell
*cell
, size_t minimum_width
);
43 int table_set_maximum_width(Table
*t
, TableCell
*cell
, size_t maximum_width
);
44 int table_set_weight(Table
*t
, TableCell
*cell
, unsigned weight
);
45 int table_set_align_percent(Table
*t
, TableCell
*cell
, unsigned percent
);
46 int table_set_ellipsize_percent(Table
*t
, TableCell
*cell
, unsigned percent
);
47 int table_set_color(Table
*t
, TableCell
*cell
, const char *color
);
48 int table_set_url(Table
*t
, TableCell
*cell
, const char *color
);
49 int table_set_uppercase(Table
*t
, TableCell
*cell
, bool b
);
51 int table_update(Table
*t
, TableCell
*cell
, TableDataType type
, const void *data
);
53 int table_add_many_internal(Table
*t
, TableDataType first_type
, ...);
54 #define table_add_many(t, ...) table_add_many_internal(t, __VA_ARGS__, _TABLE_DATA_TYPE_MAX)
56 void table_set_header(Table
*table
, bool b
);
57 void table_set_width(Table
*t
, size_t width
);
58 int table_set_display(Table
*t
, size_t first_column
, ...);
59 int table_set_sort(Table
*t
, size_t first_column
, ...);
60 int table_set_reverse(Table
*t
, size_t column
, bool b
);
62 int table_print(Table
*t
, FILE *f
);
63 int table_format(Table
*t
, char **ret
);
65 static inline TableCell
* TABLE_HEADER_CELL(size_t i
) {
66 return SIZE_TO_PTR(i
+ 1);
69 size_t table_get_rows(Table
*t
);
70 size_t table_get_columns(Table
*t
);
72 TableCell
*table_get_cell(Table
*t
, size_t row
, size_t column
);
74 const void *table_get(Table
*t
, TableCell
*cell
);
75 const void *table_get_at(Table
*t
, size_t row
, size_t column
);
77 int table_to_json(Table
*t
, JsonVariant
**ret
);
78 int table_print_json(Table
*t
, FILE *f
, unsigned json_flags
);