3.7 KiB
3.7 KiB
Row separators
Explicit row separators are useful in styles without horizontal borders between rows to emphasize content. To add row separator use function ft_add_separator
:
int ft_add_separator(ft_table_t *table);
Example:
ft_table_t *table = ft_create_table();
ft_write_ln(table, "1", "Ricciardo", "1:25.945", "222.128");
ft_write_ln(table, "2", "Hamilton", "1:26.373", "221.027");
ft_add_separator(table);
ft_write_ln(table, "3", "Verstappen", "1:26.469", "220.782");
printf("%s\n", ft_to_string(table));
ft_destroy_table(table);
Output:
+---+------------+----------+---------+
| 1 | Ricciardo | 1:25.945 | 222.128 |
| 2 | Hamilton | 1:26.373 | 221.027 |
+---+------------+----------+---------+
| 3 | Verstappen | 1:26.469 | 220.782 |
+---+------------+----------+---------+
Cell span
Cells can span two or more columns. To specify cell span use ft_set_cell_span
:
/* Set horizontal span for cell (row, col) */
int ft_set_cell_span(ft_table_t *table, size_t row, size_t col, size_t hor_span);
Example:
ft_table_t *table = ft_create_table();
/* Change border style */
ft_set_border_style(table, FT_DOUBLE2_STYLE);
ft_set_cell_prop(table, 0, FT_ANY_COLUMN, FT_CPROP_ROW_TYPE, FT_ROW_HEADER);
ft_write_ln(table, "Sed", "Aenean", "Text");
ft_write_ln(table, "Duis", "Aliquam", "Lorem ipsum dolor");
ft_write_ln(table, "Mauris", "Curabitur", "Proin condimentum");
ft_write_ln(table, "Summary", "", "Sed tempor est eget odio varius dignissim.");
/* Set cell span */
ft_set_cell_span(table, 3, 0, 2);
printf("%s\n", ft_to_string(table));
ft_destroy_table(table);
Output:
╔════════╤═══════════╤════════════════════════════════════════════╗
║ Sed │ Aenean │ Text ║
╠════════╪═══════════╪════════════════════════════════════════════╣
║ Duis │ Aliquam │ Lorem ipsum dolor ║
╟────────┼───────────┼────────────────────────────────────────────╢
║ Mauris │ Curabitur │ Proin condimentum ║
╟────────┴───────────┼────────────────────────────────────────────╢
║ Summary │ Sed tempor est eget odio varius dignissim. ║
╚════════════════════╧════════════════════════════════════════════╝
Custom memory allocators
libfort actively uses memory allocation functions (by default standard malloc
, free
...). If your application uses custom memory allocators you can provide appropriate functions to libfort:
void ft_set_memory_funcs(void *(*f_malloc)(size_t size), void (*f_free)(void *ptr));