// AUTO GENERATED FILE, DO NOT EDIT.
//
// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;

/// Adds 2 integers.
@ffi.FfiNative<ffi.Int Function(ffi.Int, ffi.Int)>('sum')
external int sum(
  int a,
  int b,
);

/// Subtracts 2 integers.
@ffi.FfiNative<ffi.Int Function(ffi.Pointer<ffi.Int>, ffi.Int)>('subtract')
external int subtract(
  ffi.Pointer<ffi.Int> a,
  int b,
);

/// Multiplies 2 integers, returns pointer to an integer,.
@ffi.FfiNative<ffi.Pointer<ffi.Int> Function(ffi.Int, ffi.Int)>('multiply')
external ffi.Pointer<ffi.Int> multiply(
  int a,
  int b,
);

/// Divides 2 integers, returns pointer to a float.
@ffi.FfiNative<ffi.Pointer<ffi.Float> Function(ffi.Int, ffi.Int)>('divide')
external ffi.Pointer<ffi.Float> divide(
  int a,
  int b,
);

/// Divides 2 floats, returns a pointer to double.
@ffi.FfiNative<
    ffi.Pointer<ffi.Double> Function(
        ffi.Pointer<ffi.Float>, ffi.Pointer<ffi.Float>)>('dividePrecision')
external ffi.Pointer<ffi.Double> dividePrecision(
  ffi.Pointer<ffi.Float> a,
  ffi.Pointer<ffi.Float> b,
);
