almost done

This commit is contained in:
guoling
2024-04-18 18:58:16 +08:00
parent 1883e65ec0
commit 2ec60d2ee1
4 changed files with 495 additions and 132 deletions
+46 -106
View File
@@ -780,156 +780,96 @@ String _nativeFuncName(String name) {
return "mmkv_$name";
}
final DynamicLibrary _nativeLib = Platform.isAndroid ? DynamicLibrary.open("libmmkv.so") : DynamicLibrary.process();
final MMKVPluginPlatform _mmkvPlatform = MMKVPluginPlatform.instance!;
final void Function(Pointer<Utf8> rootDir, Pointer<Utf8> cacheDir, int sdkInt, int logLevel)? _mmkvInitialize = Platform.isIOS
? null
: _nativeLib.lookup<NativeFunction<Void Function(Pointer<Utf8>, Pointer<Utf8>, Int32, Int32)>>("mmkvInitialize_v1").asFunction();
final Pointer<Void> Function(Pointer<Utf8> mmapID, int, Pointer<Utf8> cryptKey, Pointer<Utf8> rootDir, int expectedCapacity) _getMMKVWithID =
_nativeLib
.lookup<NativeFunction<Pointer<Void> Function(Pointer<Utf8>, Uint32, Pointer<Utf8>, Pointer<Utf8>, Uint32)>>("getMMKVWithID")
.asFunction();
_mmkvPlatform.getMMKVWithIDFunc();
final Pointer<Void> Function(int, Pointer<Utf8> cryptKey) _getDefaultMMKV =
_nativeLib.lookup<NativeFunction<Pointer<Void> Function(Uint32, Pointer<Utf8>)>>("getDefaultMMKV").asFunction();
final Pointer<Void> Function(int, Pointer<Utf8> cryptKey) _getDefaultMMKV = _mmkvPlatform.getDefaultMMKVFunc();
final Pointer<Utf8> Function(Pointer<Void>) _mmapID =
_nativeLib.lookup<NativeFunction<Pointer<Utf8> Function(Pointer<Void>)>>(_nativeFuncName("mmapID")).asFunction();
final Pointer<Utf8> Function(Pointer<Void>) _mmapID = _mmkvPlatform.mmapIDFunc();
// final int Function(Pointer<Void>, Pointer<Utf8>, int) _encodeBool =
// _nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int8)>>(_nativeFuncName("encodeBool")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _encodeBool = _mmkvPlatform.encodeBoolFunc();
final int Function(Pointer<Void>, Pointer<Utf8>, int, int) _encodeBoolV2 =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int8, Uint32)>>(_nativeFuncName("encodeBool_v2")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, int, int) _encodeBoolV2 = _mmkvPlatform.encodeBoolV2Func();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _decodeBool =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int8)>>(_nativeFuncName("decodeBool")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _decodeBool = _mmkvPlatform.decodeBoolFunc();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _encodeInt32 =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int32)>>(_nativeFuncName("encodeInt32")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _encodeInt32 = _mmkvPlatform.encodeInt32Func();
final int Function(Pointer<Void>, Pointer<Utf8>, int, int) _encodeInt32V2 =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int32, Uint32)>>(_nativeFuncName("encodeInt32_v2")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, int, int) _encodeInt32V2 = _mmkvPlatform.encodeInt32V2Func();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _decodeInt32 =
_nativeLib.lookup<NativeFunction<Int32 Function(Pointer<Void>, Pointer<Utf8>, Int32)>>(_nativeFuncName("decodeInt32")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _decodeInt32 = _mmkvPlatform.decodeInt32Func();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _encodeInt64 =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int64)>>(_nativeFuncName("encodeInt64")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _encodeInt64 = _mmkvPlatform.encodeInt64Func();
final int Function(Pointer<Void>, Pointer<Utf8>, int, int) _encodeInt64V2 =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int64, Uint32)>>(_nativeFuncName("encodeInt64_v2")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, int, int) _encodeInt64V2 = _mmkvPlatform.encodeInt64V2Func();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _decodeInt64 =
_nativeLib.lookup<NativeFunction<Int64 Function(Pointer<Void>, Pointer<Utf8>, Int64)>>(_nativeFuncName("decodeInt64")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _decodeInt64 = _mmkvPlatform.decodeInt64Func();
final int Function(Pointer<Void>, Pointer<Utf8>, double) _encodeDouble =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Double)>>(_nativeFuncName("encodeDouble")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, double) _encodeDouble = _mmkvPlatform.encodeDoubleFunc();
final int Function(Pointer<Void>, Pointer<Utf8>, double, int) _encodeDoubleV2 =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Double, Uint32)>>(_nativeFuncName("encodeDouble_v2")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, double, int) _encodeDoubleV2 = _mmkvPlatform.encodeDoubleV2Func();
final double Function(Pointer<Void>, Pointer<Utf8>, double) _decodeDouble =
_nativeLib.lookup<NativeFunction<Double Function(Pointer<Void>, Pointer<Utf8>, Double)>>(_nativeFuncName("decodeDouble")).asFunction();
final double Function(Pointer<Void>, Pointer<Utf8>, double) _decodeDouble = _mmkvPlatform.decodeDoubleFunc();
final int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, int) _encodeBytes = _nativeLib
.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, Uint64)>>(_nativeFuncName("encodeBytes"))
.asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, int) _encodeBytes = _mmkvPlatform.encodeBytesFunc();
final int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, int, int) _encodeBytesV2 = _nativeLib
.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, Uint64, Uint32)>>(_nativeFuncName("encodeBytes_v2"))
.asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, int, int) _encodeBytesV2 = _mmkvPlatform.encodeBytesV2Func();
final Pointer<Uint8> Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint64>) _decodeBytes = _nativeLib
.lookup<NativeFunction<Pointer<Uint8> Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint64>)>>(_nativeFuncName("decodeBytes"))
.asFunction();
final Pointer<Uint8> Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint64>) _decodeBytes = _mmkvPlatform.decodeBytesFunc();
final int Function(Pointer<Void>, Pointer<Uint8>, int) _reKey =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Uint8>, Uint64)>>(_nativeFuncName("reKey")).asFunction();
final int Function(Pointer<Void>, Pointer<Uint8>, int) _reKey = _mmkvPlatform.reKeyFunc();
final Pointer<Uint8> Function(Pointer<Void>, Pointer<Uint64>) _cryptKey =
_nativeLib.lookup<NativeFunction<Pointer<Uint8> Function(Pointer<Void>, Pointer<Uint64>)>>(_nativeFuncName("cryptKey")).asFunction();
final Pointer<Uint8> Function(Pointer<Void>, Pointer<Uint64>) _cryptKey = _mmkvPlatform.cryptKeyFunc();
final void Function(Pointer<Void>, Pointer<Uint8>, int) _checkReSetCryptKey =
_nativeLib.lookup<NativeFunction<Void Function(Pointer<Void>, Pointer<Uint8>, Uint64)>>(_nativeFuncName("checkReSetCryptKey")).asFunction();
final void Function(Pointer<Void>, Pointer<Uint8>, int) _checkReSetCryptKey = _mmkvPlatform.checkReSetCryptKeyFunc();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _valueSize =
_nativeLib.lookup<NativeFunction<Uint32 Function(Pointer<Void>, Pointer<Utf8>, Int8)>>(_nativeFuncName("valueSize")).asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, int) _valueSize = _mmkvPlatform.valueSizeFunc();
final int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Void>, int) _writeValueToNB = _nativeLib
.lookup<NativeFunction<Int32 Function(Pointer<Void>, Pointer<Utf8>, Pointer<Void>, Uint32)>>(_nativeFuncName("writeValueToNB"))
.asFunction();
final int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Void>, int) _writeValueToNB = _mmkvPlatform.writeValueToNBFunc();
final int Function(Pointer<Void>, Pointer<Pointer<Pointer<Utf8>>>, Pointer<Pointer<Uint32>>, int) _allKeys = _nativeLib
.lookup<NativeFunction<Uint64 Function(Pointer<Void>, Pointer<Pointer<Pointer<Utf8>>>, Pointer<Pointer<Uint32>>, Int8)>>(
_nativeFuncName("allKeys"))
.asFunction();
final int Function(Pointer<Void>, Pointer<Pointer<Pointer<Utf8>>>, Pointer<Pointer<Uint32>>, int) _allKeys = _mmkvPlatform.allKeysFunc();
final int Function(Pointer<Void>, Pointer<Utf8>) _containsKey = _mmkvPlatform.containsKeyFunc();
final int Function(Pointer<Void>, Pointer<Utf8>) _containsKey =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>)>>(_nativeFuncName("containsKey")).asFunction();
final int Function(Pointer<Void>, int) _count = _mmkvPlatform.countFunc();
final int Function(Pointer<Void>, int) _count =
_nativeLib.lookup<NativeFunction<Uint64 Function(Pointer<Void>, Int8)>>(_nativeFuncName("count")).asFunction();
final int Function(Pointer<Void>) _totalSize = _mmkvPlatform.totalSizeFunc();
final int Function(Pointer<Void>) _totalSize =
_nativeLib.lookup<NativeFunction<Uint64 Function(Pointer<Void>)>>(_nativeFuncName("totalSize")).asFunction();
final int Function(Pointer<Void>) _actualSize = _mmkvPlatform.actualSizeFunc();
final int Function(Pointer<Void>) _actualSize =
_nativeLib.lookup<NativeFunction<Uint64 Function(Pointer<Void>)>>(_nativeFuncName("actualSize")).asFunction();
final void Function(Pointer<Void>, Pointer<Utf8>) _removeValueForKey = _mmkvPlatform.removeValueForKeyFunc();
final void Function(Pointer<Void>, Pointer<Utf8>) _removeValueForKey =
_nativeLib.lookup<NativeFunction<Void Function(Pointer<Void>, Pointer<Utf8>)>>(_nativeFuncName("removeValueForKey")).asFunction();
final void Function(Pointer<Void>, Pointer<Pointer<Utf8>>, Pointer<Uint32>, int) _removeValuesForKeys = _mmkvPlatform.removeValuesForKeysFunc();
final void Function(Pointer<Void>, int) _clearAll = _mmkvPlatform.clearAllFunc();
final void Function(Pointer<Void>, Pointer<Pointer<Utf8>>, Pointer<Uint32>, int) _removeValuesForKeys = _nativeLib
.lookup<NativeFunction<Void Function(Pointer<Void>, Pointer<Pointer<Utf8>>, Pointer<Uint32>, Uint64)>>(_nativeFuncName("removeValuesForKeys"))
.asFunction();
final void Function(Pointer<Void>, int) _mmkvSync = _mmkvPlatform.mmkvSyncFunc();
final void Function(Pointer<Void>, int) _clearAll =
_nativeLib.lookup<NativeFunction<Void Function(Pointer<Void>, Uint32)>>(_nativeFuncName("clearAll")).asFunction();
final void Function(Pointer<Void>) _clearMemoryCache = _mmkvPlatform.clearMemoryCacheFunc();
final void Function(Pointer<Void>, int) _mmkvSync = _nativeLib.lookup<NativeFunction<Void Function(Pointer<Void>, Int8)>>("mmkvSync").asFunction();
final int Function() _pageSize = _mmkvPlatform.pageSizeFunc();
final void Function(Pointer<Void>) _clearMemoryCache =
_nativeLib.lookup<NativeFunction<Void Function(Pointer<Void>)>>(_nativeFuncName("clearMemoryCache")).asFunction();
final Pointer<Utf8> Function() _version = _mmkvPlatform.versionFunc();
final int Function() _pageSize = _nativeLib.lookup<NativeFunction<Int32 Function()>>(_nativeFuncName("pageSize")).asFunction();
final void Function(Pointer<Void>) _trim = _mmkvPlatform.trimFunc();
final Pointer<Utf8> Function() _version = _nativeLib.lookup<NativeFunction<Pointer<Utf8> Function()>>(_nativeFuncName("version")).asFunction();
final void Function(Pointer<Void>) _mmkvClose = _mmkvPlatform.mmkvCloseFunc();
final void Function(Pointer<Void>) _trim = _nativeLib.lookup<NativeFunction<Void Function(Pointer<Void>)>>(_nativeFuncName("trim")).asFunction();
final void Function(Pointer<Void>, Pointer<Void>, int) _memcpy = _mmkvPlatform.memcpyFunc();
final void Function(Pointer<Void>) _mmkvClose = _nativeLib.lookup<NativeFunction<Void Function(Pointer<Void>)>>("mmkvClose").asFunction();
final int Function(Pointer<Utf8> mmapID, Pointer<Utf8> dstDir, Pointer<Utf8> rootPath) _backupOne = _mmkvPlatform.backupOneFunc();
final void Function(Pointer<Void>, Pointer<Void>, int) _memcpy =
_nativeLib.lookup<NativeFunction<Void Function(Pointer<Void>, Pointer<Void>, Uint64)>>("mmkvMemcpy").asFunction();
final int Function(Pointer<Utf8> mmapID, Pointer<Utf8> srcDir, Pointer<Utf8> rootPath) _restoreOne = _mmkvPlatform.restoreOneFunc();
final int Function(Pointer<Utf8> mmapID, Pointer<Utf8> dstDir, Pointer<Utf8> rootPath) _backupOne =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>)>>(_nativeFuncName("backupOne")).asFunction();
final int Function(Pointer<Utf8> dstDir) _backupAll = _mmkvPlatform.backupAllFunc();
final int Function(Pointer<Utf8> srcDir) _restoreAll = _mmkvPlatform.restoreAllFunc();
final int Function(Pointer<Utf8> mmapID, Pointer<Utf8> srcDir, Pointer<Utf8> rootPath) _restoreOne =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>)>>(_nativeFuncName("restoreOne")).asFunction();
final bool Function(Pointer<Void>, int) _enableAutoExpire = _mmkvPlatform.enableAutoExpireFunc();
final int Function(Pointer<Utf8> dstDir) _backupAll =
_nativeLib.lookup<NativeFunction<Uint64 Function(Pointer<Utf8>)>>(_nativeFuncName("backupAll")).asFunction();
final bool Function(Pointer<Void>) _disableAutoExpire = _mmkvPlatform.disableAutoExpireFunc();
final int Function(Pointer<Utf8> srcDir) _restoreAll =
_nativeLib.lookup<NativeFunction<Uint64 Function(Pointer<Utf8>)>>(_nativeFuncName("restoreAll")).asFunction();
final bool Function(Pointer<Void>) _enableCompareBeforeSet = _mmkvPlatform.enableCompareBeforeSetFunc();
final bool Function(Pointer<Void>, int) _enableAutoExpire =
_nativeLib.lookup<NativeFunction<Bool Function(Pointer<Void>, Uint32)>>(_nativeFuncName("enableAutoExpire")).asFunction();
final bool Function(Pointer<Void>) _disableCompareBeforeSet = _mmkvPlatform.disableCompareBeforeSetFunc();
final bool Function(Pointer<Void>) _disableAutoExpire =
_nativeLib.lookup<NativeFunction<Bool Function(Pointer<Void>)>>(_nativeFuncName("disableAutoExpire")).asFunction();
final bool Function(Pointer<Void>) _enableCompareBeforeSet =
_nativeLib.lookup<NativeFunction<Bool Function(Pointer<Void>)>>(_nativeFuncName("enableCompareBeforeSet")).asFunction();
final bool Function(Pointer<Void>) _disableCompareBeforeSet =
_nativeLib.lookup<NativeFunction<Bool Function(Pointer<Void>)>>(_nativeFuncName("disableCompareBeforeSet")).asFunction();
final int Function(Pointer<Utf8> mmapID, Pointer<Utf8> rootPath) _removeStorage =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Utf8>, Pointer<Utf8>)>>(_nativeFuncName("removeStorage")).asFunction();
final int Function(Pointer<Utf8> mmapID, Pointer<Utf8> rootPath) _removeStorage = _mmkvPlatform.removeStorageFunc();
+28 -14
View File
@@ -1,27 +1,46 @@
/*
* Tencent is pleased to support the open source community by making
* MMKV available.
*
* Copyright (C) 2024 THL A29 Limited, a Tencent company.
* All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of
* the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import "dart:ffi";
import "package:ffi/ffi.dart";
import "package:flutter/services.dart";
import "package:path_provider/path_provider.dart";
import "package:mmkv_platform_interface/mmkv_platform_interface.dart";
final class MMKVPlatformAndroid extends MMKVPluginPlatform {
final class MMKVPlatformAndroid extends MMKVPluginPlatformFFI {
// A default real implementation of the platform interface would go here.
static void registerWith() {
MMKVPluginPlatform.instance = MMKVPlatformAndroid();
}
@pragma("vm:prefer-inline")
static String _nativeFuncName(String name) {
return name;
static final _nativeLib = DynamicLibrary.open("libmmkv.so");
@override
DynamicLibrary nativeLib() {
return _nativeLib;
}
static const MethodChannel _channel = MethodChannel("mmkv");
static final _nativeLib = DynamicLibrary.open("libmmkv.so");
static final int Function(Pointer<Void>, Pointer<Utf8>, int) _encodeBool =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int8)>>(_nativeFuncName("encodeBool")).asFunction();
static final void Function(Pointer<Utf8> rootDir, Pointer<Utf8> cacheDir, int sdkInt, int logLevel) _mmkvInitialize = _nativeLib.lookup<NativeFunction<Void Function(Pointer<Utf8>, Pointer<Utf8>, Int32, Int32)>>("mmkvInitialize_v1").asFunction();
static final void Function(Pointer<Utf8> rootDir, Pointer<Utf8> cacheDir, int sdkInt, int logLevel) _mmkvInitialize =
_nativeLib.lookup<NativeFunction<Void Function(Pointer<Utf8>, Pointer<Utf8>, Int32, Int32)>>("mmkvInitialize_v1").asFunction();
@override
Future<String> initialize(String rootDir, {String? groupDir, int logLevel = 1}) async {
@@ -36,11 +55,6 @@ final class MMKVPlatformAndroid extends MMKVPluginPlatform {
calloc.free(cacheDirPtr);
return rootDir;
}
@override
int Function(Pointer<Void>, Pointer<Utf8>, int) encodeBoolFunc() {
return _encodeBool;
}
}
Pointer<Utf8> _string2Pointer(String? str) {
+9 -12
View File
@@ -19,25 +19,27 @@
*/
import 'dart:ffi';
import 'package:ffi/ffi.dart';
import 'package:flutter/services.dart';
import 'package:mmkv_platform_interface/mmkv_platform_interface.dart';
final class MMKVPlatformIOS extends MMKVPluginPlatform {
final class MMKVPlatformIOS extends MMKVPluginPlatformFFI {
static void registerWith() {
MMKVPluginPlatform.instance = MMKVPlatformIOS();
}
static String _nativeFuncName(String name) {
@override
String nativeFuncName(String name) {
return "mmkv_$name";
}
static const MethodChannel _channel = MethodChannel("mmkv");
static late final _nativeLib = DynamicLibrary.process();
static late final int Function(Pointer<Void>, Pointer<Utf8>, int) _encodeBool =
_nativeLib.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int8)>>(_nativeFuncName("encodeBool")).asFunction();
@override
DynamicLibrary nativeLib() {
return _nativeLib;
}
static const MethodChannel _channel = MethodChannel("mmkv");
@override
Future<String> initialize(String rootDir, {String? groupDir, int logLevel = 1}) async {
@@ -51,9 +53,4 @@ final class MMKVPlatformIOS extends MMKVPluginPlatform {
final ret = await _channel.invokeMethod("initializeMMKV", params);
return ret;
}
@override
int Function(Pointer<Void>, Pointer<Utf8>, int) encodeBoolFunc() {
return _encodeBool;
}
}
@@ -21,6 +21,7 @@
import "dart:ffi";
import "package:ffi/ffi.dart";
/// The interface class that all implementation of MMKV platform plugin must extend
abstract base class MMKVPluginPlatform {
MMKVPluginPlatform();
@@ -38,5 +39,416 @@ abstract base class MMKVPluginPlatform {
int Function(Pointer<Void>, Pointer<Utf8>, int) encodeBoolFunc() {
throw UnimplementedError();
}
Pointer<Void> Function(Pointer<Utf8> mmapID, int, Pointer<Utf8> cryptKey, Pointer<Utf8> rootDir, int expectedCapacity) getMMKVWithIDFunc() {
throw UnimplementedError();
}
Pointer<Void> Function(int, Pointer<Utf8> cryptKey) getDefaultMMKVFunc() {
throw UnimplementedError();
}
Pointer<Utf8> Function(Pointer<Void>) mmapIDFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, int, int) encodeBoolV2Func() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) decodeBoolFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) encodeInt32Func() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, int, int) encodeInt32V2Func() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) decodeInt32Func() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) encodeInt64Func() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, int, int) encodeInt64V2Func() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) decodeInt64Func() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, double) encodeDoubleFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, double, int) encodeDoubleV2Func() {
throw UnimplementedError();
}
double Function(Pointer<Void>, Pointer<Utf8>, double) decodeDoubleFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, int) encodeBytesFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, int, int) encodeBytesV2Func() {
throw UnimplementedError();
}
Pointer<Uint8> Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint64>) decodeBytesFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Uint8>, int) reKeyFunc() {
throw UnimplementedError();
}
Pointer<Uint8> Function(Pointer<Void>, Pointer<Uint64>) cryptKeyFunc() {
throw UnimplementedError();
}
void Function(Pointer<Void>, Pointer<Uint8>, int) checkReSetCryptKeyFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) valueSizeFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Void>, int) writeValueToNBFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Pointer<Pointer<Utf8>>>, Pointer<Pointer<Uint32>>, int) allKeysFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, Pointer<Utf8>) containsKeyFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>, int) countFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>) totalSizeFunc() {
throw UnimplementedError();
}
int Function(Pointer<Void>) actualSizeFunc() {
throw UnimplementedError();
}
void Function(Pointer<Void>, Pointer<Utf8>) removeValueForKeyFunc() {
throw UnimplementedError();
}
void Function(Pointer<Void>, Pointer<Pointer<Utf8>>, Pointer<Uint32>, int) removeValuesForKeysFunc() {
throw UnimplementedError();
}
void Function(Pointer<Void>, int) clearAllFunc() {
throw UnimplementedError();
}
void Function(Pointer<Void>, int) mmkvSyncFunc() {
throw UnimplementedError();
}
void Function(Pointer<Void>) clearMemoryCacheFunc() {
throw UnimplementedError();
}
int Function() pageSizeFunc() {
throw UnimplementedError();
}
Pointer<Utf8> Function() versionFunc() {
throw UnimplementedError();
}
void Function(Pointer<Void>) trimFunc() {
throw UnimplementedError();
}
void Function(Pointer<Void>) mmkvCloseFunc() {
throw UnimplementedError();
}
void Function(Pointer<Void>, Pointer<Void>, int) memcpyFunc() {
throw UnimplementedError();
}
int Function(Pointer<Utf8> mmapID, Pointer<Utf8> dstDir, Pointer<Utf8> rootPath) backupOneFunc() {
throw UnimplementedError();
}
int Function(Pointer<Utf8> mmapID, Pointer<Utf8> srcDir, Pointer<Utf8> rootPath) restoreOneFunc() {
throw UnimplementedError();
}
int Function(Pointer<Utf8> dstDir) backupAllFunc() {
throw UnimplementedError();
}
int Function(Pointer<Utf8> srcDir) restoreAllFunc() {
throw UnimplementedError();
}
bool Function(Pointer<Void>, int) enableAutoExpireFunc() {
throw UnimplementedError();
}
bool Function(Pointer<Void>) disableAutoExpireFunc() {
throw UnimplementedError();
}
bool Function(Pointer<Void>) enableCompareBeforeSetFunc() {
throw UnimplementedError();
}
bool Function(Pointer<Void>) disableCompareBeforeSetFunc() {
throw UnimplementedError();
}
int Function(Pointer<Utf8> mmapID, Pointer<Utf8> rootPath) removeStorageFunc() {
throw UnimplementedError();
}
}
/// A helper class to ease the implementation of MMKV platform plugin in FFI
abstract base class MMKVPluginPlatformFFI extends MMKVPluginPlatform {
/// tells which dylib to lookup for function pointer
DynamicLibrary nativeLib() {
throw UnimplementedError();
}
/// a chance to map native function name (to avoid potential conflict)
String nativeFuncName(String name) {
return name;
}
Pointer<Void> Function(Pointer<Utf8> mmapID, int, Pointer<Utf8> cryptKey, Pointer<Utf8> rootDir, int expectedCapacity) getMMKVWithIDFunc() {
return nativeLib()
.lookup<NativeFunction<Pointer<Void> Function(Pointer<Utf8>, Uint32, Pointer<Utf8>, Pointer<Utf8>, Uint32)>>("getMMKVWithID")
.asFunction();
}
Pointer<Void> Function(int, Pointer<Utf8> cryptKey) getDefaultMMKVFunc() {
return nativeLib().lookup<NativeFunction<Pointer<Void> Function(Uint32, Pointer<Utf8>)>>("getDefaultMMKV").asFunction();
}
Pointer<Utf8> Function(Pointer<Void>) mmapIDFunc() {
return nativeLib().lookup<NativeFunction<Pointer<Utf8> Function(Pointer<Void>)>>(nativeFuncName("mmapID")).asFunction();
}
@override
int Function(Pointer<Void>, Pointer<Utf8>, int) encodeBoolFunc() {
return nativeLib().lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int8)>>(nativeFuncName("encodeBool")).asFunction();
}
@override
int Function(Pointer<Void>, Pointer<Utf8>, int, int) encodeBoolV2Func() {
return nativeLib()
.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int8, Uint32)>>(nativeFuncName("encodeBool_v2"))
.asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) decodeBoolFunc() {
return nativeLib().lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int8)>>(nativeFuncName("decodeBool")).asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) encodeInt32Func() {
return nativeLib().lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int32)>>(nativeFuncName("encodeInt32")).asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, int, int) encodeInt32V2Func() {
return nativeLib()
.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int32, Uint32)>>(nativeFuncName("encodeInt32_v2"))
.asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) decodeInt32Func() {
return nativeLib().lookup<NativeFunction<Int32 Function(Pointer<Void>, Pointer<Utf8>, Int32)>>(nativeFuncName("decodeInt32")).asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) encodeInt64Func() {
return nativeLib().lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int64)>>(nativeFuncName("encodeInt64")).asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, int, int) encodeInt64V2Func() {
return nativeLib()
.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Int64, Uint32)>>(nativeFuncName("encodeInt64_v2"))
.asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) decodeInt64Func() {
return nativeLib().lookup<NativeFunction<Int64 Function(Pointer<Void>, Pointer<Utf8>, Int64)>>(nativeFuncName("decodeInt64")).asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, double) encodeDoubleFunc() {
return nativeLib().lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Double)>>(nativeFuncName("encodeDouble")).asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, double, int) encodeDoubleV2Func() {
return nativeLib()
.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Double, Uint32)>>(nativeFuncName("encodeDouble_v2"))
.asFunction();
}
double Function(Pointer<Void>, Pointer<Utf8>, double) decodeDoubleFunc() {
return nativeLib().lookup<NativeFunction<Double Function(Pointer<Void>, Pointer<Utf8>, Double)>>(nativeFuncName("decodeDouble")).asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, int) encodeBytesFunc() {
return nativeLib()
.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, Uint64)>>(nativeFuncName("encodeBytes"))
.asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, int, int) encodeBytesV2Func() {
return nativeLib()
.lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint8>, Uint64, Uint32)>>(nativeFuncName("encodeBytes_v2"))
.asFunction();
}
Pointer<Uint8> Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint64>) decodeBytesFunc() {
return nativeLib()
.lookup<NativeFunction<Pointer<Uint8> Function(Pointer<Void>, Pointer<Utf8>, Pointer<Uint64>)>>(nativeFuncName("decodeBytes"))
.asFunction();
}
int Function(Pointer<Void>, Pointer<Uint8>, int) reKeyFunc() {
return nativeLib().lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Uint8>, Uint64)>>(nativeFuncName("reKey")).asFunction();
}
Pointer<Uint8> Function(Pointer<Void>, Pointer<Uint64>) cryptKeyFunc() {
return nativeLib().lookup<NativeFunction<Pointer<Uint8> Function(Pointer<Void>, Pointer<Uint64>)>>(nativeFuncName("cryptKey")).asFunction();
}
void Function(Pointer<Void>, Pointer<Uint8>, int) checkReSetCryptKeyFunc() {
return nativeLib()
.lookup<NativeFunction<Void Function(Pointer<Void>, Pointer<Uint8>, Uint64)>>(nativeFuncName("checkReSetCryptKey"))
.asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, int) valueSizeFunc() {
return nativeLib().lookup<NativeFunction<Uint32 Function(Pointer<Void>, Pointer<Utf8>, Int8)>>(nativeFuncName("valueSize")).asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>, Pointer<Void>, int) writeValueToNBFunc() {
return nativeLib()
.lookup<NativeFunction<Int32 Function(Pointer<Void>, Pointer<Utf8>, Pointer<Void>, Uint32)>>(nativeFuncName("writeValueToNB"))
.asFunction();
}
int Function(Pointer<Void>, Pointer<Pointer<Pointer<Utf8>>>, Pointer<Pointer<Uint32>>, int) allKeysFunc() {
return nativeLib()
.lookup<NativeFunction<Uint64 Function(Pointer<Void>, Pointer<Pointer<Pointer<Utf8>>>, Pointer<Pointer<Uint32>>, Int8)>>(
nativeFuncName("allKeys"))
.asFunction();
}
int Function(Pointer<Void>, Pointer<Utf8>) containsKeyFunc() {
return nativeLib().lookup<NativeFunction<Int8 Function(Pointer<Void>, Pointer<Utf8>)>>(nativeFuncName("containsKey")).asFunction();
}
int Function(Pointer<Void>, int) countFunc() {
return nativeLib().lookup<NativeFunction<Uint64 Function(Pointer<Void>, Int8)>>(nativeFuncName("count")).asFunction();
}
int Function(Pointer<Void>) totalSizeFunc() {
return nativeLib().lookup<NativeFunction<Uint64 Function(Pointer<Void>)>>(nativeFuncName("totalSize")).asFunction();
}
int Function(Pointer<Void>) actualSizeFunc() {
return nativeLib().lookup<NativeFunction<Uint64 Function(Pointer<Void>)>>(nativeFuncName("actualSize")).asFunction();
}
void Function(Pointer<Void>, Pointer<Utf8>) removeValueForKeyFunc() {
return nativeLib().lookup<NativeFunction<Void Function(Pointer<Void>, Pointer<Utf8>)>>(nativeFuncName("removeValueForKey")).asFunction();
}
void Function(Pointer<Void>, Pointer<Pointer<Utf8>>, Pointer<Uint32>, int) removeValuesForKeysFunc() {
return nativeLib()
.lookup<NativeFunction<Void Function(Pointer<Void>, Pointer<Pointer<Utf8>>, Pointer<Uint32>, Uint64)>>(nativeFuncName("removeValuesForKeys"))
.asFunction();
}
void Function(Pointer<Void>, int) clearAllFunc() {
return nativeLib().lookup<NativeFunction<Void Function(Pointer<Void>, Uint32)>>(nativeFuncName("clearAll")).asFunction();
}
void Function(Pointer<Void>, int) mmkvSyncFunc() {
return nativeLib().lookup<NativeFunction<Void Function(Pointer<Void>, Int8)>>("mmkvSync").asFunction();
}
void Function(Pointer<Void>) clearMemoryCacheFunc() {
return nativeLib().lookup<NativeFunction<Void Function(Pointer<Void>)>>(nativeFuncName("clearMemoryCache")).asFunction();
}
int Function() pageSizeFunc() {
return nativeLib().lookup<NativeFunction<Int32 Function()>>(nativeFuncName("pageSize")).asFunction();
}
Pointer<Utf8> Function() versionFunc() {
return nativeLib().lookup<NativeFunction<Pointer<Utf8> Function()>>(nativeFuncName("version")).asFunction();
}
void Function(Pointer<Void>) trimFunc() {
return nativeLib().lookup<NativeFunction<Void Function(Pointer<Void>)>>(nativeFuncName("trim")).asFunction();
}
void Function(Pointer<Void>) mmkvCloseFunc() {
return nativeLib().lookup<NativeFunction<Void Function(Pointer<Void>)>>("mmkvClose").asFunction();
}
void Function(Pointer<Void>, Pointer<Void>, int) memcpyFunc() {
return nativeLib().lookup<NativeFunction<Void Function(Pointer<Void>, Pointer<Void>, Uint64)>>("mmkvMemcpy").asFunction();
}
int Function(Pointer<Utf8> mmapID, Pointer<Utf8> dstDir, Pointer<Utf8> rootPath) backupOneFunc() {
return nativeLib().lookup<NativeFunction<Int8 Function(Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>)>>(nativeFuncName("backupOne")).asFunction();
}
int Function(Pointer<Utf8> mmapID, Pointer<Utf8> srcDir, Pointer<Utf8> rootPath) restoreOneFunc() {
return nativeLib().lookup<NativeFunction<Int8 Function(Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>)>>(nativeFuncName("restoreOne")).asFunction();
}
int Function(Pointer<Utf8> dstDir) backupAllFunc() {
return nativeLib().lookup<NativeFunction<Uint64 Function(Pointer<Utf8>)>>(nativeFuncName("backupAll")).asFunction();
}
int Function(Pointer<Utf8> srcDir) restoreAllFunc() {
return nativeLib().lookup<NativeFunction<Uint64 Function(Pointer<Utf8>)>>(nativeFuncName("restoreAll")).asFunction();
}
bool Function(Pointer<Void>, int) enableAutoExpireFunc() {
return nativeLib().lookup<NativeFunction<Bool Function(Pointer<Void>, Uint32)>>(nativeFuncName("enableAutoExpire")).asFunction();
}
bool Function(Pointer<Void>) disableAutoExpireFunc() {
return nativeLib().lookup<NativeFunction<Bool Function(Pointer<Void>)>>(nativeFuncName("disableAutoExpire")).asFunction();
}
bool Function(Pointer<Void>) enableCompareBeforeSetFunc() {
return nativeLib().lookup<NativeFunction<Bool Function(Pointer<Void>)>>(nativeFuncName("enableCompareBeforeSet")).asFunction();
}
bool Function(Pointer<Void>) disableCompareBeforeSetFunc() {
return nativeLib().lookup<NativeFunction<Bool Function(Pointer<Void>)>>(nativeFuncName("disableCompareBeforeSet")).asFunction();
}
int Function(Pointer<Utf8> mmapID, Pointer<Utf8> rootPath) removeStorageFunc() {
return nativeLib().lookup<NativeFunction<Int8 Function(Pointer<Utf8>, Pointer<Utf8>)>>(nativeFuncName("removeStorage")).asFunction();
}
}