| | """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 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 |
| |
|