summaryrefslogtreecommitdiff
path: root/android/sqlite3_android.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'android/sqlite3_android.cpp')
-rw-r--r--android/sqlite3_android.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/android/sqlite3_android.cpp b/android/sqlite3_android.cpp
index ab52c5c..5cc39d8 100644
--- a/android/sqlite3_android.cpp
+++ b/android/sqlite3_android.cpp
@@ -34,6 +34,7 @@
#define ENABLE_ANDROID_LOG 0
#define SMALL_BUFFER_SIZE 10
+#define PHONE_NUMBER_BUFFER_SIZE 40
static int collate16(void *p, int n1, const void *v1, int n2, const void *v2)
{
@@ -153,6 +154,27 @@ static void phone_numbers_equal(sqlite3_context * context, int argc, sqlite3_val
}
}
+static void phone_number_stripped_reversed(sqlite3_context * context, int argc,
+ sqlite3_value ** argv)
+{
+ if (argc != 1) {
+ sqlite3_result_int(context, 0);
+ return;
+ }
+
+ char const * number = (char const *)sqlite3_value_text(argv[0]);
+ if (number == NULL) {
+ sqlite3_result_null(context);
+ return;
+ }
+
+ char out[PHONE_NUMBER_BUFFER_SIZE];
+ int outlen = 0;
+ android::phone_number_stripped_reversed_inter(number, out, PHONE_NUMBER_BUFFER_SIZE, &outlen);
+ sqlite3_result_text(context, (const char*)out, outlen, SQLITE_TRANSIENT);
+}
+
+
#if ENABLE_ANDROID_LOG
static void android_log(sqlite3_context * context, int argc, sqlite3_value ** argv)
{
@@ -582,5 +604,17 @@ extern "C" int register_android_functions(sqlite3 * handle, int utf16Storage)
return err;
}
+ // Register the _PHONE_NUMBER_STRIPPED_REVERSED function, which imitates
+ // PhoneNumberUtils.getStrippedReversed. This function is not public API,
+ // it is only used for compatibility with Android 1.6 and earlier.
+ err = sqlite3_create_function(handle,
+ "_PHONE_NUMBER_STRIPPED_REVERSED",
+ 1, SQLITE_UTF8, NULL,
+ phone_number_stripped_reversed,
+ NULL, NULL);
+ if (err != SQLITE_OK) {
+ return err;
+ }
+
return SQLITE_OK;
}