static PyObject* SymbolicExpression_getNewAst(PyObject* self, PyObject* noarg) {
   try {
     return PyAstNode(PySymbolicExpression_AsSymbolicExpression(self)->getNewAst());
   }
   catch (const std::exception& e) {
     return PyErr_Format(PyExc_TypeError, "%s", e.what());
   }
 }
Esempio n. 2
0
 static PyObject* PathConstraint_getTakenPathConstraintAst(PyObject* self, PyObject* noarg) {
   try {
     return PyAstNode(PyPathConstraint_AsPathConstraint(self)->getTakenPathConstraintAst());
   }
   catch (const triton::exceptions::Exception& e) {
     return PyErr_Format(PyExc_TypeError, "%s", e.what());
   }
 }
Esempio n. 3
0
 static PyObject* MemoryAccess_getLeaAst(PyObject* self, PyObject* noarg) {
   try {
     if (PyMemoryAccess_AsMemoryAccess(self)->getLeaAst() == nullptr) {
       Py_INCREF(Py_None);
       return Py_None;
     }
     return PyAstNode(PyMemoryAccess_AsMemoryAccess(self)->getLeaAst());
   }
   catch (const triton::exceptions::Exception& e) {
     return PyErr_Format(PyExc_TypeError, "%s", e.what());
   }
 }
Esempio n. 4
0
      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());
        }
      }
Esempio n. 5
0
      static PyObject* PathConstraint_getBranchConstraints(PyObject* self, PyObject* noarg) {
        try {
          PyObject* ret = nullptr;
          const auto& branches = PyPathConstraint_AsPathConstraint(self)->getBranchConstraints();

          ret = xPyList_New(branches.size());
          for (triton::usize index = 0; index != branches.size(); index++) {
            PyObject* dict = xPyDict_New();
            xPyDict_SetItem(dict, PyString_FromString("isTaken"),    PyBool_FromLong(std::get<0>(branches[index])));
            xPyDict_SetItem(dict, PyString_FromString("srcAddr"),    PyLong_FromUint64(std::get<1>(branches[index])));
            xPyDict_SetItem(dict, PyString_FromString("dstAddr"),    PyLong_FromUint64(std::get<2>(branches[index])));
            xPyDict_SetItem(dict, PyString_FromString("constraint"), PyAstNode(std::get<3>(branches[index])));
            PyList_SetItem(ret, index, dict);
          }

          return ret;
        }
        catch (const triton::exceptions::Exception& e) {
          return PyErr_Format(PyExc_TypeError, "%s", e.what());
        }
      }