Index: third_party/sqlite/sqlite-src-3080704/ext/rtree/sqlite3rtree.h |
diff --git a/third_party/sqlite/sqlite-src-3080704/ext/rtree/sqlite3rtree.h b/third_party/sqlite/sqlite-src-3080704/ext/rtree/sqlite3rtree.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5de0508d002380b2e94fadf88341104abf8e258d |
--- /dev/null |
+++ b/third_party/sqlite/sqlite-src-3080704/ext/rtree/sqlite3rtree.h |
@@ -0,0 +1,115 @@ |
+/* |
+** 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" { |
+#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 |
+** 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, sqlite3_rtree_dbl*,int*), |
+ 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[] */ |
+ 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 */ |
+#endif |
+ |
+#endif /* ifndef _SQLITE3RTREE_H_ */ |