Merge pull request #13074 from poettering/format-tree-many

table_add_many() improvements
This commit is contained in:
Lennart Poettering
2019-07-16 16:03:54 +02:00
committed by GitHub
4 changed files with 81 additions and 35 deletions
+53 -1
View File
@@ -681,6 +681,7 @@ int table_update(Table *t, TableCell *cell, TableDataType type, const void *data
int table_add_many_internal(Table *t, TableDataType first_type, ...) {
TableDataType type;
va_list ap;
TableCell *last_cell = NULL;
int r;
assert(t);
@@ -776,6 +777,55 @@ int table_add_many_internal(Table *t, TableDataType first_type, ...) {
data = &buffer.ifindex;
break;
case TABLE_SET_MINIMUM_WIDTH: {
size_t w = va_arg(ap, size_t);
r = table_set_minimum_width(t, last_cell, w);
break;
}
case TABLE_SET_MAXIMUM_WIDTH: {
size_t w = va_arg(ap, size_t);
r = table_set_maximum_width(t, last_cell, w);
break;
}
case TABLE_SET_WEIGHT: {
unsigned w = va_arg(ap, unsigned);
r = table_set_weight(t, last_cell, w);
break;
}
case TABLE_SET_ALIGN_PERCENT: {
unsigned p = va_arg(ap, unsigned);
r = table_set_align_percent(t, last_cell, p);
break;
}
case TABLE_SET_ELLIPSIZE_PERCENT: {
unsigned p = va_arg(ap, unsigned);
r = table_set_ellipsize_percent(t, last_cell, p);
break;
}
case TABLE_SET_COLOR: {
const char *c = va_arg(ap, const char*);
r = table_set_color(t, last_cell, c);
break;
}
case TABLE_SET_URL: {
const char *u = va_arg(ap, const char*);
r = table_set_url(t, last_cell, u);
break;
}
case TABLE_SET_UPPERCASE: {
int u = va_arg(ap, int);
r = table_set_uppercase(t, last_cell, u);
break;
}
case _TABLE_DATA_TYPE_MAX:
/* Used as end marker */
va_end(ap);
@@ -785,7 +835,9 @@ int table_add_many_internal(Table *t, TableDataType first_type, ...) {
assert_not_reached("Uh? Unexpected data type.");
}
r = table_add_cell(t, NULL, type, data);
if (type < _TABLE_DATA_TYPE_MAX)
r = table_add_cell(t, &last_cell, type, data);
if (r < 0) {
va_end(ap);
return r;
+13 -1
View File
@@ -28,6 +28,18 @@ typedef enum TableDataType {
TABLE_PERCENT,
TABLE_IFINDEX,
_TABLE_DATA_TYPE_MAX,
/* The following are not really data types, but commands for table_add_cell_many() to make changes to
* a cell just added. */
TABLE_SET_MINIMUM_WIDTH,
TABLE_SET_MAXIMUM_WIDTH,
TABLE_SET_WEIGHT,
TABLE_SET_ALIGN_PERCENT,
TABLE_SET_ELLIPSIZE_PERCENT,
TABLE_SET_COLOR,
TABLE_SET_URL,
TABLE_SET_UPPERCASE,
_TABLE_DATA_TYPE_INVALID = -1,
} TableDataType;
@@ -55,7 +67,7 @@ int table_set_weight(Table *t, TableCell *cell, unsigned weight);
int table_set_align_percent(Table *t, TableCell *cell, unsigned percent);
int table_set_ellipsize_percent(Table *t, TableCell *cell, unsigned percent);
int table_set_color(Table *t, TableCell *cell, const char *color);
int table_set_url(Table *t, TableCell *cell, const char *color);
int table_set_url(Table *t, TableCell *cell, const char *url);
int table_set_uppercase(Table *t, TableCell *cell, bool b);
int table_update(Table *t, TableCell *cell, TableDataType type, const void *data);