rt-activation.inline.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef AFUN_RT_ACTIVATION_INLINE_H
  2. #define AFUN_RT_ACTIVATION_INLINE_H
  3. #include "rt-activation.h"
  4. namespace aFunrt {
  5. NormalActivation::VarList &NormalActivation::getVarlist(){
  6. return varlist;
  7. }
  8. NormalActivation::VarList::VarList() : varspace{} {
  9. }
  10. NormalActivation::VarList::VarList(VarList &&new_varlist) noexcept : varspace{std::move(new_varlist.varspace)} {
  11. }
  12. NormalActivation::VarList &NormalActivation::VarList::operator=(VarList &&new_varlist) noexcept {
  13. clear();
  14. varspace = std::move(new_varlist.varspace);
  15. return *this;
  16. }
  17. void NormalActivation::VarList::push(VarSpace *varspace_) {
  18. varspace_->addReference();
  19. varspace.push_front(varspace_);
  20. }
  21. size_t NormalActivation::VarList::count() {
  22. return varspace.size();
  23. }
  24. aFuncore::Object *NormalActivation::VarList::findObject(const std::string &name) {
  25. Var *var = findVar(name);
  26. return var ? var->getData() : nullptr;
  27. }
  28. ExeActivation::ExeActivation(const aFuncode::Code &code, aFuncore::Inter &inter_) : NormalActivation(inter_), start{code.getByteCode()}, next{code.getByteCode()} {
  29. }
  30. ExeActivation::ExeActivation(const aFuncode::Code::ByteCode *code, aFuncore::Inter &inter_) : NormalActivation(inter_), start{code}, next{code} {
  31. }
  32. const aFuncode::Code::ByteCode *ExeActivation::getStart() const{
  33. return start;
  34. }
  35. const aFuncode::Code &TopActivation::getBase() const {
  36. return base;
  37. }
  38. FuncActivation::FuncActivation(const aFuncode::Code::ByteCode *code, aFuncore::Inter &inter_) : NormalActivation(inter_), call{code} {
  39. }
  40. }
  41. #endif //AFUN_RT_ACTIVATION_INLINE_H