process.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/env python
  2. # process stdin into an M4 macro definition file
  3. # recognize three keyword qgl qwgl qglX
  4. #
  5. # output
  6. # global macros keep track of the three intervals for function types:
  7. # gl_start gl_end wgl_start wgl_end glX_start glX_end
  8. # NOTE: will we need similar thing for extensions?
  9. #
  10. # each function:
  11. # f<id>_ret: return type
  12. # f<id>_name: function name
  13. # f<id>_params: complete params
  14. #
  15. # ex:
  16. # define(`f1_ret', `void')
  17. # define(`f1_name', `Accum')
  18. # define(`f1_params', ``GLenum op, GLfloat value'')
  19. #
  20. import sys, string
  21. from read import read_gl
  22. (gl, wgl, glX) = read_gl(sys.stdin)
  23. sys.stdout.write('define(`gl_start\', `0\')\n')
  24. sys.stdout.write('define(`gl_end\', `%d\')\n' % int(len(gl)-1))
  25. sys.stdout.write('define(`wgl_start\', `%d\')\n' % int(len(gl)))
  26. sys.stdout.write('define(`wgl_end\', `%d\')\n' % int(len(gl)+len(wgl)-1))
  27. sys.stdout.write('define(`glX_start\', `%d\')\n' % int(len(gl)+len(wgl)))
  28. sys.stdout.write('define(`glX_end\', `%d\')\n' % int(len(gl)+len(wgl)+len(glX)-1))
  29. i = 0
  30. for l in (gl, wgl, glX):
  31. for t in l:
  32. # process ret type to strip trailing spaces
  33. t[0] = string.strip(t[0])
  34. sys.stdout.write('define(`f%d_ret\', `%s\')\n' % (i, t[0]))
  35. sys.stdout.write('define(`f%d_name\', `%s\')\n' % (i, t[2]))
  36. sys.stdout.write('define(`f%d_params\', ``%s\'\')\n' % (i, t[3]))
  37. i += 1