mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Adapted the JNI bindings for the sqlite3_value_...() and (pre)update hook APIs to the new pointer-passing mechanism.
FossilOrigin-Name: 4182f0275d5d65e04a130eeef4d44642a5ffeeb4b84430d240ea2605345f1404
This commit is contained in:
@ -3792,8 +3792,8 @@ S3JniApi(sqlite3_preupdate_depth(),int,1preupdate_1depth)(
|
|||||||
** JNI wrapper for both sqlite3_update_hook() and
|
** JNI wrapper for both sqlite3_update_hook() and
|
||||||
** sqlite3_preupdate_hook() (if isPre is true).
|
** sqlite3_preupdate_hook() (if isPre is true).
|
||||||
*/
|
*/
|
||||||
static jobject s3jni_updatepre_hook(JNIEnv * env, int isPre, jobject jDb, jobject jHook){
|
static jobject s3jni_updatepre_hook(JNIEnv * env, int isPre, jlong jpDb, jobject jHook){
|
||||||
S3JniDb * const ps = S3JniDb_from_java(jDb);
|
S3JniDb * const ps = S3JniDb_from_c(S3JniLongPtr_sqlite3(jpDb));
|
||||||
jclass klazz;
|
jclass klazz;
|
||||||
jobject pOld = 0;
|
jobject pOld = 0;
|
||||||
jmethodID xCallback;
|
jmethodID xCallback;
|
||||||
@ -3866,20 +3866,20 @@ end:
|
|||||||
|
|
||||||
|
|
||||||
S3JniApi(sqlite3_preupdate_hook(),jobject,1preupdate_1hook)(
|
S3JniApi(sqlite3_preupdate_hook(),jobject,1preupdate_1hook)(
|
||||||
JniArgsEnvClass, jobject jDb, jobject jHook
|
JniArgsEnvClass, jlong jpDb, jobject jHook
|
||||||
){
|
){
|
||||||
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
|
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
|
||||||
return s3jni_updatepre_hook(env, 1, jDb, jHook);
|
return s3jni_updatepre_hook(env, 1, jpDb, jHook);
|
||||||
#else
|
#else
|
||||||
return NULL;
|
return NULL;
|
||||||
#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */
|
#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Impl for sqlite3_preupdate_{new,old}(). */
|
/* Impl for sqlite3_preupdate_{new,old}(). */
|
||||||
static int s3jni_preupdate_newold(JNIEnv * const env, int isNew, jobject jDb,
|
static int s3jni_preupdate_newold(JNIEnv * const env, int isNew, jlong jpDb,
|
||||||
jint iCol, jobject jOut){
|
jint iCol, jobject jOut){
|
||||||
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
|
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
|
||||||
sqlite3 * const pDb = PtrGet_sqlite3(jDb);
|
sqlite3 * const pDb = S3JniLongPtr_sqlite3(jpDb);
|
||||||
int rc = SQLITE_MISUSE;
|
int rc = SQLITE_MISUSE;
|
||||||
if( pDb ){
|
if( pDb ){
|
||||||
sqlite3_value * pOut = 0;
|
sqlite3_value * pOut = 0;
|
||||||
@ -3903,15 +3903,15 @@ static int s3jni_preupdate_newold(JNIEnv * const env, int isNew, jobject jDb,
|
|||||||
}
|
}
|
||||||
|
|
||||||
S3JniApi(sqlite3_preupdate_new(),jint,1preupdate_1new)(
|
S3JniApi(sqlite3_preupdate_new(),jint,1preupdate_1new)(
|
||||||
JniArgsEnvClass, jobject jDb, jint iCol, jobject jOut
|
JniArgsEnvClass, jlong jpDb, jint iCol, jobject jOut
|
||||||
){
|
){
|
||||||
return s3jni_preupdate_newold(env, 1, jDb, iCol, jOut);
|
return s3jni_preupdate_newold(env, 1, jpDb, iCol, jOut);
|
||||||
}
|
}
|
||||||
|
|
||||||
S3JniApi(sqlite3_preupdate_old(),jint,1preupdate_1old)(
|
S3JniApi(sqlite3_preupdate_old(),jint,1preupdate_1old)(
|
||||||
JniArgsEnvClass, jobject jDb, jint iCol, jobject jOut
|
JniArgsEnvClass, jlong jpDb, jint iCol, jobject jOut
|
||||||
){
|
){
|
||||||
return s3jni_preupdate_newold(env, 0, jDb, iCol, jOut);
|
return s3jni_preupdate_newold(env, 0, jpDb, iCol, jOut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4619,16 +4619,16 @@ S3JniApi(sqlite3_txn_state(),jint,1txn_1state)(
|
|||||||
}
|
}
|
||||||
|
|
||||||
S3JniApi(sqlite3_update_hook(),jobject,1update_1hook)(
|
S3JniApi(sqlite3_update_hook(),jobject,1update_1hook)(
|
||||||
JniArgsEnvClass, jobject jDb, jobject jHook
|
JniArgsEnvClass, jlong jpDb, jobject jHook
|
||||||
){
|
){
|
||||||
return s3jni_updatepre_hook(env, 0, jDb, jHook);
|
return s3jni_updatepre_hook(env, 0, jpDb, jHook);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
S3JniApi(sqlite3_value_blob(),jbyteArray,1value_1blob)(
|
S3JniApi(sqlite3_value_blob(),jbyteArray,1value_1blob)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jlong jpSVal
|
||||||
){
|
){
|
||||||
sqlite3_value * const sv = PtrGet_sqlite3_value(jpSVal);
|
sqlite3_value * const sv = S3JniLongPtr_sqlite3_value(jpSVal);
|
||||||
int const nLen = sqlite3_value_bytes(sv);
|
int const nLen = sqlite3_value_bytes(sv);
|
||||||
const jbyte * pBytes = sqlite3_value_blob(sv);
|
const jbyte * pBytes = sqlite3_value_blob(sv);
|
||||||
|
|
||||||
@ -4640,48 +4640,48 @@ S3JniApi(sqlite3_value_blob(),jbyteArray,1value_1blob)(
|
|||||||
|
|
||||||
|
|
||||||
S3JniApi(sqlite3_value_double(),jdouble,1value_1double)(
|
S3JniApi(sqlite3_value_double(),jdouble,1value_1double)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jlong jpSVal
|
||||||
){
|
){
|
||||||
return (jdouble) sqlite3_value_double(PtrGet_sqlite3_value(jpSVal));
|
return (jdouble) sqlite3_value_double(S3JniLongPtr_sqlite3_value(jpSVal));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
S3JniApi(sqlite3_value_dup(),jobject,1value_1dup)(
|
S3JniApi(sqlite3_value_dup(),jobject,1value_1dup)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jlong jpSVal
|
||||||
){
|
){
|
||||||
sqlite3_value * const sv = sqlite3_value_dup(PtrGet_sqlite3_value(jpSVal));
|
sqlite3_value * const sv = sqlite3_value_dup(S3JniLongPtr_sqlite3_value(jpSVal));
|
||||||
return sv ? new_java_sqlite3_value(env, sv) : 0;
|
return sv ? new_java_sqlite3_value(env, sv) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
S3JniApi(sqlite3_value_free(),void,1value_1free)(
|
S3JniApi(sqlite3_value_free(),void,1value_1free)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jlong jpSVal
|
||||||
){
|
){
|
||||||
sqlite3_value_free(PtrGet_sqlite3_value(jpSVal));
|
sqlite3_value_free(S3JniLongPtr_sqlite3_value(jpSVal));
|
||||||
}
|
}
|
||||||
|
|
||||||
S3JniApi(sqlite3_value_int(),jint,1value_1int)(
|
S3JniApi(sqlite3_value_int(),jint,1value_1int)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jlong jpSVal
|
||||||
){
|
){
|
||||||
return (jint) sqlite3_value_int(PtrGet_sqlite3_value(jpSVal));
|
return (jint) sqlite3_value_int(S3JniLongPtr_sqlite3_value(jpSVal));
|
||||||
}
|
}
|
||||||
|
|
||||||
S3JniApi(sqlite3_value_int64(),jlong,1value_1int64)(
|
S3JniApi(sqlite3_value_int64(),jlong,1value_1int64)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jlong jpSVal
|
||||||
){
|
){
|
||||||
return (jlong) sqlite3_value_int64(PtrGet_sqlite3_value(jpSVal));
|
return (jlong) sqlite3_value_int64(S3JniLongPtr_sqlite3_value(jpSVal));
|
||||||
}
|
}
|
||||||
|
|
||||||
S3JniApi(sqlite3_value_java_object(),jobject,1value_1java_1object)(
|
S3JniApi(sqlite3_value_java_object(),jobject,1value_1java_1object)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jlong jpSVal
|
||||||
){
|
){
|
||||||
return sqlite3_value_pointer(PtrGet_sqlite3_value(jpSVal),
|
return sqlite3_value_pointer(S3JniLongPtr_sqlite3_value(jpSVal),
|
||||||
ResultJavaValuePtrStr);
|
ResultJavaValuePtrStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
S3JniApi(sqlite3_value_text(),jbyteArray,1value_1text)(
|
S3JniApi(sqlite3_value_text(),jbyteArray,1value_1text)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jlong jpSVal
|
||||||
){
|
){
|
||||||
sqlite3_value * const sv = PtrGet_sqlite3_value(jpSVal);
|
sqlite3_value * const sv = S3JniLongPtr_sqlite3_value(jpSVal);
|
||||||
int const n = sqlite3_value_bytes(sv);
|
int const n = sqlite3_value_bytes(sv);
|
||||||
const unsigned char * const p = sqlite3_value_text(sv);
|
const unsigned char * const p = sqlite3_value_text(sv);
|
||||||
return p ? s3jni_new_jbyteArray(p, n) : 0;
|
return p ? s3jni_new_jbyteArray(p, n) : 0;
|
||||||
@ -4690,9 +4690,9 @@ S3JniApi(sqlite3_value_text(),jbyteArray,1value_1text)(
|
|||||||
#if 0
|
#if 0
|
||||||
// this impl might prove useful.
|
// this impl might prove useful.
|
||||||
S3JniApi(sqlite3_value_text(),jstring,1value_1text)(
|
S3JniApi(sqlite3_value_text(),jstring,1value_1text)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jlong jpSVal
|
||||||
){
|
){
|
||||||
sqlite3_value * const sv = PtrGet_sqlite3_value(jpSVal);
|
sqlite3_value * const sv = S3JniLongPtr_sqlite3_value(jpSVal);
|
||||||
int const n = sqlite3_value_bytes(sv);
|
int const n = sqlite3_value_bytes(sv);
|
||||||
const unsigned char * const p = sqlite3_value_text(sv);
|
const unsigned char * const p = sqlite3_value_text(sv);
|
||||||
return p ? s3jni_utf8_to_jstring( (const char *)p, n) : 0;
|
return p ? s3jni_utf8_to_jstring( (const char *)p, n) : 0;
|
||||||
@ -4700,9 +4700,9 @@ S3JniApi(sqlite3_value_text(),jstring,1value_1text)(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
S3JniApi(sqlite3_value_text16(),jstring,1value_1text16)(
|
S3JniApi(sqlite3_value_text16(),jstring,1value_1text16)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jlong jpSVal
|
||||||
){
|
){
|
||||||
sqlite3_value * const sv = PtrGet_sqlite3_value(jpSVal);
|
sqlite3_value * const sv = S3JniLongPtr_sqlite3_value(jpSVal);
|
||||||
const int n = sqlite3_value_bytes16(sv);
|
const int n = sqlite3_value_bytes16(sv);
|
||||||
const void * const p = sqlite3_value_text16(sv);
|
const void * const p = sqlite3_value_text16(sv);
|
||||||
return s3jni_text16_to_jstring(env, p, n);
|
return s3jni_text16_to_jstring(env, p, n);
|
||||||
|
@ -1566,26 +1566,26 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1depth
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_preupdate_hook
|
* Method: sqlite3_preupdate_hook
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/PreupdateHookCallback;)Lorg/sqlite/jni/PreupdateHookCallback;
|
* Signature: (JLorg/sqlite/jni/PreupdateHookCallback;)Lorg/sqlite/jni/PreupdateHookCallback;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1hook
|
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1hook
|
||||||
(JNIEnv *, jclass, jobject, jobject);
|
(JNIEnv *, jclass, jlong, jobject);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_preupdate_new
|
* Method: sqlite3_preupdate_new
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;ILorg/sqlite/jni/OutputPointer/sqlite3_value;)I
|
* Signature: (JILorg/sqlite/jni/OutputPointer/sqlite3_value;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1new
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1new
|
||||||
(JNIEnv *, jclass, jobject, jint, jobject);
|
(JNIEnv *, jclass, jlong, jint, jobject);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_preupdate_old
|
* Method: sqlite3_preupdate_old
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;ILorg/sqlite/jni/OutputPointer/sqlite3_value;)I
|
* Signature: (JILorg/sqlite/jni/OutputPointer/sqlite3_value;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1old
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1old
|
||||||
(JNIEnv *, jclass, jobject, jint, jobject);
|
(JNIEnv *, jclass, jlong, jint, jobject);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
@ -1950,18 +1950,18 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1txn_1state
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_update_hook
|
* Method: sqlite3_update_hook
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/UpdateHookCallback;)Lorg/sqlite/jni/UpdateHookCallback;
|
* Signature: (JLorg/sqlite/jni/UpdateHookCallback;)Lorg/sqlite/jni/UpdateHookCallback;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1update_1hook
|
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1update_1hook
|
||||||
(JNIEnv *, jclass, jobject, jobject);
|
(JNIEnv *, jclass, jlong, jobject);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_value_blob
|
* Method: sqlite3_value_blob
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3_value;)[B
|
* Signature: (J)[B
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jbyteArray JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1blob
|
JNIEXPORT jbyteArray JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1blob
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
@ -1982,18 +1982,18 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1bytes16
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_value_double
|
* Method: sqlite3_value_double
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3_value;)D
|
* Signature: (J)D
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jdouble JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1double
|
JNIEXPORT jdouble JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1double
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_value_dup
|
* Method: sqlite3_value_dup
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3_value;)Lorg/sqlite/jni/sqlite3_value;
|
* Signature: (J)Lorg/sqlite/jni/sqlite3_value;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1dup
|
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1dup
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
@ -2006,10 +2006,10 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1encoding
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_value_free
|
* Method: sqlite3_value_free
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3_value;)V
|
* Signature: (J)V
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1free
|
JNIEXPORT void JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1free
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
@ -2022,26 +2022,26 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1frombind
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_value_int
|
* Method: sqlite3_value_int
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3_value;)I
|
* Signature: (J)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1int
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1int
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_value_int64
|
* Method: sqlite3_value_int64
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3_value;)J
|
* Signature: (J)J
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jlong JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1int64
|
JNIEXPORT jlong JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1int64
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_value_java_object
|
* Method: sqlite3_value_java_object
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3_value;)Ljava/lang/Object;
|
* Signature: (J)Ljava/lang/Object;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1java_1object
|
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1java_1object
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
@ -2070,18 +2070,18 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1subtype
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_value_text
|
* Method: sqlite3_value_text
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3_value;)[B
|
* Signature: (J)[B
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jbyteArray JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1text
|
JNIEXPORT jbyteArray JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1text
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_value_text16
|
* Method: sqlite3_value_text16
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3_value;)Ljava/lang/String;
|
* Signature: (J)Ljava/lang/String;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jstring JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1text16
|
JNIEXPORT jstring JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1text16
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
|
@ -1372,15 +1372,26 @@ public final class SQLite3Jni {
|
|||||||
return sqlite3_preupdate_depth(db.getNativePointer());
|
return sqlite3_preupdate_depth(db.getNativePointer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
private static native PreupdateHookCallback sqlite3_preupdate_hook(
|
||||||
|
@NotNull long ptrToDb, @Nullable PreupdateHookCallback hook
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined, this
|
If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined, this
|
||||||
acts as a proxy for C's sqlite3_preupdate_hook(), else it returns null
|
acts as a proxy for C's sqlite3_preupdate_hook(), else it returns null
|
||||||
with no side effects.
|
with no side effects.
|
||||||
*/
|
*/
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native PreupdateHookCallback sqlite3_preupdate_hook(
|
public static PreupdateHookCallback sqlite3_preupdate_hook(
|
||||||
@NotNull sqlite3 db, @Nullable PreupdateHookCallback hook
|
@NotNull sqlite3 db, @Nullable PreupdateHookCallback hook
|
||||||
);
|
){
|
||||||
|
return sqlite3_preupdate_hook(db.getNativePointer(), hook);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
private static native int sqlite3_preupdate_new(@NotNull long ptrToDb, int col,
|
||||||
|
@NotNull OutputPointer.sqlite3_value out);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined,
|
If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined,
|
||||||
@ -1388,8 +1399,10 @@ public final class SQLite3Jni {
|
|||||||
returns SQLITE_MISUSE with no side effects.
|
returns SQLITE_MISUSE with no side effects.
|
||||||
*/
|
*/
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native int sqlite3_preupdate_new(@NotNull sqlite3 db, int col,
|
public static int sqlite3_preupdate_new(@NotNull sqlite3 db, int col,
|
||||||
@NotNull OutputPointer.sqlite3_value out);
|
@NotNull OutputPointer.sqlite3_value out){
|
||||||
|
return sqlite3_preupdate_new(db.getNativePointer(), col, out);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Convenience wrapper for the 3-arg sqlite3_preupdate_new() which returns
|
Convenience wrapper for the 3-arg sqlite3_preupdate_new() which returns
|
||||||
@ -1397,18 +1410,24 @@ public final class SQLite3Jni {
|
|||||||
*/
|
*/
|
||||||
public static sqlite3_value sqlite3_preupdate_new(@NotNull sqlite3 db, int col){
|
public static sqlite3_value sqlite3_preupdate_new(@NotNull sqlite3 db, int col){
|
||||||
final OutputPointer.sqlite3_value out = new OutputPointer.sqlite3_value();
|
final OutputPointer.sqlite3_value out = new OutputPointer.sqlite3_value();
|
||||||
sqlite3_preupdate_new(db, col, out);
|
sqlite3_preupdate_new(db.getNativePointer(), col, out);
|
||||||
return out.take();
|
return out.take();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
private static native int sqlite3_preupdate_old(@NotNull long ptrToDb, int col,
|
||||||
|
@NotNull OutputPointer.sqlite3_value out);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined,
|
If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined,
|
||||||
this acts as a proxy for C's sqlite3_preupdate_old(), else it
|
this acts as a proxy for C's sqlite3_preupdate_old(), else it
|
||||||
returns SQLITE_MISUSE with no side effects.
|
returns SQLITE_MISUSE with no side effects.
|
||||||
*/
|
*/
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native int sqlite3_preupdate_old(@NotNull sqlite3 db, int col,
|
public static int sqlite3_preupdate_old(@NotNull sqlite3 db, int col,
|
||||||
@NotNull OutputPointer.sqlite3_value out);
|
@NotNull OutputPointer.sqlite3_value out){
|
||||||
|
return sqlite3_preupdate_old(db.getNativePointer(), col, out);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Convenience wrapper for the 3-arg sqlite3_preupdate_old() which returns
|
Convenience wrapper for the 3-arg sqlite3_preupdate_old() which returns
|
||||||
@ -1416,7 +1435,7 @@ public final class SQLite3Jni {
|
|||||||
*/
|
*/
|
||||||
public static sqlite3_value sqlite3_preupdate_old(@NotNull sqlite3 db, int col){
|
public static sqlite3_value sqlite3_preupdate_old(@NotNull sqlite3 db, int col){
|
||||||
final OutputPointer.sqlite3_value out = new OutputPointer.sqlite3_value();
|
final OutputPointer.sqlite3_value out = new OutputPointer.sqlite3_value();
|
||||||
sqlite3_preupdate_old(db, col, out);
|
sqlite3_preupdate_old(db.getNativePointer(), col, out);
|
||||||
return out.take();
|
return out.take();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1966,10 +1985,17 @@ public final class SQLite3Jni {
|
|||||||
);
|
);
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native UpdateHookCallback sqlite3_update_hook(
|
private static native UpdateHookCallback sqlite3_update_hook(
|
||||||
@NotNull sqlite3 db, @Nullable UpdateHookCallback hook
|
@NotNull long ptrToDb, @Nullable UpdateHookCallback hook
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
public static UpdateHookCallback sqlite3_update_hook(
|
||||||
|
@NotNull sqlite3 db, @Nullable UpdateHookCallback hook
|
||||||
|
){
|
||||||
|
return sqlite3_update_hook(db.getNativePointer(), hook);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Note that:
|
Note that:
|
||||||
|
|
||||||
@ -1981,7 +2007,12 @@ public final class SQLite3Jni {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native byte[] sqlite3_value_blob(@NotNull sqlite3_value v);
|
private static native byte[] sqlite3_value_blob(@NotNull long ptrToValue);
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
public static byte[] sqlite3_value_blob(@NotNull sqlite3_value v){
|
||||||
|
return sqlite3_value_blob(v.getNativePointer());
|
||||||
|
}
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
private static native int sqlite3_value_bytes(@NotNull long ptrToValue);
|
private static native int sqlite3_value_bytes(@NotNull long ptrToValue);
|
||||||
@ -2000,12 +2031,20 @@ public final class SQLite3Jni {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native double sqlite3_value_double(@NotNull sqlite3_value v);
|
private static native double sqlite3_value_double(@NotNull long ptrToValue);
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native sqlite3_value sqlite3_value_dup(
|
public static double sqlite3_value_double(@NotNull sqlite3_value v){
|
||||||
@NotNull sqlite3_value v
|
return sqlite3_value_double(v.getNativePointer());
|
||||||
);
|
}
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
private static native sqlite3_value sqlite3_value_dup(@NotNull long ptrToValue);
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
public static sqlite3_value sqlite3_value_dup(@NotNull sqlite3_value v){
|
||||||
|
return sqlite3_value_dup(v.getNativePointer());
|
||||||
|
}
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
private static native int sqlite3_value_encoding(@NotNull long ptrToValue);
|
private static native int sqlite3_value_encoding(@NotNull long ptrToValue);
|
||||||
@ -2016,7 +2055,12 @@ public final class SQLite3Jni {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native void sqlite3_value_free(@Nullable sqlite3_value v);
|
private static native void sqlite3_value_free(@Nullable long ptrToValue);
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
public static void sqlite3_value_free(@Nullable sqlite3_value v){
|
||||||
|
sqlite3_value_free(v.getNativePointer());
|
||||||
|
}
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
private static native int sqlite3_value_frombind(@NotNull long ptrToValue);
|
private static native int sqlite3_value_frombind(@NotNull long ptrToValue);
|
||||||
@ -2027,10 +2071,22 @@ public final class SQLite3Jni {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native int sqlite3_value_int(@NotNull sqlite3_value v);
|
private static native int sqlite3_value_int(@NotNull long ptrToValue);
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native long sqlite3_value_int64(@NotNull sqlite3_value v);
|
public static int sqlite3_value_int(@NotNull sqlite3_value v){
|
||||||
|
return sqlite3_value_int(v.getNativePointer());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
private static native long sqlite3_value_int64(@NotNull long ptrToValue);
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
public static long sqlite3_value_int64(@NotNull sqlite3_value v){
|
||||||
|
return sqlite3_value_int64(v.getNativePointer());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static native Object sqlite3_value_java_object(@NotNull long ptrToValue);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
If the given value was set using {@link
|
If the given value was set using {@link
|
||||||
@ -2040,9 +2096,9 @@ public final class SQLite3Jni {
|
|||||||
<p>It is up to the caller to inspect the object to determine its
|
<p>It is up to the caller to inspect the object to determine its
|
||||||
type, and cast it if necessary.
|
type, and cast it if necessary.
|
||||||
*/
|
*/
|
||||||
public static native Object sqlite3_value_java_object(
|
public static Object sqlite3_value_java_object(@NotNull sqlite3_value v){
|
||||||
@NotNull sqlite3_value v
|
return sqlite3_value_java_object(v.getNativePointer());
|
||||||
);
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
A variant of sqlite3_value_java_object() which returns the
|
A variant of sqlite3_value_java_object() which returns the
|
||||||
@ -2080,6 +2136,9 @@ public final class SQLite3Jni {
|
|||||||
return sqlite3_value_subtype(v.getNativePointer());
|
return sqlite3_value_subtype(v.getNativePointer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
private static native byte[] sqlite3_value_text(@NotNull long ptrToValue);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Functions identially to the C API, and this note is just to
|
Functions identially to the C API, and this note is just to
|
||||||
stress that the returned bytes are encoded as UTF-8. It returns
|
stress that the returned bytes are encoded as UTF-8. It returns
|
||||||
@ -2087,10 +2146,17 @@ public final class SQLite3Jni {
|
|||||||
or on allocation error.
|
or on allocation error.
|
||||||
*/
|
*/
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native byte[] sqlite3_value_text(@NotNull sqlite3_value v);
|
public static byte[] sqlite3_value_text(@NotNull sqlite3_value v){
|
||||||
|
return sqlite3_value_text(v.getNativePointer());
|
||||||
|
}
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
public static native String sqlite3_value_text16(@NotNull sqlite3_value v);
|
private static native String sqlite3_value_text16(@NotNull long ptrToValue);
|
||||||
|
|
||||||
|
@Canonical
|
||||||
|
public static String sqlite3_value_text16(@NotNull sqlite3_value v){
|
||||||
|
return sqlite3_value_text16(v.getNativePointer());
|
||||||
|
}
|
||||||
|
|
||||||
@Canonical
|
@Canonical
|
||||||
private static native int sqlite3_value_type(@NotNull long ptrToValue);
|
private static native int sqlite3_value_type(@NotNull long ptrToValue);
|
||||||
|
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
|||||||
C Convert\sthe\sremaining\smacro-generated\sJNI\sbindings\sto\sthe\snew\spointer-passing\smechanism.
|
C Adapted\sthe\sJNI\sbindings\sfor\sthe\ssqlite3_value_...()\sand\s(pre)update\shook\sAPIs\sto\sthe\snew\spointer-passing\smechanism.
|
||||||
D 2023-09-28T10:50:26.804
|
D 2023-09-28T11:19:37.102
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@ -238,8 +238,8 @@ F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a3
|
|||||||
F ext/jni/GNUmakefile 42e00052401b6dd41c0cdd53b31450606ea37486283abdb038dff9be74bff71e
|
F ext/jni/GNUmakefile 42e00052401b6dd41c0cdd53b31450606ea37486283abdb038dff9be74bff71e
|
||||||
F ext/jni/README.md 9fceaeb17cecdc5d699dfc83c0cbc3a03fdb3b86bf676381894166c73375ee75
|
F ext/jni/README.md 9fceaeb17cecdc5d699dfc83c0cbc3a03fdb3b86bf676381894166c73375ee75
|
||||||
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
|
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
|
||||||
F ext/jni/src/c/sqlite3-jni.c cb456137ac67fc9859279d7c5029bf771954df5f4922abbbf2be2a79b0909116
|
F ext/jni/src/c/sqlite3-jni.c 9d5ea1bf8c7da874fdd6dc3f7cd05632c82e747fb6f4b4b3967f7aadae3ac910
|
||||||
F ext/jni/src/c/sqlite3-jni.h ad69a8b62390c8ad5be254fa1a065c0ba48152b271d82edb84f89edf4c83669c
|
F ext/jni/src/c/sqlite3-jni.h 0c13ef53143ad6b3ed0e6b15f706f9f03e9c0c6c4f896a5846e4a68e58da83c8
|
||||||
F ext/jni/src/org/sqlite/jni/AbstractCollationCallback.java 95e88ba04f4aac51ffec65693e878e234088b2f21b387f4e4285c8b72b33e436
|
F ext/jni/src/org/sqlite/jni/AbstractCollationCallback.java 95e88ba04f4aac51ffec65693e878e234088b2f21b387f4e4285c8b72b33e436
|
||||||
F ext/jni/src/org/sqlite/jni/AggregateFunction.java 7312486bc65fecdb91753c0a4515799194e031f45edbe16a6373cea18f404dc4
|
F ext/jni/src/org/sqlite/jni/AggregateFunction.java 7312486bc65fecdb91753c0a4515799194e031f45edbe16a6373cea18f404dc4
|
||||||
F ext/jni/src/org/sqlite/jni/AuthorizerCallback.java e6135be32f12bf140bffa39be7fd1a45ad83b2661ed49c08dbde04c8485feb38
|
F ext/jni/src/org/sqlite/jni/AuthorizerCallback.java e6135be32f12bf140bffa39be7fd1a45ad83b2661ed49c08dbde04c8485feb38
|
||||||
@ -259,7 +259,7 @@ F ext/jni/src/org/sqlite/jni/ProgressHandlerCallback.java 7b9ff2218129ece98ba60c
|
|||||||
F ext/jni/src/org/sqlite/jni/ResultCode.java ba701f20213a5f259e94cfbfdd36eb7ac7ce7797f2c6c7fca2004ff12ce20f86
|
F ext/jni/src/org/sqlite/jni/ResultCode.java ba701f20213a5f259e94cfbfdd36eb7ac7ce7797f2c6c7fca2004ff12ce20f86
|
||||||
F ext/jni/src/org/sqlite/jni/RollbackHookCallback.java d12352c0e22840de484ffa9b11ed5058bb0daca2e9f218055d3c54c947a273c4
|
F ext/jni/src/org/sqlite/jni/RollbackHookCallback.java d12352c0e22840de484ffa9b11ed5058bb0daca2e9f218055d3c54c947a273c4
|
||||||
F ext/jni/src/org/sqlite/jni/SQLFunction.java 544a875d33fd160467d82e2397ac33157b29971d715a821a4fad3c899113ee8c
|
F ext/jni/src/org/sqlite/jni/SQLFunction.java 544a875d33fd160467d82e2397ac33157b29971d715a821a4fad3c899113ee8c
|
||||||
F ext/jni/src/org/sqlite/jni/SQLite3Jni.java e03e2a3e773c95401c97f334e7389dcf9ebe65d01a9c6e0ada1a1e8618958d7f
|
F ext/jni/src/org/sqlite/jni/SQLite3Jni.java 8dc0c48378eaf04bfc868bd8069dd5e55365b5d50d2e14b6e075c2afee1a5844
|
||||||
F ext/jni/src/org/sqlite/jni/ScalarFunction.java 6d387bb499fbe3bc13c53315335233dbf6a0c711e8fa7c521683219b041c614c
|
F ext/jni/src/org/sqlite/jni/ScalarFunction.java 6d387bb499fbe3bc13c53315335233dbf6a0c711e8fa7c521683219b041c614c
|
||||||
F ext/jni/src/org/sqlite/jni/TableColumnMetadata.java 54511b4297fa28dcb3f49b24035e34ced10e3fd44fd0e458e784f4d6b0096dab
|
F ext/jni/src/org/sqlite/jni/TableColumnMetadata.java 54511b4297fa28dcb3f49b24035e34ced10e3fd44fd0e458e784f4d6b0096dab
|
||||||
F ext/jni/src/org/sqlite/jni/Tester1.java 720e1efddd769d5785e95100ff48aa203f2288eea865326a1a81fd5af43ec3a5
|
F ext/jni/src/org/sqlite/jni/Tester1.java 720e1efddd769d5785e95100ff48aa203f2288eea865326a1a81fd5af43ec3a5
|
||||||
@ -2122,8 +2122,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 5f47fb77db4ee77afc541e680559ad88e66ba7fd04b830e70f8be92cf8d0a60c
|
P 250fd6ae806cf705c0f29ad30ad8fb885b12590848e7adae63bc21d874c6d3bd
|
||||||
R 00596872cec8308548a723b66cba58cd
|
R b6214243c5615bb53c027385b902ff1b
|
||||||
U stephan
|
U stephan
|
||||||
Z f8a1bff7f7d52efaacf825af2168fc26
|
Z 6486a7f1446bd02f9d2f2235b0984708
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
250fd6ae806cf705c0f29ad30ad8fb885b12590848e7adae63bc21d874c6d3bd
|
4182f0275d5d65e04a130eeef4d44642a5ffeeb4b84430d240ea2605345f1404
|
Reference in New Issue
Block a user