pltscheme ffi에서 _bitmask 사용
문제
이것은 PLT-Scheme 래퍼 라이브러리의 일부입니다.
(define InputMask
(_bitmask '(NoEventMask = #x00000000
KeyPressMask = #x00000001
KeyReleaseMask = #x00000002
...
OwnerGrabButtonMask = #x01000000)
_long))
문제는 비트 마스크에서 필드에 액세스하는 방법을 알 수 없다는 것입니다 (또는 그 문제에 대한 열거). 예를 들어 keypressmask 값을 얻으려면 어떻게해야합니까?
해결책
당신은 그렇지 않습니다. CTYPE를 추가하는 것은 쉽습니다. 새로운 CTYPE를 만들려면 기존 CTYPE를 구축 할 수있는 두 가지 기능을 제공해야합니다. 하나는 기존 유형으로 변환하고 다른 하나는 다른 방식으로 번역 할 수 있습니다.
이제 _bitmask
유형은 바로 그 일을합니다 _int
(그러나 당신의 경우에는 켜져 있습니다 _long
) 및 두 번역 함수는 기호 목록을 정수로, 정수를 기호 목록으로 변환합니다. 그러한 유형이 사용되면 KeyPressMask
- 당신은 당신이 지나갈 수 있다는 것을 알고 있습니다 '(KeyPressMask)
로서 InputMask
외국 기능에 입력하면 적절한 숫자로 변환됩니다. 또한 당신은 또한 당신이 InputMask
출력, 그러면 포함 할 수있는 기호 목록이 될 것입니다. KeyPressMask
. 결론은 계획 측면에서 숫자를 다루지 않으며 심볼 목록 만 다루지 않는다는 것입니다.
만약 너라면 하다 모호한 이유를 위해 이러한 값에 액세스해야한다면 다른 방법으로 자신의 CType을 만들 수 있습니다. make-ctype
(위에서 설명한대로)는 매우 쉬워야합니다.
제휴하지 않습니다 StackOverflow