blob: ba37c403975f8a1c55719a217b5ae5af63e2927f [file] [log] [blame]
Martin v. Löwis4d0d4712010-12-03 20:14:31 +00001#!/usr/bin/python
2# Usage: typeslots.py < Include/typeslots.h > typeslots.inc
3
4import sys, re
5
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -05006print("/* Generated by typeslots.py */")
Martin v. Löwis4d0d4712010-12-03 20:14:31 +00007res = {}
8for line in sys.stdin:
9 m = re.match("#define Py_([a-z_]+) ([0-9]+)", line)
Martin v. Löwisb30111f2011-01-06 19:26:21 +000010 if not m:
11 continue
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000012 member = m.group(1)
13 if member.startswith("tp_"):
14 member = "ht_type."+member
Yury Selivanov75445082015-05-11 22:57:16 -040015 elif member.startswith("am_"):
16 member = "as_async."+member
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000017 elif member.startswith("nb_"):
18 member = "as_number."+member
19 elif member.startswith("mp_"):
20 member = "as_mapping."+member
21 elif member.startswith("sq_"):
22 member = "as_sequence."+member
23 elif member.startswith("bf_"):
24 member = "as_buffer."+member
25 res[int(m.group(2))] = member
26
27M = max(res.keys())+1
28for i in range(1,M):
Martin v. Löwisb30111f2011-01-06 19:26:21 +000029 if i in res:
30 print("offsetof(PyHeapTypeObject, %s)," % res[i])
31 else:
32 print("0,")