void initOperandEnv(PyObject *idOperandClassDict) { PyDict_SetItemString(idOperandClassDict, "IMM", PyLong_FromUint(IRBuilderOperand::IMM)); PyDict_SetItemString(idOperandClassDict, "LEA", PyLong_FromUint(IRBuilderOperand::LEA)); PyDict_SetItemString(idOperandClassDict, "MEM_R", PyLong_FromUint(IRBuilderOperand::MEM_R)); PyDict_SetItemString(idOperandClassDict, "MEM_W", PyLong_FromUint(IRBuilderOperand::MEM_W)); PyDict_SetItemString(idOperandClassDict, "REG", PyLong_FromUint(IRBuilderOperand::REG)); }
void initX86PrefixesNamespace(void) { if (!triton::bindings::python::initialized) return; PyDict_Clear(triton::bindings::python::prefixesDict); PyDict_SetItemString(triton::bindings::python::prefixesDict, "INVALID", PyLong_FromUint(triton::arch::x86::ID_PREFIX_INVALID)); PyDict_SetItemString(triton::bindings::python::prefixesDict, "LOCK", PyLong_FromUint(triton::arch::x86::ID_PREFIX_LOCK)); PyDict_SetItemString(triton::bindings::python::prefixesDict, "REP", PyLong_FromUint(triton::arch::x86::ID_PREFIX_REP)); PyDict_SetItemString(triton::bindings::python::prefixesDict, "REPE", PyLong_FromUint(triton::arch::x86::ID_PREFIX_REPE)); PyDict_SetItemString(triton::bindings::python::prefixesDict, "REPNE", PyLong_FromUint(triton::arch::x86::ID_PREFIX_REPNE)); }
void initFlagEnv(PyObject *idFlagClassDict) { PyDict_SetItemString(idFlagClassDict, "AF", PyLong_FromUint(ID_AF)); PyDict_SetItemString(idFlagClassDict, "CF", PyLong_FromUint(ID_CF)); PyDict_SetItemString(idFlagClassDict, "DF", PyLong_FromUint(ID_DF)); PyDict_SetItemString(idFlagClassDict, "IF", PyLong_FromUint(ID_IF)); PyDict_SetItemString(idFlagClassDict, "OF", PyLong_FromUint(ID_OF)); PyDict_SetItemString(idFlagClassDict, "PF", PyLong_FromUint(ID_PF)); PyDict_SetItemString(idFlagClassDict, "SF", PyLong_FromUint(ID_SF)); PyDict_SetItemString(idFlagClassDict, "TF", PyLong_FromUint(ID_TF)); PyDict_SetItemString(idFlagClassDict, "ZF", PyLong_FromUint(ID_ZF)); }
static PyObject* MemoryOperand_getAddress(PyObject* self, PyObject* noarg) { try { return PyLong_FromUint(PyMemoryOperand_AsMemoryOperand(self)->getAddress()); } catch (const std::exception& e) { return PyErr_Format(PyExc_TypeError, "%s", e.what()); } }
static PyObject* PathConstraint_getTakenAddress(PyObject* self, PyObject* noarg) { try { return PyLong_FromUint(PyPathConstraint_AsPathConstraint(self)->getTakenAddress()); } catch (const std::exception& e) { return PyErr_Format(PyExc_TypeError, "%s", e.what()); } }
static PyObject* PathConstraint_getBranchConstraints(PyObject* self, PyObject* noarg) { try { PyObject* ret = nullptr; std::vector<std::tuple<bool, triton::__uint, triton::ast::AbstractNode*>>& branches = PyPathConstraint_AsPathConstraint(self)->getBranchConstraints(); ret = xPyList_New(branches.size()); for (triton::uint32 index = 0; index != branches.size(); index++) { PyObject* dict = xPyDict_New(); PyDict_SetItem(dict, PyString_FromString("taken"), PyBool_FromLong(std::get<0>(branches[index]))); PyDict_SetItem(dict, PyString_FromString("target"), PyLong_FromUint(std::get<1>(branches[index]))); PyDict_SetItem(dict, PyString_FromString("constraint"), PyAstNode(std::get<2>(branches[index]))); PyList_SetItem(ret, index, dict); } return ret; } catch (const std::exception& e) { return PyErr_Format(PyExc_TypeError, "%s", e.what()); } }
static PyObject* SymbolicVariable_getKindValue(PyObject* self, PyObject* noarg) { return PyLong_FromUint(PySymbolicVariable_AsSymbolicVariable(self)->getSymVarKindValue()); }
void initAstNodeNamespace(PyObject* astNodeDict) { PyDict_SetItemString(astNodeDict, "ASSERT", PyLong_FromUint(triton::ast::ASSERT_NODE)); PyDict_SetItemString(astNodeDict, "BV", PyLong_FromUint(triton::ast::BV_NODE)); PyDict_SetItemString(astNodeDict, "BVADD", PyLong_FromUint(triton::ast::BVADD_NODE)); PyDict_SetItemString(astNodeDict, "BVAND", PyLong_FromUint(triton::ast::BVAND_NODE)); PyDict_SetItemString(astNodeDict, "BVASHR", PyLong_FromUint(triton::ast::BVASHR_NODE)); PyDict_SetItemString(astNodeDict, "BVDECL", PyLong_FromUint(triton::ast::BVDECL_NODE)); PyDict_SetItemString(astNodeDict, "BVLSHR", PyLong_FromUint(triton::ast::BVLSHR_NODE)); PyDict_SetItemString(astNodeDict, "BVMUL", PyLong_FromUint(triton::ast::BVMUL_NODE)); PyDict_SetItemString(astNodeDict, "BVNAND", PyLong_FromUint(triton::ast::BVNAND_NODE)); PyDict_SetItemString(astNodeDict, "BVNEG", PyLong_FromUint(triton::ast::BVNEG_NODE)); PyDict_SetItemString(astNodeDict, "BVNOR", PyLong_FromUint(triton::ast::BVNOR_NODE)); PyDict_SetItemString(astNodeDict, "BVNOT", PyLong_FromUint(triton::ast::BVNOT_NODE)); PyDict_SetItemString(astNodeDict, "BVOR", PyLong_FromUint(triton::ast::BVOR_NODE)); PyDict_SetItemString(astNodeDict, "BVROL", PyLong_FromUint(triton::ast::BVROL_NODE)); PyDict_SetItemString(astNodeDict, "BVROR", PyLong_FromUint(triton::ast::BVROR_NODE)); PyDict_SetItemString(astNodeDict, "BVSDIV", PyLong_FromUint(triton::ast::BVSDIV_NODE)); PyDict_SetItemString(astNodeDict, "BVSGE", PyLong_FromUint(triton::ast::BVSGE_NODE)); PyDict_SetItemString(astNodeDict, "BVSGT", PyLong_FromUint(triton::ast::BVSGT_NODE)); PyDict_SetItemString(astNodeDict, "BVSHL", PyLong_FromUint(triton::ast::BVSHL_NODE)); PyDict_SetItemString(astNodeDict, "BVSLE", PyLong_FromUint(triton::ast::BVSLE_NODE)); PyDict_SetItemString(astNodeDict, "BVSLT", PyLong_FromUint(triton::ast::BVSLT_NODE)); PyDict_SetItemString(astNodeDict, "BVSMOD", PyLong_FromUint(triton::ast::BVSMOD_NODE)); PyDict_SetItemString(astNodeDict, "BVSREM", PyLong_FromUint(triton::ast::BVSREM_NODE)); PyDict_SetItemString(astNodeDict, "BVSUB", PyLong_FromUint(triton::ast::BVSUB_NODE)); PyDict_SetItemString(astNodeDict, "BVUDIV", PyLong_FromUint(triton::ast::BVUDIV_NODE)); PyDict_SetItemString(astNodeDict, "BVUGE", PyLong_FromUint(triton::ast::BVUGE_NODE)); PyDict_SetItemString(astNodeDict, "BVUGT", PyLong_FromUint(triton::ast::BVUGT_NODE)); PyDict_SetItemString(astNodeDict, "BVULE", PyLong_FromUint(triton::ast::BVULE_NODE)); PyDict_SetItemString(astNodeDict, "BVULT", PyLong_FromUint(triton::ast::BVULT_NODE)); PyDict_SetItemString(astNodeDict, "BVUREM", PyLong_FromUint(triton::ast::BVUREM_NODE)); PyDict_SetItemString(astNodeDict, "BVXNOR", PyLong_FromUint(triton::ast::BVXNOR_NODE)); PyDict_SetItemString(astNodeDict, "BVXOR", PyLong_FromUint(triton::ast::BVXOR_NODE)); PyDict_SetItemString(astNodeDict, "COMPOUND", PyLong_FromUint(triton::ast::COMPOUND_NODE)); PyDict_SetItemString(astNodeDict, "CONCAT", PyLong_FromUint(triton::ast::CONCAT_NODE)); PyDict_SetItemString(astNodeDict, "DECIMAL", PyLong_FromUint(triton::ast::DECIMAL_NODE)); PyDict_SetItemString(astNodeDict, "DECLARE_FUNCTION", PyLong_FromUint(triton::ast::DECLARE_FUNCTION_NODE)); PyDict_SetItemString(astNodeDict, "DISTINCT", PyLong_FromUint(triton::ast::DISTINCT_NODE)); PyDict_SetItemString(astNodeDict, "EQUAL", PyLong_FromUint(triton::ast::EQUAL_NODE)); PyDict_SetItemString(astNodeDict, "EXTRACT", PyLong_FromUint(triton::ast::EXTRACT_NODE)); PyDict_SetItemString(astNodeDict, "FUNCTION", PyLong_FromUint(triton::ast::FUNCTION_NODE)); PyDict_SetItemString(astNodeDict, "ITE", PyLong_FromUint(triton::ast::ITE_NODE)); PyDict_SetItemString(astNodeDict, "LAND", PyLong_FromUint(triton::ast::LAND_NODE)); PyDict_SetItemString(astNodeDict, "LET", PyLong_FromUint(triton::ast::LET_NODE)); PyDict_SetItemString(astNodeDict, "LNOT", PyLong_FromUint(triton::ast::LNOT_NODE)); PyDict_SetItemString(astNodeDict, "LOR", PyLong_FromUint(triton::ast::LOR_NODE)); PyDict_SetItemString(astNodeDict, "PARAM", PyLong_FromUint(triton::ast::PARAM_NODE)); PyDict_SetItemString(astNodeDict, "REFERENCE", PyLong_FromUint(triton::ast::REFERENCE_NODE)); PyDict_SetItemString(astNodeDict, "STRING", PyLong_FromUint(triton::ast::STRING_NODE)); PyDict_SetItemString(astNodeDict, "SX", PyLong_FromUint(triton::ast::SX_NODE)); PyDict_SetItemString(astNodeDict, "UNDEFINED", PyLong_FromUint(triton::ast::UNDEFINED_NODE)); PyDict_SetItemString(astNodeDict, "VARIABLE", PyLong_FromUint(triton::ast::VARIABLE_NODE)); PyDict_SetItemString(astNodeDict, "ZX", PyLong_FromUint(triton::ast::ZX_NODE)); }
static PyObject* Instruction_getNextAddress(PyObject* self, PyObject* noarg) { return PyLong_FromUint(PyInstruction_AsInstruction(self)->getNextAddress()); }