当前位置: 首页>>代码示例>>Python>>正文


Python FFI.callback方法代码示例

本文整理汇总了Python中ffi.FFI.callback方法的典型用法代码示例。如果您正苦于以下问题:Python FFI.callback方法的具体用法?Python FFI.callback怎么用?Python FFI.callback使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ffi.FFI的用法示例。


在下文中一共展示了FFI.callback方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_cast_functionptr_and_int

# 需要导入模块: from ffi import FFI [as 别名]
# 或者: from ffi.FFI import callback [as 别名]
 def test_cast_functionptr_and_int(self):
     ffi = FFI(backend=self.Backend())
     def cb(n):
         return n + 1
     a = ffi.callback("int(*)(int)", cb)
     p = ffi.cast("void *", a)
     assert p
     b = ffi.cast("int(*)(int)", p)
     assert b(41) == 42
     assert a == b
     assert hash(a) == hash(b)
开发者ID:AN2016,项目名称:ffi,代码行数:13,代码来源:backend_tests.py

示例2: test_function_pointer

# 需要导入模块: from ffi import FFI [as 别名]
# 或者: from ffi.FFI import callback [as 别名]
 def test_function_pointer(self):
     ffi = FFI(backend=self.Backend())
     def cb(charp):
         assert repr(charp) == "<cdata 'char *'>"
         return 42
     fptr = ffi.callback("int(*)(const char *txt)", cb)
     assert fptr != ffi.callback("int(*)(const char *)", cb)
     assert repr(fptr) == "<cdata 'int(*)(char *)' calling %r>" % (cb,)
     res = fptr("Hello")
     assert res == 42
     #
     ffi.cdef("""
         int puts(const char *);
         int fflush(void *);
     """)
     fptr = ffi.cast("int(*)(const char *txt)", ffi.C.puts)
     assert fptr == ffi.C.puts
     assert repr(fptr) == "<cdata 'int(*)(char *)'>"
     with FdWriteCapture() as fd:
         fptr("world")
         ffi.C.fflush(None)
     res = fd.getvalue()
     assert res == 'world\n'
开发者ID:AN2016,项目名称:ffi,代码行数:25,代码来源:test_function.py

示例3: test_functionptr_simple

# 需要导入模块: from ffi import FFI [as 别名]
# 或者: from ffi.FFI import callback [as 别名]
 def test_functionptr_simple(self):
     ffi = FFI(backend=self.Backend())
     py.test.raises(TypeError, ffi.callback, "int(*)(int)")
     py.test.raises(TypeError, ffi.callback, "int(*)(int)", 0)
     def cb(n):
         return n + 1
     p = ffi.callback("int(*)(int)", cb)
     res = p(41)     # calling an 'int(*)(int)', i.e. a function pointer
     assert res == 42 and type(res) is int
     res = p(ffi.cast("int", -41))
     assert res == -40 and type(res) is int
     assert repr(p).startswith(
         "<cdata 'int(*)(int)' calling <function cb at 0x")
     assert ffi.typeof(p) is ffi.typeof("int(*)(int)")
     q = ffi.new("int(*)(int)", p)
     assert repr(q) == "<cdata 'int(* *)(int)' owning %d bytes>" % (
         SIZE_OF_PTR)
     py.test.raises(TypeError, "q(43)")
     res = q[0](43)
     assert res == 44
     q = ffi.cast("int(*)(int)", p)
     assert repr(q) == "<cdata 'int(*)(int)'>"
     res = q(45)
     assert res == 46
开发者ID:AN2016,项目名称:ffi,代码行数:26,代码来源:backend_tests.py


注:本文中的ffi.FFI.callback方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。