Pregunta

Esta es una parte de una biblioteca plt-esquema de envoltura:

(define InputMask

  (_bitmask '(NoEventMask =            #x00000000

            KeyPressMask =             #x00000001

            KeyReleaseMask =           #x00000002

            ...

            OwnerGrabButtonMask =      #x01000000)

      _long))

Lo que pasa es que no puedo encontrar la manera de acceder a los campos en una máscara de bits (o de enumeración para el caso). ¿Cómo puedo obtener el valor KeyPressMask por ejemplo?

¿Fue útil?

Solución

No puedes. Añadiendo ctypes es fácil:. Para hacer una nueva ctype, es necesario proporcionar una ctype existente para construir, y dos funciones - uno de traducir lo que sea con el tipo existente, y uno de traducir a la inversa

Ahora, el tipo _bitmask hace justamente eso - que se basa en _int (pero en su caso, está en _long), y las dos funciones de traducción traducir una lista de símbolos en un entero, y un entero a una lista de símbolos . Una vez que se utiliza un tipo tal, que no es necesario conocer el valor de KeyPressMask - que acaba de saber que se puede pasar '(KeyPressMask) como una entrada a la función InputMask extranjera, y que se traducirán al número apropiado; y también se sabe que cuando se obtiene el valor del resultado de una función que tiene una salida InputMask, entonces será una lista de símbolos que pueden contener KeyPressMask. La conclusión es que en el lado Esquema que no se ocupan de los números -. Sólo con listas de símbolos

Si lo necesidad de acceder a estos valores por alguna oscura razón, entonces usted puede construir su propia ctype de alguna otra manera - con ayuda de make-ctype (como he descrito más arriba) debería ser muy fácil <. / p>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top