| Index: third_party/sqlite/src/ext/rtree/sqlite3rtree.h | 
| diff --git a/third_party/sqlite/src/ext/rtree/sqlite3rtree.h b/third_party/sqlite/src/ext/rtree/sqlite3rtree.h | 
| index cffb300092ef1d8bf89065067f9584b22633281f..5de0508d002380b2e94fadf88341104abf8e258d 100644 | 
| --- a/third_party/sqlite/src/ext/rtree/sqlite3rtree.h | 
| +++ b/third_party/sqlite/src/ext/rtree/sqlite3rtree.h | 
| @@ -21,6 +21,16 @@ extern "C" { | 
| #endif | 
|  | 
| typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry; | 
| +typedef struct sqlite3_rtree_query_info sqlite3_rtree_query_info; | 
| + | 
| +/* The double-precision datatype used by RTree depends on the | 
| +** SQLITE_RTREE_INT_ONLY compile-time option. | 
| +*/ | 
| +#ifdef SQLITE_RTREE_INT_ONLY | 
| +  typedef sqlite3_int64 sqlite3_rtree_dbl; | 
| +#else | 
| +  typedef double sqlite3_rtree_dbl; | 
| +#endif | 
|  | 
| /* | 
| ** Register a geometry callback named zGeom that can be used as part of an | 
| @@ -31,7 +41,7 @@ typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry; | 
| int sqlite3_rtree_geometry_callback( | 
| sqlite3 *db, | 
| const char *zGeom, | 
| -  int (*xGeom)(sqlite3_rtree_geometry *, int nCoord, double *aCoord, int *pRes), | 
| +  int (*xGeom)(sqlite3_rtree_geometry*, int, sqlite3_rtree_dbl*,int*), | 
| void *pContext | 
| ); | 
|  | 
| @@ -43,11 +53,60 @@ int sqlite3_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 */ | 
| +  sqlite3_rtree_dbl *aParam;      /* Parameters passed to SQL geom function */ | 
| void *pUser;                    /* Callback implementation user data */ | 
| void (*xDelUser)(void *);       /* Called by SQLite to clean up pUser */ | 
| }; | 
|  | 
| +/* | 
| +** Register a 2nd-generation geometry callback named zScore that can be | 
| +** used as part of an R-Tree geometry query as follows: | 
| +** | 
| +**   SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zQueryFunc(... params ...) | 
| +*/ | 
| +int sqlite3_rtree_query_callback( | 
| +  sqlite3 *db, | 
| +  const char *zQueryFunc, | 
| +  int (*xQueryFunc)(sqlite3_rtree_query_info*), | 
| +  void *pContext, | 
| +  void (*xDestructor)(void*) | 
| +); | 
| + | 
| + | 
| +/* | 
| +** A pointer to a structure of the following type is passed as the | 
| +** argument to scored geometry callback registered using | 
| +** sqlite3_rtree_query_callback(). | 
| +** | 
| +** Note that the first 5 fields of this structure are identical to | 
| +** sqlite3_rtree_geometry.  This structure is a subclass of | 
| +** sqlite3_rtree_geometry. | 
| +*/ | 
| +struct sqlite3_rtree_query_info { | 
| +  void *pContext;                   /* pContext from when function registered */ | 
| +  int nParam;                       /* Number of function parameters */ | 
| +  sqlite3_rtree_dbl *aParam;        /* value of function parameters */ | 
| +  void *pUser;                      /* callback can use this, if desired */ | 
| +  void (*xDelUser)(void*);          /* function to free pUser */ | 
| +  sqlite3_rtree_dbl *aCoord;        /* Coordinates of node or entry to check */ | 
| +  unsigned int *anQueue;            /* Number of pending entries in the queue */ | 
| +  int nCoord;                       /* Number of coordinates */ | 
| +  int iLevel;                       /* Level of current node or entry */ | 
| +  int mxLevel;                      /* The largest iLevel value in the tree */ | 
| +  sqlite3_int64 iRowid;             /* Rowid for current entry */ | 
| +  sqlite3_rtree_dbl rParentScore;   /* Score of parent node */ | 
| +  int eParentWithin;                /* Visibility of parent node */ | 
| +  int eWithin;                      /* OUT: Visiblity */ | 
| +  sqlite3_rtree_dbl rScore;         /* OUT: Write the score here */ | 
| +}; | 
| + | 
| +/* | 
| +** Allowed values for sqlite3_rtree_query.eWithin and .eParentWithin. | 
| +*/ | 
| +#define NOT_WITHIN       0   /* Object completely outside of query region */ | 
| +#define PARTLY_WITHIN    1   /* Object partially overlaps query region */ | 
| +#define FULLY_WITHIN     2   /* Object fully contained within query region */ | 
| + | 
|  | 
| #ifdef __cplusplus | 
| }  /* end of the 'extern "C"' block */ | 
|  |