var.inline.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #ifndef AFUN_VAR_INLINE_H
  2. #define AFUN_VAR_INLINE_H
  3. #include "var.h"
  4. namespace aFuncore {
  5. inline Object *Var::getData() {
  6. std::unique_lock<std::mutex> mutex{lock};
  7. return data;
  8. }
  9. inline void Var::setData(Object *data_) {
  10. std::unique_lock<std::mutex> mutex{lock};
  11. data = data_;
  12. }
  13. inline size_t VarSpace::getCount() {
  14. std::unique_lock<std::mutex> mutex{lock};
  15. return var.size();
  16. }
  17. inline Object *VarSpace::findObject(const std::string &name) {
  18. Var *ret = findVar(name);
  19. return ret ? ret->getData() : nullptr;
  20. }
  21. inline ProtectVarSpace::ProtectVarSpace(Inter &inter) : VarSpace(inter), is_protect{false} {
  22. }
  23. inline ProtectVarSpace::ProtectVarSpace(Environment &env_) : VarSpace(env_), is_protect{false} {
  24. }
  25. inline bool ProtectVarSpace::getProtect() const {
  26. return is_protect;
  27. }
  28. inline bool ProtectVarSpace::setProtect(bool protect) {
  29. bool ret = is_protect; is_protect = protect; return ret;
  30. }
  31. inline VarList::VarList(VarSpace *varspace) {
  32. this->varspace.push_front(varspace);
  33. }
  34. inline void VarList::push(VarSpace *varspace_) {
  35. std::unique_lock<std::mutex> mutex{lock};
  36. varspace.push_front(varspace_);
  37. }
  38. inline Object *VarList::findObject(const std::string &name) {
  39. Var *var = findVar(name);
  40. return var ? var->getData() : nullptr;
  41. }
  42. inline void VarList::GcLinkObject(std::queue<GcObjectBase *> &queue) {
  43. for (auto var : varspace)
  44. queue.push(var);
  45. }
  46. }
  47. #endif //AFUN_VAR_INLINE_H