static PyObject *Triton_convertRegToSymVar(PyObject *self, PyObject *args) { PyObject *regId, *symVarSize, *varComment = nullptr; uint64 vs, ri; std::string vc; /* Extract arguments */ PyArg_ParseTuple(args, "O|O|O", ®Id, &symVarSize, &varComment); if (varComment == nullptr) varComment = PyString_FromString(""); if (!PyLong_Check(regId) && !PyInt_Check(regId)) return PyErr_Format(PyExc_TypeError, "convertRegToSymVar(): expected a IDREF.REG as first argument"); if (!PyLong_Check(symVarSize) && !PyInt_Check(symVarSize)) return PyErr_Format(PyExc_TypeError, "convertRegToSymVar(): expected a size as second argument"); if (!PyString_Check(varComment)) return PyErr_Format(PyExc_TypeError, "convertRegToSymVar(): expected a comment (string) as third argument"); ri = PyLong_AsLong(regId); vs = PyLong_AsLong(symVarSize); vc = PyString_AsString(varComment); return PySymbolicVariable(ap.convertRegToSymVar(ri, vs, vc)); }
static PyObject *Triton_convertMemToSymVar(PyObject *self, PyObject *args) { PyObject *memAddr, *symVarSize, *varComment = nullptr; uint64 vs, ma; std::string vc; /* Extract arguments */ PyArg_ParseTuple(args, "O|O|O", &memAddr, &symVarSize, &varComment); if (varComment == nullptr) varComment = PyString_FromString(""); if (!PyLong_Check(memAddr) && !PyInt_Check(memAddr)) return PyErr_Format(PyExc_TypeError, "convertMemToSymVar(): expected a memory address as first argument"); if (!PyLong_Check(symVarSize) && !PyInt_Check(symVarSize)) return PyErr_Format(PyExc_TypeError, "convertMemToSymVar(): expected a size as second argument"); if (!PyString_Check(varComment)) return PyErr_Format(PyExc_TypeError, "convertMemToSymVar(): expected a comment (string) as third argument"); ma = PyLong_AsLong(memAddr); vs = PyLong_AsLong(symVarSize); vc = PyString_AsString(varComment); return PySymbolicVariable(ap.convertMemToSymVar(ma, vs, vc)); }
static PyObject *Triton_convertExprToSymVar(PyObject *self, PyObject *args) { PyObject *exprId = nullptr; PyObject *symVarSize = nullptr; PyObject *varComment = nullptr; uint64 vs, ei; std::string vc; /* Extract arguments */ PyArg_ParseTuple(args, "|OOO", &exprId, &symVarSize, &varComment); if (varComment == nullptr) varComment = PyString_FromString(""); if (exprId == nullptr || (!PyLong_Check(exprId) && !PyInt_Check(exprId))) return PyErr_Format(PyExc_TypeError, "convertExprToSymVar(): expected an integer as first argument"); if (symVarSize == nullptr || (!PyLong_Check(symVarSize) && !PyInt_Check(symVarSize))) return PyErr_Format(PyExc_TypeError, "convertExprToSymVar(): expected an integer as second argument"); if (!PyString_Check(varComment)) return PyErr_Format(PyExc_TypeError, "convertExprToSymVar(): expected a comment (string) as third argument"); ei = PyLong_AsLongLong(exprId); vs = PyLong_AsLongLong(symVarSize); vc = PyString_AsString(varComment); return PySymbolicVariable(ap.convertExprToSymVar(ei, vs, vc)); }
static PyObject *Triton_getSymVars(PyObject *self, PyObject *noArg) { std::vector<SymbolicVariable *> symVars; std::vector<SymbolicVariable *>::iterator it; PyObject *symVarsList; symVars = ap.getSymVars(); symVarsList = xPyList_New(symVars.size()); Py_ssize_t index = 0; for (it = symVars.begin(); it != symVars.end(); it++){ PyList_SetItem(symVarsList, index, PySymbolicVariable(*it)); index += 1; } return symVarsList; }
static PyObject *Triton_getSymVar(PyObject *self, PyObject *symVarPy) { SymbolicVariable *symVar; if (!PyLong_Check(symVarPy) && !PyInt_Check(symVarPy) && !PyString_Check(symVarPy)) return PyErr_Format(PyExc_TypeError, "getSymVar(): expected a symbolic variable ID or a symbolic variable name"); if (PyLong_Check(symVarPy) || PyInt_Check(symVarPy)) symVar = ap.getSymVar(PyLong_AsLong(symVarPy)); else symVar = ap.getSymVar(PyString_AsString(symVarPy)); if (symVar == nullptr) return PyErr_Format(PyExc_TypeError, "getSymVar(): Invalid symbolic variable ID"); return PySymbolicVariable(symVar); }