| 
									
										
										
										
											2010-03-11 22:53:45 +00:00
										 |  |  | #! /usr/bin/env python3 | 
					
						
							| 
									
										
										
										
											1994-01-07 11:43:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Add some standard cpp magic to a header file | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def main(): | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     args = sys.argv[1:] | 
					
						
							| 
									
										
										
										
											2003-05-13 18:14:25 +00:00
										 |  |  |     for filename in args: | 
					
						
							|  |  |  |         process(filename) | 
					
						
							| 
									
										
										
										
											1994-01-07 11:43:11 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-05-13 18:14:25 +00:00
										 |  |  | def process(filename): | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     try: | 
					
						
							| 
									
										
										
										
											2003-05-13 18:14:25 +00:00
										 |  |  |         f = open(filename, 'r') | 
					
						
							| 
									
										
										
										
											2007-01-10 16:19:56 +00:00
										 |  |  |     except IOError as msg: | 
					
						
							| 
									
										
										
										
											2003-05-13 18:14:25 +00:00
										 |  |  |         sys.stderr.write('%s: can\'t open: %s\n' % (filename, str(msg))) | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |         return | 
					
						
							|  |  |  |     data = f.read() | 
					
						
							|  |  |  |     f.close() | 
					
						
							| 
									
										
										
										
											2008-05-16 15:23:30 +00:00
										 |  |  |     if data[:2] != '/*': | 
					
						
							| 
									
										
										
										
											2003-05-13 18:14:25 +00:00
										 |  |  |         sys.stderr.write('%s does not begin with C comment\n' % filename) | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |         return | 
					
						
							|  |  |  |     try: | 
					
						
							| 
									
										
										
										
											2003-05-13 18:14:25 +00:00
										 |  |  |         f = open(filename, 'w') | 
					
						
							| 
									
										
										
										
											2007-01-10 16:19:56 +00:00
										 |  |  |     except IOError as msg: | 
					
						
							| 
									
										
										
										
											2003-05-13 18:14:25 +00:00
										 |  |  |         sys.stderr.write('%s: can\'t write: %s\n' % (filename, str(msg))) | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |         return | 
					
						
							| 
									
										
										
										
											2003-05-13 18:14:25 +00:00
										 |  |  |     sys.stderr.write('Processing %s ...\n' % filename) | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     magic = 'Py_' | 
					
						
							| 
									
										
										
										
											2003-05-13 18:14:25 +00:00
										 |  |  |     for c in filename: | 
					
						
							| 
									
										
										
										
											2002-09-11 20:36:02 +00:00
										 |  |  |         if ord(c)<=0x80 and c.isalnum(): | 
					
						
							|  |  |  |             magic = magic + c.upper() | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |         else: magic = magic + '_' | 
					
						
							|  |  |  |     sys.stdout = f | 
					
						
							| 
									
										
										
										
											2007-08-03 17:06:41 +00:00
										 |  |  |     print('#ifndef', magic) | 
					
						
							|  |  |  |     print('#define', magic) | 
					
						
							|  |  |  |     print('#ifdef __cplusplus') | 
					
						
							|  |  |  |     print('extern "C" {') | 
					
						
							|  |  |  |     print('#endif') | 
					
						
							|  |  |  |     print() | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     f.write(data) | 
					
						
							| 
									
										
										
										
											2007-08-03 17:06:41 +00:00
										 |  |  |     print() | 
					
						
							|  |  |  |     print('#ifdef __cplusplus') | 
					
						
							|  |  |  |     print('}') | 
					
						
							|  |  |  |     print('#endif') | 
					
						
							|  |  |  |     print('#endif /*', '!'+magic, '*/') | 
					
						
							| 
									
										
										
										
											1994-01-07 11:43:11 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-08-09 17:27:55 +00:00
										 |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     main() |