[Pyrex] Function Pointer

Marco Bubke marco at bubke.de
Thu Mar 4 17:37:06 CET 2004


Hi

I want cast a function pointer to <void (*fn)()> but its not working. Its 
compiling but when there  nothing is happen. Its the GLU lib. There is AFAIK 
no other way. Can someone help me.

thank you and regards

Marco

Here the code

cdef extern from "GL/glu.h":

  ctypedef void GLUtesselator
  ctypedef void GLUtesselatorObj
  ctypedef void GLUtriangulatorObj
  cdef struct function_pointer:
    void (*fp)()
  ctypedef function_pointer fpt
  
  
  cdef enum:
    GLU_TESS_COMBINE_DATA
    GLU_TESS_BEGIN_DATA
    GLU_TESS_ERROR
    GLU_TESS_VERTEX_DATA

  GLUtesselator* gluNewTess()
  void gluDeleteTess(GLUtesselator*)

  void gluTessCallback(GLUtesselator*, GLenum which, void(*fn)())  <<<<<<<<<
	



def void tesselator_begin(GLenum mode, object tesselator):
  print "mode: ", mode

cdef void tesselator_vertex(object vertex, object tesselator):
  print "vertex: ", vertex._indice
  
cdef void tesselator_error(GLenum error):
  print "there is a error in the tesselator"

cdef void tesselator_combine(GLdouble coords[3], void* vertex_data[4], GLfloat 
weights[4], void **out_data, object tesselator):
  new_vertex = vertex()
  cdef void *p
  vertex._x = coords[0]
  vertex._x = coords[1]
  vertex._x = coords[2]
  vertex._indice = len(tesselator._vertex_list)
  p = <void*>new_vertex
  out_data = &p
  
cdef class tesselator:
  cdef GLUtesselator *_tesselator
  cdef object _vertex_list
  
  def __init__(self, vertex_list):
    self._tesselator = gluNewTess()
    gluTessCallback(self._tesselator, GLU_TESS_BEGIN_DATA, 
	<void(*)()>&tesselator_begin)             <<<<<<<<<<<<<<<<<<<
    gluTessCallback(self._tesselator, GLU_TESS_VERTEX_DATA, 
	<void(*)()>&tesselator_vertex)		<<<<<<<<<<<<<<<<<<<<
    gluTessCallback(self._tesselator, GLU_TESS_ERROR, 
	<void(*)()>&tesselator_error)		<<<<<<<<<<<<<<<<<<<<
    gluTessCallback(self._tesselator, GLU_TESS_COMBINE_DATA, 
	<void(*)()>&tesselator_combine)		<<<<<<<<<<<<<<<<<<<<
    self._vertex_list = vertex_list





More information about the Pyrex mailing list