From ff3908b9bed7f7c5641f98f05929dc3b178617bf Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Sat, 31 Oct 2015 14:33:00 -0200 Subject: [PATCH] Implementando extensão python. --- src/python/get.cc | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/python/private.h | 5 +++++ src/python/py3270.cc | 3 +++ src/python/sample.py | 3 +++ 4 files changed, 58 insertions(+), 0 deletions(-) diff --git a/src/python/get.cc b/src/python/get.cc index 29aa964..fa4adac 100644 --- a/src/python/get.cc +++ b/src/python/get.cc @@ -61,3 +61,50 @@ PyObject * terminal_is_ready(PyObject *self, PyObject *args) { } +PyObject * terminal_cmp_string_at(PyObject *self, PyObject *args) { + + int row, col, rc; + const char *text; + + if (!PyArg_ParseTuple(args, "iis", &row, &col, &text)) { + PyErr_SetString(terminalError, strerror(EINVAL)); + return NULL; + } + + try { + + rc = ((pw3270_TerminalObject *) self)->session->cmp_string_at(row,col,text); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + +} + +PyObject * terminal_get_string_at(PyObject *self, PyObject *args) { + + int row, col, sz; + string rc; + + if (!PyArg_ParseTuple(args, "iii", &row, &col, &sz)) { + PyErr_SetString(terminalError, strerror(EINVAL)); + return NULL; + } + + try { + + rc = ((pw3270_TerminalObject *) self)->session->get_string_at(row,col,sz); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyString_FromString(rc.c_str()); + +} diff --git a/src/python/private.h b/src/python/private.h index cafa0f5..42ed267 100644 --- a/src/python/private.h +++ b/src/python/private.h @@ -36,6 +36,8 @@ #include #include + using namespace std; + typedef struct { PyObject_HEAD @@ -61,6 +63,9 @@ PyObject * terminal_connect(PyObject *self, PyObject *args); PyObject * terminal_disconnect(PyObject *self, PyObject *args); + PyObject * terminal_get_string_at(PyObject *self, PyObject *args); + PyObject * terminal_cmp_string_at(PyObject *self, PyObject *args); + } #endif // PRIVATE_H_INCLUDED diff --git a/src/python/py3270.cc b/src/python/py3270.cc index a12dd04..32fd33f 100644 --- a/src/python/py3270.cc +++ b/src/python/py3270.cc @@ -59,6 +59,9 @@ static PyMethodDef terminal_methods[] = { { "Connect", terminal_connect, METH_VARARGS, "Connect to the host." }, { "Disconnect", terminal_disconnect, METH_NOARGS, "Disconnect from host." }, + { "CmpStringAt", terminal_cmp_string_at, METH_VARARGS, "Compare string with terminal buffer at the position." }, + { "GetStringAt", terminal_get_string_at, METH_VARARGS, "Get string from terminal buffer." }, + {NULL} // Sentinel }; diff --git a/src/python/sample.py b/src/python/sample.py index 357ee73..a67f56a 100644 --- a/src/python/sample.py +++ b/src/python/sample.py @@ -16,6 +16,9 @@ term.Connect("tn3270://zos.efglobe.com:telnet",10); print term.IsConnected() print term.IsReady() +print term.GetStringAt(14,19,38) + + -- libgit2 0.21.2