/*chamada a cada index/2 controi estrutura de control, para definir a indexação, contem a rtree p.e. retorna a estrutura de control */ typedef void * (* Yap_UdiInit)( Term spec, /* mode spec */ void *pred, /* pass predicate information */ int arity); /*chamada a cada assert*/ typedef void * (* Yap_UdiInsert)(Term t, /* termo asserted */ void *control, /* estrutura de control*/ void *clausule); /* valor a guardar na arvore, para retornar na pesquisa */ /* chamada cada vez que um predicado indexado aparece no código Returns: NULL quando não há indexação usavel no predicado (fallback to yap indexing) FALSE TRY_RETRY_TRUST quando há resultados positivos */ typedef void * (* Yap_UdiSearch)(void * control); /* chamada cada vez que um predicado indexado aparece no código Returns: NULL quando não há indexação usavel no predicado (fallback to yap indexing) FALSE TRY_RETRY_TRUST quando há resultados positivos */ typedef int (* Yap_UdiDestroy)(void * control); typedef struct udi_control_block { Yap_UdiInit init; Yap_UdiInsert insert; Yap_UdiSearch search; Yap_UdiDestroy destroy; } *UdiControlBlock;