NAME¶
rtbl_create,
  
rtbl_destroy,
  
rtbl_set_flags,
  
rtbl_get_flags,
  
rtbl_set_prefix,
  
rtbl_set_separator,
  
rtbl_set_column_prefix,
  
rtbl_set_column_affix_by_id,
  
rtbl_add_column,
  
rtbl_add_column_by_id,
  
rtbl_add_column_entry,
  
rtbl_add_column_entry_by_id,
  
rtbl_new_row,
  
rtbl_format —
format data in simple tables
LIBRARY¶
The roken library (libroken, -lroken)
SYNOPSIS¶
#include
  <rtbl.h>
int
rtbl_add_column(
rtbl_t
  table, 
const
  char *column_name,
  
unsigned int
  flags);
int
rtbl_add_column_by_id(
rtbl_t
  table, 
unsigned
  int column_id,
  
const char
  *column_header,
  
unsigned int
  flags);
int
rtbl_add_column_entry(
rtbl_t
  table, 
const
  char *column_name,
  
const char
  *cell_entry);
int
rtbl_add_column_entry_by_id(
rtbl_t
  table, 
unsigned
  int column_id,
  
const char
  *cell_entry);
rtbl_t
rtbl_create(
void);
void
rtbl_destroy(
rtbl_t
  table);
int
rtbl_new_row(
rtbl_t
  table);
int
rtbl_set_column_affix_by_id(
rtbl_t
  table, 
unsigned
  int column_id ,
  
const,
  
char,
  
*prefix",
  
const char
  *suffix);
int
rtbl_set_column_prefix(
rtbl_t
  table, 
const
  char *column_name,
  
const char
  *prefix);
unsigned int
rtbl_get_flags(
rtbl_t
  table);
void
rtbl_set_flags(
rtbl_t
  table, 
unsigned
  int flags);
int
rtbl_set_prefix(
rtbl_t
  table, 
const
  char *prefix);
int
rtbl_set_separator(
rtbl_t
  table, 
const
  char *separator);
int
rtbl_format(
rtbl_t
  table ,
  
FILE,
  
*file");
DESCRIPTION¶
This set of functions assemble a simple table consisting of rows and columns,
  allowing it to be printed with certain options. Typical use would be output
  from tools such as 
ls(1) or
  
netstat(1), where you have a fixed number of
  columns, but don't know the column widths before hand.
A table is created with 
rtbl_create() and
  destroyed with 
rtbl_destroy().
Global flags on the table are set with
  
rtbl_set_flags and retrieved with
  
rtbl_get_flags. At present the only defined
  flag is 
RTBL_HEADER_STYLE_NONE which
  suppresses printing the header.
Before adding data to the table, one or more columns need to be created. This
  would normally be done with
  
rtbl_add_column_by_id(),
  
column_id is any number of your choice (it's
  used only to identify columns), 
column_header
  is the header to print at the top of the column, and
  
flags are flags specific to this column.
  Currently the only defined flag is
  
RTBL_ALIGN_RIGHT, aligning column entries
  to the right. Columns are printed in the order they are added.
There's also a way to add columns by column name with
  
rtbl_add_column(), but this is less
  flexible (you need unique header names), and is considered deprecated.
To add data to a column you use
  
rtbl_add_column_entry_by_id(), where the
  
column_id is the same as when the column was
  added (adding data to a non-existent column is undefined), and
  
cell_entry is whatever string you wish to
  include in that cell. It should not include newlines. For columns added with
  
rtbl_add_column() you must use
  
rtbl_add_column_entry() instead.
rtbl_new_row() fills all columns with blank
  entries until they all have the same number of rows.
Each column can have a separate prefix and suffix, set with
  
rtbl_set_column_affix_by_id;
  
rtbl_set_column_prefix allows setting the
  prefix only by column name. In addition to this, columns may be separated by a
  string set with 
rtbl_set_separator (by
  default columns are not seprated by anything).
The finished table is printed to 
file with
  
rtbl_format.
EXAMPLES¶
This program:
#include <stdio.h> 
#include <rtbl.h> 
int 
main(int argc, char **argv) 
{ 
    rtbl_t table; 
    table = rtbl_create(); 
    rtbl_set_separator(table, "  "); 
    rtbl_add_column_by_id(table, 0, "Column A", 0); 
    rtbl_add_column_by_id(table, 1, "Column B", RTBL_ALIGN_RIGHT); 
    rtbl_add_column_by_id(table, 2, "Column C", 0); 
    rtbl_add_column_entry_by_id(table, 0, "A-1"); 
    rtbl_add_column_entry_by_id(table, 0, "A-2"); 
    rtbl_add_column_entry_by_id(table, 0, "A-3"); 
    rtbl_add_column_entry_by_id(table, 1, "B-1"); 
    rtbl_add_column_entry_by_id(table, 2, "C-1"); 
    rtbl_add_column_entry_by_id(table, 2, "C-2"); 
    rtbl_add_column_entry_by_id(table, 1, "B-2"); 
    rtbl_add_column_entry_by_id(table, 1, "B-3"); 
    rtbl_add_column_entry_by_id(table, 2, "C-3"); 
    rtbl_add_column_entry_by_id(table, 0, "A-4"); 
    rtbl_new_row(table); 
    rtbl_add_column_entry_by_id(table, 1, "B-4"); 
    rtbl_new_row(table); 
    rtbl_add_column_entry_by_id(table, 2, "C-4"); 
    rtbl_new_row(table); 
    rtbl_format(table, stdout); 
    rtbl_destroy(table); 
    return 0; 
}
 
will output the following:
Column A  Column B  Column C 
A-1            B-1  C-1 
A-2            B-2  C-2 
A-3            B-3  C-3 
A-4 
               B-4 
                    C-4