Nguyễn Thái Ngọc Duy | 7e29b82 | 2012-04-21 11:44:32 +0700 | [diff] [blame] | 1 | #ifndef COLUMN_H |
| 2 | #define COLUMN_H |
| 3 | |
| 4 | #define COL_LAYOUT_MASK 0x000F |
| 5 | #define COL_ENABLE_MASK 0x0030 /* always, never or auto */ |
| 6 | #define COL_PARSEOPT 0x0040 /* --column is given from cmdline */ |
Nguyễn Thái Ngọc Duy | 3f8eccb | 2012-04-13 17:54:36 +0700 | [diff] [blame] | 7 | #define COL_DENSE 0x0080 /* Shrink columns when possible, |
| 8 | making space for more columns */ |
Nguyễn Thái Ngọc Duy | 7e29b82 | 2012-04-21 11:44:32 +0700 | [diff] [blame] | 9 | |
| 10 | #define COL_DISABLED 0x0000 /* must be zero */ |
| 11 | #define COL_ENABLED 0x0010 |
| 12 | #define COL_AUTO 0x0020 |
| 13 | |
| 14 | #define COL_LAYOUT(c) ((c) & COL_LAYOUT_MASK) |
Nguyễn Thái Ngọc Duy | 077539d | 2012-04-13 17:54:35 +0700 | [diff] [blame] | 15 | #define COL_COLUMN 0 /* Fill columns before rows */ |
| 16 | #define COL_ROW 1 /* Fill rows before columns */ |
Nguyễn Thái Ngọc Duy | 7e29b82 | 2012-04-21 11:44:32 +0700 | [diff] [blame] | 17 | #define COL_PLAIN 15 /* one column */ |
| 18 | |
| 19 | #define explicitly_enable_column(c) \ |
| 20 | (((c) & COL_PARSEOPT) && column_active(c)) |
| 21 | |
| 22 | struct column_options { |
| 23 | int width; |
| 24 | int padding; |
| 25 | const char *indent; |
| 26 | const char *nl; |
| 27 | }; |
| 28 | |
| 29 | struct option; |
Denton Liu | 5545442 | 2019-04-29 04:28:14 -0400 | [diff] [blame] | 30 | int parseopt_column_callback(const struct option *, const char *, int); |
| 31 | int git_column_config(const char *var, const char *value, |
Denton Liu | ad6dad0 | 2019-04-29 04:28:23 -0400 | [diff] [blame] | 32 | const char *command, unsigned int *colopts); |
Denton Liu | 5545442 | 2019-04-29 04:28:14 -0400 | [diff] [blame] | 33 | int finalize_colopts(unsigned int *colopts, int stdout_is_tty); |
Nguyễn Thái Ngọc Duy | 7e29b82 | 2012-04-21 11:44:32 +0700 | [diff] [blame] | 34 | static inline int column_active(unsigned int colopts) |
| 35 | { |
| 36 | return (colopts & COL_ENABLE_MASK) == COL_ENABLED; |
| 37 | } |
| 38 | |
Elijah Newren | ef3ca95 | 2018-08-15 10:54:05 -0700 | [diff] [blame] | 39 | struct string_list; |
Denton Liu | 5545442 | 2019-04-29 04:28:14 -0400 | [diff] [blame] | 40 | void print_columns(const struct string_list *list, unsigned int colopts, |
Denton Liu | ad6dad0 | 2019-04-29 04:28:23 -0400 | [diff] [blame] | 41 | const struct column_options *opts); |
Nguyễn Thái Ngọc Duy | 7e29b82 | 2012-04-21 11:44:32 +0700 | [diff] [blame] | 42 | |
Denton Liu | 5545442 | 2019-04-29 04:28:14 -0400 | [diff] [blame] | 43 | int run_column_filter(int colopts, const struct column_options *); |
| 44 | int stop_column_filter(void); |
Nguyễn Thái Ngọc Duy | b27004e | 2012-04-13 17:54:40 +0700 | [diff] [blame] | 45 | |
Nguyễn Thái Ngọc Duy | 7e29b82 | 2012-04-21 11:44:32 +0700 | [diff] [blame] | 46 | #endif |