]> mj.ucw.cz Git - libucw.git/blob - ucw/table-types.h
tableprinter: update of user-defined column types
[libucw.git] / ucw / table-types.h
1 #ifndef _UCW_TABLE_TYPES_H
2 #define _UCW_TABLE_TYPES_H
3
4 #include <ucw/table.h>
5
6 enum size_units {
7   UNIT_BYTE,
8   UNIT_KILOBYTE,
9   UNIT_MEGABYTE,
10   UNIT_GIGABYTE,
11   UNIT_TERABYTE,
12   UNIT_AUTO
13 };
14
15 enum timestamp_format {
16   TIMESTAMP_EPOCH,
17   TIMESTAMP_DATETIME
18 };
19
20
21 #define COL_TYPE_SIZE       COL_TYPE_CUSTOM
22 #define COL_TYPE_TIMESTAMP  (COL_TYPE_CUSTOM+1)
23
24 extern struct table_user_type table_type_timestamp;
25 extern struct table_user_type table_type_size;
26
27 #define TBL_COL_SIZE(_name, _width)           { .name = _name, .width = _width, .fmt = "%llu", .type = COL_TYPE_SIZE, .type_def = &table_type_size }
28 #define TBL_COL_TIMESTAMP(_name, _width)      { .name = _name, .width = _width, .fmt = "%lld", .type = COL_TYPE_TIMESTAMP, .type_def = &table_type_timestamp }
29
30 #define TBL_COL_SIZE_FMT(_name, _width, _units)         { .name = _name, .width = _width, .fmt = "%llu", .type = COL_TYPE_SIZE }
31 #define TBL_COL_TIMESTAMP_FMT(_name, _width, _fmt)      { .name = _name, .width = _width, .fmt = "%lld", .type = COL_TYPE_TIMESTAMP }
32
33 /*
34   union {
35     enum size_units units;
36     enum timestamp_format ts_fmt;
37   };
38 */
39 /*
40 #define TBL_COL_SIZE(_name, _width)           { .name = _name, .width = _width, .fmt = "%llu", .type = COL_TYPE_SIZE }
41 #define TBL_COL_TIMESTAMP(_name, _width)      { .name = _name, .width = _width, .fmt = "%lld", .type = COL_TYPE_TIMESTAMP }
42
43 #define TBL_COL_SIZE_FMT(_name, _width, _units)         { .name = _name, .width = _width, .fmt = "%llu", .type = COL_TYPE_SIZE }
44 #define TBL_COL_TIMESTAMP_FMT(_name, _width, _fmt)      { .name = _name, .width = _width, .fmt = "%lld", .type = COL_TYPE_TIMESTAMP }
45
46 #define TABLE_COL_PROTO(_name_, _type_) void table_col_##_name_(struct table *tbl, int col, _type_ val);\
47   void table_col_##_name_##_name(struct table *tbl, const char *col_name, _type_ val);\
48   void table_col_##_name_##_fmt(struct table *tbl, int col, _type_ val) FORMAT_CHECK(printf, 3, 0);
49 //TABLE_COL_PROTO(size, u64);
50 //TABLE_COL_PROTO(timestamp, u64);
51 #undef TABLE_COL_PROTO
52 */
53
54 void table_col_size_name(struct table *tbl, const char *col_name, u64 val);
55 void table_col_timestamp_name(struct table *tbl, const char * col_name, u64 val);
56
57 void table_col_size(struct table *tbl, int col, u64 val);
58 void table_col_timestamp(struct table *tbl, int col, u64 val);
59
60 //TABLE_COL(size, u64, COL_TYPE_SIZE)
61 //TABLE_COL_STR(size, u64, COL_TYPE_SIZE)
62
63 //TABLE_COL(timestamp, u64, COL_TYPE_TIMESTAMP)
64 //TABLE_COL_STR(timestamp, u64, COL_TYPE_TIMESTAMP)
65
66
67 #endif