PikaCompiler.h 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif
  4. #ifndef __PIKA_COMPILER__H
  5. #define __PIKA_COMPILER__H
  6. #include "PikaObj.h"
  7. #include "stdint.h"
  8. PIKA_RES pikaCompileFile(char* input_file_name);
  9. PIKA_RES pikaCompileFileWithOutputName(char* output_file_name,
  10. char* input_file_name);
  11. PIKA_RES pikaCompile(char* output_file_name, char* py_lines);
  12. LibObj* New_LibObj(Args* args);
  13. void LibObj_deinit(LibObj* self);
  14. void LibObj_dynamicLink(LibObj* self, char* module_name, uint8_t* bytecode);
  15. int LibObj_staticLink(LibObj* self,
  16. char* module_name,
  17. uint8_t* bytecode,
  18. size_t size);
  19. int LibObj_staticLinkFile(LibObj* self, char* input_file_name);
  20. void LibObj_listModules(LibObj* self);
  21. int LibObj_linkFile(LibObj* self, char* output_file_name);
  22. int LibObj_loadLibraryFile(LibObj* self, char* input_file_name);
  23. PikaObj* LibObj_getModule(LibObj* self, char* module_name);
  24. int Lib_loadLibraryFileToArray(char* origin_file_name, char* pikascript_root);
  25. char* LibObj_redirectModule(LibObj* self, Args* buffs, char* module_name);
  26. PikaMaker* New_PikaMaker(void);
  27. void pikaMaker_setPWD(PikaMaker* self, char* pwd);
  28. PIKA_RES pikaMaker_compileModule(PikaMaker* self, char* module_name);
  29. int pikaMaker_getDependencies(PikaMaker* self, char* module_name);
  30. void pikaMaker_printStates(PikaMaker* self);
  31. char* pikaMaker_getFirstNocompiled(PikaMaker* self);
  32. PIKA_RES pikaMaker_compileModuleWithDepends(PikaMaker* self, char* module_name);
  33. PIKA_RES pikaMaker_linkCompiledModulesFullPath(PikaMaker* self, char* lib_path);
  34. PIKA_RES pikaMaker_linkCompiledModules(PikaMaker* self, char* lib_name);
  35. PIKA_RES _do_pikaMaker_linkCompiledModules(PikaMaker* self,
  36. char* lib_name,
  37. pika_bool gen_c_array);
  38. int LibObj_loadLibrary(LibObj* self, uint8_t* library_bytes);
  39. void LibObj_printModules(LibObj* self);
  40. void pikaMaker_deinit(PikaMaker* self);
  41. PIKA_RES pikaMaker_linkRaw(PikaMaker* self, char* file_path);
  42. PIKA_RES pikaMaker_linkRaw_New(PikaMaker* self,
  43. char* file_path,
  44. char* pack_path);
  45. PIKA_RES _loadModuleDataWithName(uint8_t* library_bytes,
  46. char* module_name,
  47. uint8_t** addr_p,
  48. size_t* size_p);
  49. #define LIB_VERSION_NUMBER 6
  50. #define LIB_INFO_BLOCK_SIZE 32
  51. #define PIKA_APP_MAGIC_CODE_OFFSET 0
  52. #define PIKA_APP_MODULE_SIZE_OFFSET 1
  53. #define PIKA_APP_VERSION_OFFSET 2
  54. #define PIKA_APP_MODULE_NUM_OFFSET 3
  55. #define PIKA_APP_INFO_BLOCK_SIZE_OFFSET 4
  56. typedef struct {
  57. Arg* farg;
  58. uint8_t* addr;
  59. size_t size;
  60. size_t pos;
  61. pika_bool need_free;
  62. } pikafs_FILE;
  63. pikafs_FILE* pikafs_fopen(char* file_name, char* mode);
  64. pikafs_FILE* pikafs_fopen_pack(char* pack_name, char* file_name);
  65. int pikafs_fread(void* buf, size_t size, size_t count, pikafs_FILE* file);
  66. int pikafs_fwrite(void* buf, size_t size, size_t count, pikafs_FILE* file);
  67. int pikafs_fclose(pikafs_FILE* file);
  68. PIKA_RES pikafs_unpack_files(char* pack_name, char* out_path);
  69. PIKA_RES pikafs_pack_files(char* pack_name, int file_num, ...);
  70. PIKA_RES pikaMaker_compileModuleWithList(PikaMaker* self, char* list_content);
  71. PIKA_RES pikaMaker_compileModuleWithListFile(PikaMaker* self,
  72. char* list_file_name);
  73. #endif
  74. #ifdef __cplusplus
  75. }
  76. #endif