Martin v. Löwis | 4d0d471 | 2010-12-03 20:14:31 +0000 | [diff] [blame] | 1 | #!/usr/bin/python |
| 2 | # Usage: typeslots.py < Include/typeslots.h > typeslots.inc |
| 3 | |
| 4 | import sys, re |
| 5 | |
Martin v. Löwis | 81c9b45 | 2010-12-04 09:11:41 +0000 | [diff] [blame] | 6 | print("/* Generated by typeslots.py $Revision$ */") |
Martin v. Löwis | 4d0d471 | 2010-12-03 20:14:31 +0000 | [diff] [blame] | 7 | res = {} |
| 8 | for line in sys.stdin: |
| 9 | m = re.match("#define Py_([a-z_]+) ([0-9]+)", line) |
| 10 | member = m.group(1) |
| 11 | if member.startswith("tp_"): |
| 12 | member = "ht_type."+member |
| 13 | elif member.startswith("nb_"): |
| 14 | member = "as_number."+member |
| 15 | elif member.startswith("mp_"): |
| 16 | member = "as_mapping."+member |
| 17 | elif member.startswith("sq_"): |
| 18 | member = "as_sequence."+member |
| 19 | elif member.startswith("bf_"): |
| 20 | member = "as_buffer."+member |
| 21 | res[int(m.group(2))] = member |
| 22 | |
| 23 | M = max(res.keys())+1 |
| 24 | for i in range(1,M): |
Martin v. Löwis | 35f08f0 | 2010-12-04 09:08:10 +0000 | [diff] [blame] | 25 | print("offsetof(PyHeapTypeObject, %s)," % res[i]) |