a
    ij^                     @   s  d Z ddlZddlZejdd dk r.edddlT dZd ZZdZ	d	e	B Z
e	eB Ze	Zd
e
B ZdZeedejZdejfdejfdefdefdejfdejfdejfdeefdeefdeefg
Zejdd dksejdd dkr
edejfg nedejd fdejfg G dd dejZeeZzejjZejge_ eje_!W n. e"y Z# zdd ZW Y dZ#[#n
dZ#[#0 0 ejj$Z%ejge%_ ejj&Z'ejeejge'_ eje'_!ejj(Z)ege)_ de)_!dS )zFPython 3.x buffer-handling (currently just for bytes/bytearray types)
    N   )r      z+Buffer interface only usable on Python 2.6+   )*             	c_ssize_tbufobjlenitemsizereadonlyndimformatshapestrides
suboffsets)   r   ZinternalZ
smalltablec                   @   sf   e Zd ZdZeeeB eB fddZe	Z	e
dd Zdd Ze
dd	 Zd
d ZdddZdd ZdS )	Py_bufferz-Wrapper around the Python buffer structure...c                 C   sX   t |std|jf |  }t|||}|dkr@td|f |jsTtd|f |S )z0Create a new Py_buffer referencing ram of objectz(%s type does not support Buffer Protocolr   z!Unable to retrieve Buffer from %szNull pointer result from %s)CheckBuffer	TypeError	__class__	GetBuffer
ValueErrorr   )clsobjectflagsr   result r    T/home/ghrups/robot-bench/.venv/lib/python3.9/site-packages/OpenGL/arrays/_buffers.pyfrom_object9   s    
zPy_buffer.from_objectc                 C   s   | j d | j S N)r   r   selfr    r    r!   dimsM   s    zPy_buffer.dimsc                 C   s
   | j d S )Nr   )r   r$   r    r    r!   __len__Q   s    zPy_buffer.__len__c                 C   s   | j r| j d | j S d S r#   )r   r   r$   r    r    r!   dim_stridesT   s    zPy_buffer.dim_stridesc                 C   s   d S r#   r    r$   r    r    r!   	__enter__Z   s    zPy_buffer.__enter__Nc                 C   s   | j rt|  d S r#   r   ReleaseBuffer)r%   exc_type	exc_value	tracebackr    r    r!   __exit__]   s    zPy_buffer.__exit__c                 C   s   | j rt|  d S r#   r*   r$   r    r    r!   __del__a   s    zPy_buffer.__del__)NNN)__name__
__module____qualname____doc__classmethodPyBUF_STRIDESPyBUF_FORMATPyBUF_C_CONTIGUOUSr"   _fields_propertyr&   r'   r(   r)   r/   r0   r    r    r    r!   r   6   s   



r   c                 C   s   d S r#   r    )xr    r    r!   r   o   s    r   )*r4   ctypessysversion_infoImportErrorZ_arrayconstantsZPyBUF_SIMPLEZPyBUF_WRITABLEZPyBUF_WRITEABLEZPyBUF_NDr6   ZPyBUF_CONTIGZPyBUF_CONTIG_ROr8   r7   getattrZc_ulongr
   Zc_void_pZc_intc_char_pZPOINTERr9   extendZc_size_tZ	Structurer   ZBUFFER_POINTERZ	pythonapiZPyObject_CheckBufferr   Z	py_objectargtypesrestypeAttributeErrorerrZ	Py_IncRefZIncRefZPyObject_GetBufferr   ZPyBuffer_Releaser+   r    r    r    r!   <module>   sd   &0


