1 #![allow(
2     dead_code,
3     non_snake_case,
4     non_camel_case_types,
5     non_upper_case_globals
6 )]
7 
8 extern crate libloading;
9 pub struct TestLib {
10     __library: ::libloading::Library,
11     pub foo: unsafe extern "C" fn(
12         x: ::std::os::raw::c_int,
13         y: ::std::os::raw::c_int,
14     ) -> ::std::os::raw::c_int,
15     pub bar: unsafe extern "C" fn(
16         x: *mut ::std::os::raw::c_void,
17     ) -> ::std::os::raw::c_int,
18     pub baz: unsafe extern "C" fn() -> ::std::os::raw::c_int,
19 }
20 impl TestLib {
newnull21     pub unsafe fn new<P>(path: P) -> Result<Self, ::libloading::Error>
22     where
23         P: AsRef<::std::ffi::OsStr>,
24     {
25         let library = ::libloading::Library::new(path)?;
26         Self::from_library(library)
27     }
from_librarynull28     pub unsafe fn from_library<L>(
29         library: L,
30     ) -> Result<Self, ::libloading::Error>
31     where
32         L: Into<::libloading::Library>,
33     {
34         let __library = library.into();
35         let foo = __library.get(b"foo\0").map(|sym| *sym)?;
36         let bar = __library.get(b"bar\0").map(|sym| *sym)?;
37         let baz = __library.get(b"baz\0").map(|sym| *sym)?;
38         Ok(TestLib {
39             __library,
40             foo,
41             bar,
42             baz,
43         })
44     }
foonull45     pub unsafe fn foo(
46         &self,
47         x: ::std::os::raw::c_int,
48         y: ::std::os::raw::c_int,
49     ) -> ::std::os::raw::c_int {
50         (self.foo)(x, y)
51     }
barnull52     pub unsafe fn bar(
53         &self,
54         x: *mut ::std::os::raw::c_void,
55     ) -> ::std::os::raw::c_int {
56         (self.bar)(x)
57     }
baznull58     pub unsafe fn baz(&self) -> ::std::os::raw::c_int {
59         (self.baz)()
60     }
61 }
62