Ce n'est pas le cas. L'ajout de ctypes est simple: pour créer un nouveau ctype, vous devez fournir un ctype existant sur lequel construire, et deux fonctions - une pour traduire n'importe quel type existant, et une pour traduire l'autre.
Maintenant, le type _bitmask
exactement ce que fait - il construit sur _int
(mais dans votre cas, il est sur _long
), et les deux fonctions de traduction traduire une liste de symboles à un nombre entier, et un entier à une liste de symboles Une fois un tel type est utilisé, vous n'avez pas besoin de connaître la valeur de KeyPressMask
- vous savez juste que vous pouvez passer '(KeyPressMask)
comme une entrée InputMask
à la fonction étrangère, et cela sera traduit au nombre approprié; et vous savez également que lorsque vous obtenez la valeur de résultat d'une fonction ayant une sortie InputMask
, il s'agit alors d'une liste de symboles pouvant contenir KeyPressMask
. En bout de ligne, du côté Scheme, vous ne traitez pas de nombres, mais seulement des listes de symboles.
Si vous avez besoin d'accéder à ces valeurs pour une raison obscure, vous pouvez construire votre propre ctype d'une autre manière - en utilisant make-ctype
(comme je l'ai indiqué ci-dessus) devrait être très facile.
Merci! J'ai essayé 'KeyPressMask sans parenthèses (idiot moi :)) Je pourrais manquer une partie où cela est expliqué dans docs, mais je suis sûr qu'il n'est pas expliqué sur la page "Enumerations and Masks". – Slartibartfast
Eh bien, les documents pour cela dit: "le mappage résultant traduit une * liste de symboles * en un nombre et retour". En tout cas, si vous avez une idée pour un phrasé plus évident je le commettrai. (Les docs étrangers pourraient utiliser quelques éclaircissements en général ...) –