我使用scala-native在scala中包装C API,但是C API期望用户通过API提供回调信号:
void set_terminate (void * solver, void * state, int (*terminate)(void * state));
定期调用回调以检查API进程是否必须中断。
我想在
中将它包装到此sig中def setTerminate[A](
state: A,
terminate: native.CFunctionPtr1[A, native.CInt] ): Unit = {
ipasir_set_terminate(solver, state, terminate)
}
我看到在nativelib.scala中定义了一些从scala到native的隐式转换
但是我无法理解它是如何工作的,以及如何从A到native.Ptr [Byte]执行擦除
任何帮助表示赞赏