blob: ba2e0c503b062ed042f07841ca7e4707bab6b68f [file] [log] [blame]
Guido van Rossumf06ee5f1996-11-27 19:52:01 +00001#! /usr/bin/env python
Guido van Rossum0b7dfbb1994-01-07 11:43:11 +00002
3# Add some standard cpp magic to a header file
4
5import sys
6import string
7
8def main():
Tim Peters70c43782001-01-17 08:48:39 +00009 args = sys.argv[1:]
10 for file in args:
11 process(file)
Guido van Rossum0b7dfbb1994-01-07 11:43:11 +000012
13def process(file):
Tim Peters70c43782001-01-17 08:48:39 +000014 try:
15 f = open(file, 'r')
16 except IOError, msg:
17 sys.stderr.write('%s: can\'t open: %s\n' % (file, str(msg)))
18 return
19 data = f.read()
20 f.close()
21 if data[:2] <> '/*':
22 sys.stderr.write('%s does not begin with C comment\n' % file)
23 return
24 try:
25 f = open(file, 'w')
26 except IOError, msg:
27 sys.stderr.write('%s: can\'t write: %s\n' % (file, str(msg)))
28 return
29 sys.stderr.write('Processing %s ...\n' % file)
30 magic = 'Py_'
31 for c in file:
Fred Drake79e75e12001-07-20 19:05:50 +000032 if c in string.ascii_letters + string.digits:
Tim Peters70c43782001-01-17 08:48:39 +000033 magic = magic + string.upper(c)
34 else: magic = magic + '_'
35 sys.stdout = f
36 print '#ifndef', magic
37 print '#define', magic
38 print '#ifdef __cplusplus'
39 print 'extern "C" {'
40 print '#endif'
41 print
42 f.write(data)
43 print
44 print '#ifdef __cplusplus'
45 print '}'
46 print '#endif'
47 print '#endif /*', '!'+magic, '*/'
Guido van Rossum0b7dfbb1994-01-07 11:43:11 +000048
49main()