| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #!/usr/bin/python | 
					
						
							|  |  |  | # Usage: typeslots.py < Include/typeslots.h > typeslots.inc | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import sys, re | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-31 20:52:17 -05:00
										 |  |  | print("/* Generated by typeslots.py */") | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | res = {} | 
					
						
							|  |  |  | for line in sys.stdin: | 
					
						
							|  |  |  |     m = re.match("#define Py_([a-z_]+) ([0-9]+)", line) | 
					
						
							| 
									
										
										
										
											2011-01-06 19:26:21 +00:00
										 |  |  |     if not m: | 
					
						
							|  |  |  |         continue | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  |     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): | 
					
						
							| 
									
										
										
										
											2011-01-06 19:26:21 +00:00
										 |  |  |     if i in res: | 
					
						
							|  |  |  |         print("offsetof(PyHeapTypeObject, %s)," % res[i]) | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         print("0,") |