5 个版本
0.2.1 | 2022年10月31日 |
---|---|
0.2.0 | 2022年10月24日 |
0.1.2 | 2022年9月5日 |
0.1.1 | 2022年9月5日 |
0.1.0 | 2022年9月5日 |
#155 in FFI
10KB
226 行
Nano-COM
见 Nano-COM.
函数堆栈
- 一个公共函数。
let o: Object<IMy> = ...; // calling a public function let i: u32 = o.B();
trait IMyEx { // a definition fn B(&self) -> u32; } impl IMyEx for Object<IMy> { // an implementation of the public function fn B(&self) -> u32 { // calling a virtual function. unsafe { (self.interface().B()(self) } } }
- 一个虚函数。
#[repr(C)] pub struct IMy { // a definiton of the virtual function pub B: unsafe extern "stdcall" fn(this: &Object<IMy>) -> u32 } trait IMyVmtFn: Class<Interface = IMy> where CObject<Self>: IMyEx { // an implementation of the virtual function extern "stdcall" fn B(this: &Object<IMy>) -> u32 { // calling a function implementation unsafe { Self::to_cobject(this) }.B() } }
- 一个函数实现。
trait IMyEx { // a definition fn B(&self) -> u32; } impl IMyEx for CObject<X> { // an implementation of the function. fn B(&self) -> u32 { self.value.0 } }