#include "device_grid.h"

DeviceGrid::DeviceGrid(std::string grid_name, vtr::Matrix<t_grid_tile> grid)
    : name_(grid_name)
    , grid_(grid) {

    count_instances();
}

size_t DeviceGrid::num_instances(t_type_ptr type) const {
    auto iter = instance_counts_.find(type);
    if (iter != instance_counts_.end()) {
        //Return count
        return iter->second;
    }
    return 0; //None found
}

void DeviceGrid::clear() {
    grid_.clear();
    instance_counts_.clear();
}

void DeviceGrid::count_instances() {
    instance_counts_.clear();

    //Count the number of blocks in the grid
    for(size_t x = 0; x < width(); ++x) {
        for(size_t y = 0; y < height(); ++y) {
            auto type = grid_[x][y].type;

            if (grid_[x][y].width_offset == 0 && grid_[x][y].height_offset == 0) {
                //Add capacity only if this is the root location
                instance_counts_[type] += type->capacity;
            }
        }
    }
}
