The Database Calculator functions mco_calc_cinfo_browse()
and mco_calc_iinfo_browse()
require callback functions to process the information relative to a specific class or index. They have the following prototypes:
typedef void (*mco_calc_cinfo_h)(mco_calc_t * calc, mco_cc_t * cls, mco_cc_info_t * info, void * ctx); typedef void (*mco_calc_iinfo_h)(mco_calc_t * calc, mco_index_stat_t * istat, void * ctx);
Note that the index istat parameter is of type mco_index_stat_t
defined in file mco.h
and the context parameter ctx is to allow possible additional application-specific data to be passed into the handler function.
An example of these handler functions are the following:
static void class_print(mco_calc_t *calc, mco_cc_t *cls, mco_cc_info_t *info, void *unused) { printf(" -> %s%s:\n", (info->is_pers ? "[PERSISTENT] " : ""), cls->cc_name); ... } static void index_print(mco_calc_t *calc, mco_cc_t *cls, mco_index_stat_t *istat, void *unused) { int tmp, psize = 0; char *str = NULL, c; if ((istat->type & MCO_IDXST_TYPE_MASK) == MCO_IDXST_TYPE_MEM) { str = "Inmem"; psize = calc->pg_size; } else if ((istat->type & MCO_IDXST_TYPE_MASK) == MCO_IDXST_TYPE_DISK) { str = "Disk"; psize = _disk_page_size; } printf(" -> %s [%s ", istat->plabel, str); ... }