[Python-Dev] Constants from C headers and int/long unification (original) (raw)

Guido van Rossum guido at python.org
Fri Dec 5 18:24:05 EST 2003


I have C header files which I parse and to which I can do some simple processing before outputting them as Python code. An example C file will contain

enum { kConstantOne = 0xffffffff, kConstantTwo = -1, }; Regexps will grab the two constants and output them to Python. The Python programmer will pass these constants to an API routine, at which point I need a PyArgParse format char that will convert both of these values to the 32 bit pattern 0xffffffff. Question 1: Do I need to add anything to the constants before outputting them as Python code?

No -- kConstantTwo automatically become a long with value 2**32-1 in Python 2.3 and up.

Question 2: Is there a format char that will convert both of the values produced by the answer to question 1 to the 32 bit pattern 0xffffffff?

If you mean a PyArg_Parse format char, yes: use 'k'.

If you meant a Python % format char, you'd have to write "%x" % (x&0xffffffff).

--Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-Dev mailing list