52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #ifndef __BTREE_UDI_H__
 | ||
|  | #define __BTREE_UDI_H__ 1
 | ||
|  | 
 | ||
|  | #include <YapInterface.h>
 | ||
|  | #include <udi.h>
 | ||
|  | #include "b+tree.h"
 | ||
|  | 
 | ||
|  | #define SPEC "btree"
 | ||
|  | /*Prolog term from :- udi(a(-,btree,-)).*/ | ||
|  | 
 | ||
|  | extern void *BtreeUdiInit | ||
|  | 	(YAP_Term spec, int arg, int arity); | ||
|  | 
 | ||
|  | extern void *BtreeUdiInsert | ||
|  | 	(void *control, YAP_Term term, int arg, void *data); | ||
|  | 
 | ||
|  | extern int BtreeUdiSearch | ||
|  | 	(void *control, int arg, Yap_UdiCallback callback, void *args); | ||
|  | 
 | ||
|  | extern int BtreeUdiDestroy(void *control); | ||
|  | 
 | ||
|  | typedef int (*BTreeSearchAtt) (btree_t tree, YAP_Term constraint, Yap_UdiCallback callback, void *args); | ||
|  | 
 | ||
|  | struct Att | ||
|  | { | ||
|  |   const char *att; | ||
|  |   BTreeSearchAtt proc_att; | ||
|  | }; | ||
|  | 
 | ||
|  | int BTreeMinAtt (btree_t tree, YAP_Term constraint, Yap_UdiCallback callback, void *args); | ||
|  | int BTreeMaxAtt (btree_t tree, YAP_Term constraint, Yap_UdiCallback callback, void *args); | ||
|  | int BTreeEqAtt (btree_t tree, YAP_Term constraint, Yap_UdiCallback callback, void *args); | ||
|  | int BTreeLtAtt (btree_t tree, YAP_Term constraint, Yap_UdiCallback callback, void *args); | ||
|  | int BTreeLeAtt (btree_t tree, YAP_Term constraint, Yap_UdiCallback callback, void *args); | ||
|  | int BTreeGtAtt (btree_t tree, YAP_Term constraint, Yap_UdiCallback callback, void *args); | ||
|  | int BTreeGeAtt (btree_t tree, YAP_Term constraint, Yap_UdiCallback callback, void *args); | ||
|  | int BTreeRangeAtt (btree_t tree, YAP_Term constraint, Yap_UdiCallback callback, void *args); | ||
|  | 
 | ||
|  | static struct Att att_func[] =  | ||
|  |   { | ||
|  |     {"min",BTreeMinAtt}, | ||
|  |     {"max",BTreeMaxAtt}, | ||
|  |     {"eq",BTreeEqAtt}, | ||
|  |     {"lt",BTreeLtAtt}, | ||
|  |     {"le",BTreeLeAtt}, | ||
|  |     {"gt",BTreeGtAtt}, | ||
|  |     {"ge",BTreeGeAtt}, | ||
|  |     {"range",BTreeRangeAtt} | ||
|  |   }; | ||
|  | 
 | ||
|  | #endif /* __BTREE_UDI_H__ */
 |