fixheader.py 1.2 KB

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