Home | History | Annotate | Download | only in scripts
      1 #! /usr/bin/env python

      2 
      3 # Add some standard cpp magic to a header file

      4 
      5 import sys
      6 
      7 def main():
      8     args = sys.argv[1:]
      9     for filename in args:
     10         process(filename)
     11 
     12 def process(filename):
     13     try:
     14         f = open(filename, 'r')
     15     except IOError, msg:
     16         sys.stderr.write('%s: can\'t open: %s\n' % (filename, str(msg)))
     17         return
     18     data = f.read()
     19     f.close()
     20     if data[:2] <> '/*':
     21         sys.stderr.write('%s does not begin with C comment\n' % filename)
     22         return
     23     try:
     24         f = open(filename, 'w')
     25     except IOError, msg:
     26         sys.stderr.write('%s: can\'t write: %s\n' % (filename, str(msg)))
     27         return
     28     sys.stderr.write('Processing %s ...\n' % filename)
     29     magic = 'Py_'
     30     for c in filename:
     31         if ord(c)<=0x80 and c.isalnum():
     32             magic = magic + c.upper()
     33         else: magic = magic + '_'
     34     sys.stdout = f
     35     print '#ifndef', magic
     36     print '#define', magic
     37     print '#ifdef __cplusplus'
     38     print 'extern "C" {'
     39     print '#endif'
     40     print
     41     f.write(data)
     42     print
     43     print '#ifdef __cplusplus'
     44     print '}'
     45     print '#endif'
     46     print '#endif /*', '!'+magic, '*/'
     47 
     48 if __name__ == '__main__':
     49     main()
     50