7263b9aa9d
Change-Id: I19ed3716c40e9a80f18045dcab77ece4cb2f6e35 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119064 Reviewed-by: Aart Bik <ajcbik@google.com> Commit-Queue: Felicitas Hetzelt <felih@google.com>
244 lines
7.7 KiB
Dart
244 lines
7.7 KiB
Dart
// Copyright (c) 2019, 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.
|
|
|
|
// Contains the Dart FFI interface to the c-library defined in
|
|
// sdk/runtime/bin/ffi_test/ffi_test_functions.cc.
|
|
// The code contained in this class is intended to be added to Dart programs
|
|
// generated by dartfuzz.dart.
|
|
class DartFuzzFfiApi {
|
|
static const ffiapi = """
|
|
|
|
ffi.DynamicLibrary ffiTestFunctions =
|
|
ffi.DynamicLibrary.open("libffi_test_functions.so");
|
|
|
|
typedef NativeBinaryOp = ffi.Int32 Function(ffi.Int32, ffi.Int32);
|
|
typedef BinaryOp = int Function(int, int);
|
|
BinaryOp sumPlus42 =
|
|
ffiTestFunctions.lookupFunction<NativeBinaryOp, BinaryOp>("SumPlus42");
|
|
|
|
typedef NativeReturnMaxUint8 = ffi.Uint8 Function();
|
|
int Function() returnMaxUint8 = ffiTestFunctions
|
|
.lookup("ReturnMaxUint8")
|
|
.cast<ffi.NativeFunction<NativeReturnMaxUint8>>()
|
|
.asFunction();
|
|
|
|
typedef NativeReturnMaxUint16 = ffi.Uint16 Function();
|
|
int Function() returnMaxUint16 = ffiTestFunctions
|
|
.lookup("ReturnMaxUint16")
|
|
.cast<ffi.NativeFunction<NativeReturnMaxUint16>>()
|
|
.asFunction();
|
|
|
|
typedef NativeReturnMaxUint32 = ffi.Uint32 Function();
|
|
int Function() returnMaxUint32 = ffiTestFunctions
|
|
.lookup("ReturnMaxUint32")
|
|
.cast<ffi.NativeFunction<NativeReturnMaxUint32>>()
|
|
.asFunction();
|
|
|
|
typedef NativeReturnMinInt8 = ffi.Int8 Function();
|
|
int Function() returnMinInt8 = ffiTestFunctions
|
|
.lookup("ReturnMinInt8")
|
|
.cast<ffi.NativeFunction<NativeReturnMinInt8>>()
|
|
.asFunction();
|
|
|
|
typedef NativeReturnMinInt16 = ffi.Int16 Function();
|
|
int Function() returnMinInt16 = ffiTestFunctions
|
|
.lookup("ReturnMinInt16")
|
|
.cast<ffi.NativeFunction<NativeReturnMinInt16>>()
|
|
.asFunction();
|
|
|
|
typedef NativeReturnMinInt32 = ffi.Int32 Function();
|
|
int Function() returnMinInt32 = ffiTestFunctions
|
|
.lookup("ReturnMinInt32")
|
|
.cast<ffi.NativeFunction<NativeReturnMinInt32>>()
|
|
.asFunction();
|
|
|
|
typedef NativeTakeMaxUint8 = ffi.IntPtr Function(ffi.Uint8);
|
|
int Function(int) takeMaxUint8 = ffiTestFunctions
|
|
.lookup("TakeMaxUint8")
|
|
.cast<ffi.NativeFunction<NativeTakeMaxUint8>>()
|
|
.asFunction();
|
|
|
|
typedef NativeTakeMaxUint16 = ffi.IntPtr Function(ffi.Uint16);
|
|
int Function(int) takeMaxUint16 = ffiTestFunctions
|
|
.lookup("TakeMaxUint16")
|
|
.cast<ffi.NativeFunction<NativeTakeMaxUint16>>()
|
|
.asFunction();
|
|
|
|
typedef NativeTakeMaxUint32 = ffi.IntPtr Function(ffi.Uint32);
|
|
int Function(int) takeMaxUint32 = ffiTestFunctions
|
|
.lookup("TakeMaxUint32")
|
|
.cast<ffi.NativeFunction<NativeTakeMaxUint32>>()
|
|
.asFunction();
|
|
|
|
typedef NativeTakeMinInt8 = ffi.IntPtr Function(ffi.Int8);
|
|
int Function(int) takeMinInt8 = ffiTestFunctions
|
|
.lookup("TakeMinInt8")
|
|
.cast<ffi.NativeFunction<NativeTakeMinInt8>>()
|
|
.asFunction();
|
|
|
|
typedef NativeTakeMinInt16 = ffi.IntPtr Function(ffi.Int16);
|
|
int Function(int) takeMinInt16 = ffiTestFunctions
|
|
.lookup("TakeMinInt16")
|
|
.cast<ffi.NativeFunction<NativeTakeMinInt16>>()
|
|
.asFunction();
|
|
|
|
typedef NativeTakeMinInt32 = ffi.IntPtr Function(ffi.Int32);
|
|
int Function(int) takeMinInt32 = ffiTestFunctions
|
|
.lookup("TakeMinInt32")
|
|
.cast<ffi.NativeFunction<NativeTakeMinInt32>>()
|
|
.asFunction();
|
|
|
|
typedef NativeQuadOpSigned = ffi.Int64 Function(
|
|
ffi.Int8, ffi.Int16, ffi.Int32, ffi.Int64);
|
|
typedef QuadOp = int Function(int, int, int, int);
|
|
typedef IntComputationType = ffi.Int64 Function(
|
|
ffi.Int8, ffi.Int16, ffi.Int32, ffi.Int64);
|
|
QuadOp intComputation = ffiTestFunctions
|
|
.lookupFunction<NativeQuadOpSigned, QuadOp>("IntComputation");
|
|
|
|
typedef NativeQuadOpUnsigned = ffi.Uint64 Function(
|
|
ffi.Uint8, ffi.Uint16, ffi.Uint32, ffi.Uint64);
|
|
typedef UintComputationType = ffi.Uint64 Function(
|
|
ffi.Uint8, ffi.Uint16, ffi.Uint32, ffi.Uint64);
|
|
QuadOp uintComputation = ffiTestFunctions
|
|
.lookupFunction<NativeQuadOpUnsigned, QuadOp>("UintComputation");
|
|
|
|
typedef DoubleUnaryOp = double Function(double);
|
|
typedef NativeDoubleUnaryOp = ffi.Double Function(ffi.Double);
|
|
DoubleUnaryOp times1_337Double = ffiTestFunctions
|
|
.lookupFunction<NativeDoubleUnaryOp, DoubleUnaryOp>("Times1_337Double");
|
|
|
|
typedef NativeFloatUnaryOp = ffi.Float Function(ffi.Float);
|
|
DoubleUnaryOp times1_337Float = ffiTestFunctions
|
|
.lookupFunction<NativeFloatUnaryOp, DoubleUnaryOp>("Times1_337Float");
|
|
|
|
typedef DecenaryOp = int Function(
|
|
int, int, int, int, int, int, int, int, int, int);
|
|
typedef NativeDecenaryOp = ffi.IntPtr Function(
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr);
|
|
DecenaryOp sumManyInts = ffiTestFunctions
|
|
.lookupFunction<NativeDecenaryOp, DecenaryOp>("SumManyInts");
|
|
|
|
UndenaryOp sumManyIntsOdd = ffiTestFunctions
|
|
.lookupFunction<NativeUndenaryOp, UndenaryOp>("SumManyIntsOdd");
|
|
|
|
typedef NativeDoubleDecenaryOp = ffi.Double Function(
|
|
ffi.Double,
|
|
ffi.Double,
|
|
ffi.Double,
|
|
ffi.Double,
|
|
ffi.Double,
|
|
ffi.Double,
|
|
ffi.Double,
|
|
ffi.Double,
|
|
ffi.Double,
|
|
ffi.Double);
|
|
typedef DoubleDecenaryOp = double Function(double, double, double, double,
|
|
double, double, double, double, double, double);
|
|
DoubleDecenaryOp sumManyDoubles = ffiTestFunctions
|
|
.lookupFunction<NativeDoubleDecenaryOp, DoubleDecenaryOp>("SumManyDoubles");
|
|
|
|
typedef NativeVigesimalOp = ffi.Double Function(
|
|
ffi.IntPtr,
|
|
ffi.Float,
|
|
ffi.IntPtr,
|
|
ffi.Double,
|
|
ffi.IntPtr,
|
|
ffi.Float,
|
|
ffi.IntPtr,
|
|
ffi.Double,
|
|
ffi.IntPtr,
|
|
ffi.Float,
|
|
ffi.IntPtr,
|
|
ffi.Double,
|
|
ffi.IntPtr,
|
|
ffi.Float,
|
|
ffi.IntPtr,
|
|
ffi.Double,
|
|
ffi.IntPtr,
|
|
ffi.Float,
|
|
ffi.IntPtr,
|
|
ffi.Double);
|
|
typedef VigesimalOp = double Function(
|
|
int,
|
|
double,
|
|
int,
|
|
double,
|
|
int,
|
|
double,
|
|
int,
|
|
double,
|
|
int,
|
|
double,
|
|
int,
|
|
double,
|
|
int,
|
|
double,
|
|
int,
|
|
double,
|
|
int,
|
|
double,
|
|
int,
|
|
double);
|
|
VigesimalOp sumManyNumbers = ffiTestFunctions
|
|
.lookupFunction<NativeVigesimalOp, VigesimalOp>("SumManyNumbers");
|
|
|
|
typedef NativeSenaryOp = ffi.Int64 Function(
|
|
ffi.Int8, ffi.Int16, ffi.Int32, ffi.Uint8, ffi.Uint16, ffi.Uint32);
|
|
typedef SenaryOp = int Function(int, int, int, int, int, int);
|
|
SenaryOp sumSmallNumbers = ffiTestFunctions
|
|
.lookupFunction<NativeSenaryOp, SenaryOp>("SumSmallNumbers");
|
|
|
|
typedef NativeFloatPointerToBool = ffi.Uint8 Function(ffi.Pointer<ffi.Float>);
|
|
typedef FloatPointerToBool = int Function(ffi.Pointer<ffi.Float>);
|
|
FloatPointerToBool isRoughly1337 = ffiTestFunctions.lookupFunction<
|
|
NativeFloatPointerToBool, FloatPointerToBool>("IsRoughly1337");
|
|
|
|
typedef NativeVoidToFloat = ffi.Float Function();
|
|
typedef VoidToDouble = double Function();
|
|
VoidToDouble inventFloatValue = ffiTestFunctions
|
|
.lookupFunction<NativeVoidToFloat, VoidToDouble>("InventFloatValue");
|
|
|
|
typedef NullaryOp = int Function();
|
|
typedef NativeNullaryOp64 = ffi.Int64 Function();
|
|
final minInt64 =
|
|
ffiTestFunctions.lookupFunction<NativeNullaryOp64, NullaryOp>("MinInt64");
|
|
|
|
typedef NativeNullaryOp32 = ffi.Int32 Function();
|
|
final minInt32 =
|
|
ffiTestFunctions.lookupFunction<NativeNullaryOp32, NullaryOp>("MinInt32");
|
|
|
|
typedef NativeNullaryOpDouble = ffi.Double Function();
|
|
typedef NullaryOpDbl = double Function();
|
|
final smallDouble = ffiTestFunctions
|
|
.lookupFunction<NativeNullaryOpDouble, NullaryOpDbl>("SmallDouble");
|
|
|
|
typedef NativeUndenaryOp = ffi.IntPtr Function(
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr,
|
|
ffi.IntPtr);
|
|
typedef UndenaryOp = int Function(
|
|
int, int, int, int, int, int, int, int, int, int, int);
|
|
final regress37069 = ffiTestFunctions
|
|
.lookupFunction<NativeUndenaryOp, UndenaryOp>("Regress37069");
|
|
""";
|
|
}
|