/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
#pragma once
#ifndef TASK_HPP
#define TASK_HPP

#include <cstdint>
#include <filesystem>
#include <string>
#include <vector>

template <typename T> class Task {
  public:
    Task(std::vector<std::vector<T>> *data, int32_t rows, int32_t cols,
         std::string name);
    Task(std::vector<std::vector<T>> *data, int32_t rows, int32_t cols);
    ~Task();

  public:
    std::vector<std::vector<T>> *VectorData;
    int32_t Rows, Cols;
    std::filesystem::path PathName;
};

template <typename T>
Task<T>::Task(std::vector<std::vector<T>> *data, int32_t rows, int32_t cols,
              std::string name)
    : VectorData(data), Rows(rows), Cols(cols), PathName(name) {
}

template <typename T>
Task<T>::Task(std::vector<std::vector<T>> *data, int32_t rows, int32_t cols)
    : VectorData(data), Rows(rows), Cols(cols) {
    PathName = "";
}

template <typename T> Task<T>::~Task() {
    delete (VectorData);
}
#endif /* READER_HPP */
