mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#! /usr/bin/env python
 | 
						|
 | 
						|
# Add some standard cpp magic to a header file
 | 
						|
 | 
						|
import sys
 | 
						|
 | 
						|
def main():
 | 
						|
    args = sys.argv[1:]
 | 
						|
    for filename in args:
 | 
						|
        process(filename)
 | 
						|
 | 
						|
def process(filename):
 | 
						|
    try:
 | 
						|
        f = open(filename, 'r')
 | 
						|
    except IOError, msg:
 | 
						|
        sys.stderr.write('%s: can\'t open: %s\n' % (filename, str(msg)))
 | 
						|
        return
 | 
						|
    data = f.read()
 | 
						|
    f.close()
 | 
						|
    if data[:2] <> '/*':
 | 
						|
        sys.stderr.write('%s does not begin with C comment\n' % filename)
 | 
						|
        return
 | 
						|
    try:
 | 
						|
        f = open(filename, 'w')
 | 
						|
    except IOError, msg:
 | 
						|
        sys.stderr.write('%s: can\'t write: %s\n' % (filename, str(msg)))
 | 
						|
        return
 | 
						|
    sys.stderr.write('Processing %s ...\n' % filename)
 | 
						|
    magic = 'Py_'
 | 
						|
    for c in filename:
 | 
						|
        if ord(c)<=0x80 and c.isalnum():
 | 
						|
            magic = magic + c.upper()
 | 
						|
        else: magic = magic + '_'
 | 
						|
    sys.stdout = f
 | 
						|
    print '#ifndef', magic
 | 
						|
    print '#define', magic
 | 
						|
    print '#ifdef __cplusplus'
 | 
						|
    print 'extern "C" {'
 | 
						|
    print '#endif'
 | 
						|
    print
 | 
						|
    f.write(data)
 | 
						|
    print
 | 
						|
    print '#ifdef __cplusplus'
 | 
						|
    print '}'
 | 
						|
    print '#endif'
 | 
						|
    print '#endif /*', '!'+magic, '*/'
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main()
 |