Files
2025-03-13 16:17:53 +01:00

57 lines
1.7 KiB
C++

//-------------------------------------------------------------------------
//<code(py_name)>
//</code(py_name)>
//------------------------------------------------------------------------
//<inline(py_name)>
//------------------------------------------------------------------------
PyObject *get_debug_names(ea_t ea1, ea_t ea2, bool return_list=false)
{
// Get debug names
ea_name_vec_t names;
PYW_GIL_CHECK_LOCKED_SCOPE();
SWIG_PYTHON_THREAD_BEGIN_ALLOW;
get_debug_names(&names, ea1, ea2);
SWIG_PYTHON_THREAD_END_ALLOW;
PyObject *dict = Py_BuildValue("{}");
if ( dict != nullptr )
{
ea_t last_ea = BADADDR;
PyObject *list = nullptr;
for ( ea_name_vec_t::iterator it = names.begin(); it != names.end(); ++it )
{
PyObject *name_obj = PyUnicode_FromString(it->name.c_str());
if ( it->ea != last_ea )
{
if ( return_list )
list = PyList_New(0);
PyObject *ea_obj = Py_BuildValue(PY_BV_EA, bvea_t(it->ea));
PyDict_SetItem(dict, ea_obj, return_list ? list : name_obj);
last_ea = it->ea;
}
if ( return_list )
PyList_Append(list, name_obj);
}
}
return dict;
}
//-------------------------------------------------------------------------
inline qstring py_get_ea_name(ea_t ea, int gtn_flags=0)
{
qstring out;
get_ea_name(&out, ea, gtn_flags);
return out;
}
//-------------------------------------------------------------------------
PyObject *py_validate_name(const char *name, nametype_t type, int flags=SN_NOCHECK)
{
qstring qname(name);
if ( validate_name(&qname, type, flags) )
return PyUnicode_FromStringAndSize(qname.c_str(), qname.length());
else
Py_RETURN_NONE;
}
//</inline(py_name)>