blob: 844c879584140430aa977ab2a148a928f0109fb8 [file] [log] [blame]
// 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.
part of dart.ffi;
/// Represents a dynamically loaded C library.
class DynamicLibrary {
/// Loads a dynamic library file. This is the equivalent of dlopen.
///
/// Throws an [ArgumentError] if loading the dynamic library fails.
///
/// Note that it loads the functions in the library lazily (RTLD_LAZY).
external factory DynamicLibrary.open(String name);
/// Looks up a symbol in the [DynamicLibrary] and returns its address in
/// memory. Equivalent of dlsym.
///
/// Throws an [ArgumentError] if it fails to lookup the symbol.
external Pointer<T> lookup<T extends NativeType>(String symbolName);
/// Helper that combines lookup and cast to a Dart function.
F lookupFunction<T extends Function, F extends Function>(String symbolName) {
return lookup<NativeFunction<T>>(symbolName)?.asFunction<F>();
}
/// Dynamic libraries are equal if they load the same library.
external bool operator ==(other);
/// The hash code for a DynamicLibrary only depends on the loaded library
external int get hashCode;
/// The handle to the dynamic library.
external Pointer<Void> get handle;
}