genstub.py 842 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import os
  2. with open('include/pocketpy/pocketpy_c.h') as f:
  3. lines = f.readlines()
  4. a = []
  5. for line in lines:
  6. if line.startswith("PK_EXPORT"):
  7. _, ret, *body = line.split()
  8. else:
  9. continue
  10. body = ' '.join(body)
  11. assert body.endswith(";")
  12. body = body[:-1]
  13. if '(pkpy_vm*' in body:
  14. body = body.replace('(pkpy_vm*', '(pkpy_vm* vm')
  15. if ret == 'void':
  16. mock_string = ''
  17. else:
  18. mock_string = ' '*4 + ret + ' returnValue;\n return returnValue;'
  19. a.append(
  20. ret + ' ' + body + ' {\n' + mock_string + '\n}\n'
  21. )
  22. # use LF line endings instead of CRLF
  23. with open('src2/pocketpy_c.c', 'wt', encoding='utf-8', newline='\n') as f:
  24. f.write('''
  25. #include "pocketpy_c.h"
  26. #ifdef _WIN32
  27. #pragma warning(disable: 4700)
  28. #endif
  29. ''')
  30. f.write('\n'.join(a))