core-activation.inline.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #ifndef AFUN_CORE_ACTIVATION_INLINE_H
  2. #define AFUN_CORE_ACTIVATION_INLINE_H
  3. #include "core-activation.h"
  4. namespace aFuncore {
  5. Activation::VarList &Activation::getVarlist(){
  6. return varlist;
  7. }
  8. UpMessage &Activation::getUpStream() {
  9. return up;
  10. }
  11. DownMessage &Activation::getDownStream() {
  12. return down;
  13. }
  14. aFuntool::FileLine Activation::getFileLine() const{
  15. return line;
  16. }
  17. const aFuntool::FilePath &Activation::getFilePath() const{
  18. return path;
  19. }
  20. Activation::VarList::VarList() : varspace{} {
  21. }
  22. Activation::VarList::VarList(VarList &&new_varlist) : varspace{std::move(new_varlist.varspace)} {
  23. }
  24. Activation::VarList &Activation::VarList::operator=(VarList &&new_varlist) noexcept {
  25. clear();
  26. varspace = std::move(new_varlist.varspace);
  27. return *this;
  28. }
  29. void Activation::VarList::push(VarSpace *varspace_) {
  30. varspace_->addReference();
  31. varspace.push_front(varspace_);
  32. }
  33. size_t Activation::VarList::count() {
  34. return varspace.size();
  35. }
  36. Object *Activation::VarList::findObject(const std::string &name) {
  37. Var *var = findVar(name);
  38. return var ? var->getData() : nullptr;
  39. }
  40. ExeActivation::ExeActivation(const Code &code, Inter &inter_) : Activation(inter_), start{code.getByteCode()}, next{code.getByteCode()} {
  41. }
  42. ExeActivation::ExeActivation(const Code::ByteCode *code, Inter &inter_) : Activation(inter_), start{code}, next{code} {
  43. }
  44. const Code::ByteCode *ExeActivation::getStart() const{
  45. return start;
  46. }
  47. const Code &TopActivation::getBase() const {
  48. return base;
  49. }
  50. FuncActivation::FuncActivation(const Code::ByteCode *code, Inter &inter_) : Activation(inter_), call{code} {
  51. }
  52. }
  53. #endif //AFUN_CORE_ACTIVATION_INLINE_H