mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			821 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			821 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/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,")
 | 
