#pragma once
#include "rust/cxx.h"

// nvbit.h includes cuda.h and cuda.h requires nvbit.h to configure first
// #include "nvbit-sys/nvbit_release/core/nvbit.h"
#include "nvbit.h"
#include "cuda.h"

#include <cstddef>
#include <vector>

// generated by cxx
// contains definitions for generated types shared between the FFI boundary
// includes header files that are include! in nvbit.rs
#include "nvbit-sys/src/nvbit.rs.h"

std::unique_ptr<std::vector<CUfunctionShim>>
rust_nvbit_get_related_functions(CUcontext ctx, CUfunction func);

std::unique_ptr<std::vector<InstrShim>> rust_nvbit_get_instrs(CUcontext ctx,
                                                              CUfunction func);
