From ffb621c53bbf4b0424d2bf85244f016530f49029 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Fri, 20 Feb 2009 15:52:17 +0000 Subject: [PATCH] improve support for UDI. --- C/udi.c | 2 ++ include/rtree_udi.h | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 include/rtree_udi.h diff --git a/C/udi.c b/C/udi.c index a9a41cd96..b5cdd73ae 100644 --- a/C/udi.c +++ b/C/udi.c @@ -3,6 +3,7 @@ #include "clause.h" #include "udi.h" + #include "rtree_udi.h" /* we can have this stactic because it is written once */ @@ -158,3 +159,4 @@ Yap_udi_init(void) RtreeCmd.destroy = RtreeUdiDestroy; Yap_InitCPred("$udi_init", 2, p_new_udi, 0); } + diff --git a/include/rtree_udi.h b/include/rtree_udi.h new file mode 100644 index 000000000..038f7b1c4 --- /dev/null +++ b/include/rtree_udi.h @@ -0,0 +1,24 @@ +#ifndef _RTREE_UDI_ +#define _RTREE_UDI_ + +#ifndef _RTREE_ +typedef void control_t; +#endif + +/*Prolog term from :- udi(a(-,+,+)). + User defined index announce +*/ +extern control_t *RtreeUdiInit (Term spec, + void *pred, + int arity); + +/*this is called in each asserted term that was declared to udi_init*/ +extern control_t *RtreeUdiInsert (Term t, /*asserted term*/ + control_t *control, + void *clausule); /*to store in tree and return + in search*/ + +extern void *RtreeUdiSearch (control_t *control); +extern int RtreeUdiDestroy(control_t *control); + +#endif /* _RTREE_UDI_ */