code.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef AFUN_BYTECODE
  2. #define AFUN_BYTECODE
  3. #include <stdio.h>
  4. #include "aFunCoreExport.h"
  5. #define CODE_STR_MAX_SIZE (50)
  6. typedef struct af_Code af_Code;
  7. /* 括号类型 */
  8. enum af_BlockType {
  9. parentheses = '(', // 小括号
  10. brackets = '[', // 中括号
  11. curly = '{', // 大括号
  12. };
  13. /* 代码块创建函数 */
  14. AFUN_CORE_EXPORT af_Code *makeElementCode(char *var, char prefix, FileLine line, FilePath path);
  15. AFUN_CORE_EXPORT af_Code *makeBlockCode(enum af_BlockType type, af_Code *element, char prefix,
  16. FileLine line, FilePath path, af_Code **next);
  17. /* 代码块释放函数 */
  18. AFUN_CORE_EXPORT void freeAllCode(af_Code *bt);
  19. /* 代码块操作函数 */
  20. AFUN_CORE_EXPORT af_Code *connectCode(af_Code **base, af_Code *next);
  21. AFUN_CORE_EXPORT af_Code *copyCode(af_Code *base, FilePath *path);
  22. /* 代码块属性获取函数 */
  23. AFUN_CORE_EXPORT bool getCodeBlockNext(af_Code *bt, af_Code **next);
  24. AFUN_CORE_EXPORT void printCode(af_Code *bt);
  25. AFUN_CORE_EXPORT char *codeToStr(af_Code *code, int n);
  26. /* 代码块IO函数 */
  27. AFUN_CORE_EXPORT bool writeAllCode(af_Code *bt, FILE *file);
  28. AFUN_CORE_EXPORT bool readAllCode(af_Code **bt, FILE *file);
  29. #endif //AFUN_BYTECODE