@@ -52,6 +52,28 @@ static void sql_cellToLng(sqlite3_context *context, int argc,
52
52
}
53
53
}
54
54
55
+ static void sql_cellToParent (sqlite3_context * context , int argc ,
56
+ sqlite3_value * * argv ) {
57
+ assert (argc == 2 );
58
+ H3Index index = sqlite3_value_int64 (argv [0 ]);
59
+ int res = sqlite3_value_int (argv [1 ]);
60
+ H3Index parent ;
61
+ H3Error err = cellToParent (index , res , & parent );
62
+ if (err == E_SUCCESS ) {
63
+ sqlite3_result_int64 (context , parent );
64
+ } else {
65
+ sqlite3_result_error (context , "H3 function call failed" , -1 );
66
+ }
67
+ }
68
+
69
+ static void sql_getResolution (sqlite3_context * context , int argc ,
70
+ sqlite3_value * * argv ) {
71
+ assert (argc == 1 );
72
+ H3Index index = sqlite3_value_int64 (argv [0 ]);
73
+ int res = getResolution (index );
74
+ sqlite3_result_int (context , res );
75
+ }
76
+
55
77
#ifdef _WIN32
56
78
__declspec(dllexport )
57
79
#endif
@@ -76,5 +98,17 @@ __declspec(dllexport)
76
98
SQLITE_DETERMINISTIC ,
77
99
0 , sql_cellToLng , 0 , 0 );
78
100
}
101
+ if (rc == SQLITE_OK ) {
102
+ rc = sqlite3_create_function (db , "cellToParent" , 2 ,
103
+ SQLITE_UTF8 | SQLITE_INNOCUOUS |
104
+ SQLITE_DETERMINISTIC ,
105
+ 0 , sql_cellToParent , 0 , 0 );
106
+ }
107
+ if (rc == SQLITE_OK ) {
108
+ rc = sqlite3_create_function (db , "getResolution" , 1 ,
109
+ SQLITE_UTF8 | SQLITE_INNOCUOUS |
110
+ SQLITE_DETERMINISTIC ,
111
+ 0 , sql_getResolution , 0 , 0 );
112
+ }
79
113
return rc ;
80
114
}
0 commit comments