#ifndef _UHDM_AST_REPORT_H_
#define _UHDM_AST_REPORT_H_ 1

#include "kernel/yosys.h"
#include <map>
#include <string>
#include <unordered_map>
#undef cover
#include <uhdm/uhdm.h>

YOSYS_NAMESPACE_BEGIN

class UhdmAstReport
{
  private:
    // Maps a filename to the number of objects being handled by the frontend
    std::unordered_map<std::string, unsigned> handled_count_per_file;

  public:
    // Objects not being handled by the frontend
    std::set<const UHDM::BaseClass *> unhandled;

    // Marks the specified object as being handled by the frontend
    void mark_handled(const UHDM::BaseClass *object);

    // Marks the object referenced by the specified handle as being handled by the frontend
    void mark_handled(vpiHandle obj_h);

    // Write the coverage report to the specified path
    void write(const std::string &directory);
};

YOSYS_NAMESPACE_END

#endif
