#include "env.hpp"
#include <cassert>

int env_var::get_offset(const std::string& name) const {
    if(name == this->name) return 0;
    assert(parent != nullptr);
    return parent->get_offset(name) + 1;
}

bool env_var::has_variable(const std::string& name) const {
    if(name == this->name) return true;
    if(parent) return parent->has_variable(name);
    return false;
}

int env_offset::get_offset(const std::string& name) const {
    assert(parent != nullptr);
    return parent->get_offset(name) + offset;
}

bool env_offset::has_variable(const std::string& name) const {
    if(parent) return parent->has_variable(name);
    return false;
}
