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