| // Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| // |
| // SharedObjects=ffi_test_functions |
| |
| import 'dart:ffi'; |
| |
| import 'package:expect/expect.dart'; |
| |
| import 'dylib_utils.dart'; |
| |
| final nativeLib = dlopenPlatformSpecific('ffi_test_functions'); |
| final getRootLibraryUrl = nativeLib |
| .lookupFunction<Handle Function(), Object Function()>('GetRootLibraryUrl'); |
| final setFfiNativeResolverForTest = nativeLib |
| .lookupFunction<Void Function(Handle), void Function(Object)>('SetFfiNativeResolverForTest'); |
| |
| @FfiNative<IntPtr Function(IntPtr)>('ReturnIntPtr') |
| external int returnIntPtr(int x); |
| |
| @FfiNative<IntPtr Function(IntPtr)>('ReturnIntPtr', isLeaf: true) |
| external int returnIntPtrLeaf(int x); |
| |
| void main() { |
| // Register test resolver for top-level functions above. |
| final root_lib_url = getRootLibraryUrl(); |
| setFfiNativeResolverForTest(root_lib_url); |
| |
| Expect.equals(123, returnIntPtr(123)); |
| Expect.equals(123, returnIntPtrLeaf(123)); |
| } |