/ Artifact Content
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

Artifact c34c1e41d1ab80bb8ad09aae402c9c956871a765:

** 2010 August 30
** The author disclaims copyright to this source code.  In place of
** a legal notice, here is a blessing:
**    May you do good and not evil.
**    May you find forgiveness for yourself and forgive others.
**    May you share freely, never taking more than you give.

#ifndef _SQLITE3RTREE_H_
#define _SQLITE3RTREE_H_

#include <sqlite3.h>

#ifdef __cplusplus
extern "C" {

typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry;

** Register a geometry callback named zGeom that can be used as part of an
** R-Tree geometry query as follows:
**   SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zGeom(... params ...)
int sqlite3_rtree_geometry_callback(
  sqlite3 *db,
  const char *zGeom,
  int (*xGeom)(sqlite3_rtree_geometry*, int n, sqlite3_int64 *a, int *pRes),
  int (*xGeom)(sqlite3_rtree_geometry*, int n, double *a, int *pRes),
  void *pContext

** A pointer to a structure of the following type is passed as the first
** argument to callbacks registered using rtree_geometry_callback().
struct sqlite3_rtree_geometry {
  void *pContext;                 /* Copy of pContext passed to s_r_g_c() */
  int nParam;                     /* Size of array aParam[] */
  double *aParam;                 /* Parameters passed to SQL geom function */
  void *pUser;                    /* Callback implementation user data */
  void (*xDelUser)(void *);       /* Called by SQLite to clean up pUser */

#ifdef __cplusplus
}  /* end of the 'extern "C"' block */

#endif  /* ifndef _SQLITE3RTREE_H_ */