| #!/usr/bin/python |
| # Usage: typeslots.py < Include/typeslots.h > typeslots.inc |
| |
| import sys, re |
| |
| print("/* Generated by typeslots.py */") |
| res = {} |
| for line in sys.stdin: |
| m = re.match("#define Py_([a-z_]+) ([0-9]+)", line) |
| if not m: |
| continue |
| member = m.group(1) |
| if member.startswith("tp_"): |
| member = "ht_type."+member |
| elif member.startswith("nb_"): |
| member = "as_number."+member |
| elif member.startswith("mp_"): |
| member = "as_mapping."+member |
| elif member.startswith("sq_"): |
| member = "as_sequence."+member |
| elif member.startswith("bf_"): |
| member = "as_buffer."+member |
| res[int(m.group(2))] = member |
| |
| M = max(res.keys())+1 |
| for i in range(1,M): |
| if i in res: |
| print("offsetof(PyHeapTypeObject, %s)," % res[i]) |
| else: |
| print("0,") |