• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
20 extern "C" {
21 #endif
22 
23 typedef 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 */
31 int 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 */
43 struct 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