1/* 2** 2010 August 30 3** 4** The author disclaims copyright to this source code. In place of 5** a legal notice, here is a blessing: 6** 7** May you do good and not evil. 8** May you find forgiveness for yourself and forgive others. 9** May you share freely, never taking more than you give. 10** 11************************************************************************* 12*/ 13 14#ifndef _SQLITE3RTREE_H_ 15#define _SQLITE3RTREE_H_ 16 17#include <sqlite3.h> 18 19#ifdef __cplusplus 20extern "C" { 21#endif 22 23typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry; 24 25/* 26** Register a geometry callback named zGeom that can be used as part of an 27** R-Tree geometry query as follows: 28** 29** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zGeom(... params ...) 30*/ 31int sqlite3_rtree_geometry_callback( 32 sqlite3 *db, 33 const char *zGeom, 34 int (*xGeom)(sqlite3_rtree_geometry *, int nCoord, double *aCoord, int *pRes), 35 void *pContext 36); 37 38 39/* 40** A pointer to a structure of the following type is passed as the first 41** argument to callbacks registered using rtree_geometry_callback(). 42*/ 43struct sqlite3_rtree_geometry { 44 void *pContext; /* Copy of pContext passed to s_r_g_c() */ 45 int nParam; /* Size of array aParam[] */ 46 double *aParam; /* Parameters passed to SQL geom function */ 47 void *pUser; /* Callback implementation user data */ 48 void (*xDelUser)(void *); /* Called by SQLite to clean up pUser */ 49}; 50 51 52#ifdef __cplusplus 53} /* end of the 'extern "C"' block */ 54#endif 55 56#endif /* ifndef _SQLITE3RTREE_H_ */ 57