从PltScheme FFI使用_bitmask
题
这是一个PLT-方案包装库的一部分:
(define InputMask
(_bitmask '(NoEventMask = #x00000000
KeyPressMask = #x00000001
KeyReleaseMask = #x00000002
...
OwnerGrabButtonMask = #x01000000)
_long))
的事情是我不能找出如何访问字段中的位掩码(或枚举为此事)。我怎样才能获得例如KeyPressMask价值?
解决方案
您没有。添加ctypes的很容易:做一个新的命令类型,您需要提供现有的命令类型的基础上,和两个功能 - 一个翻译任何现有的类型,以及一个其他的方式来翻译
现在,_bitmask
型少了点 - 它建立在_int
(但你的情况,这是对_long
),和两个翻译功能翻译的符号列表到一个整数,一个整数符号列表。一旦这样的类型时,你不需要知道KeyPressMask
的价值 - 你只知道你可以通过'(KeyPressMask)
作为InputMask
输入外国功能的,这将被转换为相应的数字;你也知道,当你从一个具有InputMask
输出函数的结果值,那么这将是可能含有KeyPressMask
符号列表。底线是,在计划方面,你不处理数字 - 只有符号列表
如果您的做的需要访问这些数值对于一些模糊的原因,那么你可以建立在其他某种方式对你自己的CTYPE - 使用make-ctype
(正如我上面所述)应该是很容易<。 / p>
不隶属于 StackOverflow