This file is indexed.

/usr/share/pyshared/OpenGL/arrays/buffers.py is in python-opengl 3.0.2-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#! /usr/bin/env python
"""Test for a buffer-protocol-based access mechanism

Will *only* work for Python 2.6+, and pretty much just works for strings
under 2.6 (in terms of the common object types).
"""
import ctypes,sys
from OpenGL.arrays import _buffers
from OpenGL import constants
from OpenGL.arrays import formathandler

class BufferHandler( formathandler.FormatHandler ):
    """Buffer-protocol data-type handler for OpenGL"""
    HANDLED_TYPES = (bytes,bytearray)
    @classmethod
    def from_param( cls, value, typeCode=None ):
        if not isinstance( value, _buffers.Py_buffer ):
            raise TypeError( """Can't convert value to py-buffer in from_param""" )
        return value.buf
    dataPointer = staticmethod( dataPointer )
    def zeros( self, dims, typeCode=None ):
        """Currently don't allow strings as output types!"""
        return self.asArray( bytearray( b'\000'*reduce(operator.mul,dims)*BYTE_SIZES[typeCode] ) )
    def ones( self, dims, typeCode=None ):
        """Currently don't allow strings as output types!"""
        raise NotImplemented( """Have not implemented ones for buffer type""" )
    def arrayToGLType( self, value ):
        """Given a value, guess OpenGL type of the corresponding pointer"""
        raise NotImplemented( """Can't guess data-type from a string-type argument""" )
    def arraySize( self, value, typeCode = None ):
        """Given a data-value, calculate ravelled size for the array"""
        # need to get bits-per-element...
        # TODO: verify that multi-dim gives ravelled for buffer API
        return value.len
    def arrayByteCount( self, value, typeCode = None ):
        """Given a data-value, calculate number of bytes required to represent"""
        return value.len * value.itemsize
    def asArray( self, value, typeCode=None ):
        """Convert given value to an array value of given typeCode"""
        if not CheckBuffer( value ):
            raise TypeError( """Require a type which supports the buffer protocol, %s doesn't"""%( type(value)))
        buf = Py_buffer()
        GetBuffer( value, buf, PyBUF_CONTIG_RO )
        return buf
    def dimensions( self, value, typeCode=None ):
        """Determine dimensions of the passed array value (if possible)"""
        return value.dims

BYTE_SIZES = {
    constants.GL_DOUBLE: ctypes.sizeof( constants.GLdouble ),
    constants.GL_FLOAT: ctypes.sizeof( constants.GLfloat ),
    constants.GL_INT: ctypes.sizeof( constants.GLint ),
    constants.GL_SHORT: ctypes.sizeof( constants.GLshort ),
    constants.GL_UNSIGNED_BYTE: ctypes.sizeof( constants.GLubyte ),
    constants.GL_UNSIGNED_SHORT: ctypes.sizeof( constants.GLshort ),
    constants.GL_BYTE: ctypes.sizeof( constants.GLbyte ),
    constants.GL_UNSIGNED_INT: ctypes.sizeof( constants.GLuint ),
}