File: _opaque.py

package info (click to toggle)
pyopengl 3.1.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 14,972 kB
  • sloc: python: 107,767; sh: 13; makefile: 7
file content (25 lines) | stat: -rw-r--r-- 850 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"""Data-type definitions for EGL/GLES"""
import ctypes
pointer = ctypes.pointer

class _Opaque( ctypes.Structure ):
    """An Opaque Structure reference (base class)"""
class _opaque_pointer( ctypes.POINTER( _Opaque ) ):
    _type_ = _Opaque
    @classmethod
    def from_param( cls, value ):
        return ctypes.cast( value, cls )
    @property
    def address( self ):
        return ctypes.addressof( self.contents )
    @property 
    def as_voidp( self ):
        return ctypes.c_voidp( self.address )
    def __hash__(self):
        """Allow these pointers to be used as keys in dictionaries"""
        return self.address
def opaque_pointer_cls( name ):
    """Create an Opaque pointer class for the given name"""
    typ = type( name, (_Opaque,), {} )
    p_typ = type( name+'_pointer', (_opaque_pointer,), {'_type_':typ})
    return p_typ