env.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef AFUN__ENV_H_PUBLIC
  2. #define AFUN__ENV_H_PUBLIC
  3. #include "macro.h"
  4. #include "tool.h"
  5. #include "prefix_macro.h"
  6. typedef struct af_Environment af_Environment;
  7. typedef struct af_Message af_Message;
  8. /* 顶层消息处理器的处理函数 DLC */
  9. DEFINE_DLC_SYMBOL(TopMsgProcessFunc);
  10. #include "code.h"
  11. #include "object.h"
  12. #include "var.h"
  13. /* 前缀管理函数 */
  14. char getPrefix(size_t name, af_Environment *env);
  15. char setPrefix(size_t name, char prefix, af_Environment *env);
  16. /* 运行环境函数 */
  17. af_Environment *makeEnvironment(void);
  18. bool enableEnvironment(af_Environment *env);
  19. void freeEnvironment(af_Environment *env);
  20. /* 保护空间管理函数 */
  21. bool addVarToProtectVarSpace(af_Var *var, af_Environment *env);
  22. af_Object *getBaseObject(char *name, af_Environment *env);
  23. /* 消息创建与释放函数 */
  24. af_Message *makeMessage(char *type, size_t size);
  25. af_Message *freeMessage(af_Message *msg);
  26. void freeAllMessage(af_Message *msg);
  27. void *getMessageData(af_Message *msg);
  28. void connectMessage(af_Message **base, af_Message *msg);
  29. /* 消息管理函数 */
  30. void pushMessageUp(af_Message *msg, af_Environment *env);
  31. void *popMessageUpData(char *type, af_Environment *env);
  32. af_Message *popMessageUp(af_Environment *env);
  33. /* 下行消息表管理函数 */
  34. void pushMessageDown(af_Message *msg, af_Environment *env);
  35. af_Message *popMessageDown(char *type, af_Environment *env);
  36. af_Message *getFirstMessage(af_Environment *env);
  37. /* 环境变量管理函数 */
  38. void setEnvVar(char *name, char *data, af_Environment *env);
  39. char *findEnvVar(char *name, af_Environment *env);
  40. /* 顶层消息处理器管理函数 */
  41. void addTopMsgProcess(char *type, DLC_SYMBOL(TopMsgProcessFunc) func,
  42. af_Environment *env);
  43. bool changeTopMsgProcess(char *type, DLC_SYMBOL(TopMsgProcessFunc) func,
  44. af_Environment *env);
  45. #endif //AFUN__ENV_H_PUBLIC