#include <pro.h>
#include <ida.hpp>
#include <typeinf.hpp>
#include "idakit_facade.h"
extern "C" int64_t idakit_func_type(idakit_ea_t ea, char *buf, size_t cap) {
try {
qstring out;
if (!print_type(&out, (ea_t)ea, PRTYPE_1LINE | PRTYPE_SEMI)) {
if (cap > 0)
buf[0] = 0;
return -1;
}
qstrncpy(buf, out.c_str(), cap);
return (int64_t)out.length();
} catch (...) {
std::abort();
}
}
extern "C" uint32_t idakit_type_ordinal_limit() {
try {
return get_ordinal_limit(get_idati());
} catch (...) {
std::abort();
}
}
extern "C" int64_t idakit_type_name_at(uint32_t ordinal, char *buf, size_t cap) {
try {
const char *name = get_numbered_type_name(get_idati(), ordinal);
if (name == nullptr) {
if (cap > 0)
buf[0] = 0;
return -1;
}
qstring out(name);
qstrncpy(buf, out.c_str(), cap);
return (int64_t)out.length();
} catch (...) {
std::abort();
}
}