diff --git a/configure.ac b/configure.ac index 59a8cb7..0bc6f74 100644 --- a/configure.ac +++ b/configure.ac @@ -57,18 +57,6 @@ AC_PROG_LN_S AC_LANG([C++]) dnl --------------------------------------------------------------------------- -dnl Initialize defaults -dnl --------------------------------------------------------------------------- - -DBG_CFLAGS="-g -fstack-check -DDEBUG=1" -RLS_CFLAGS="-DNDEBUG=1" -PLUGINS="" -APP_RESOURCES="" -APP_LDFLAGS="" -DLL_LDFLAGS="-shared -Wl,-soname,\$(@F)" -DEPENDS="" - -dnl --------------------------------------------------------------------------- dnl Version info dnl --------------------------------------------------------------------------- @@ -96,11 +84,6 @@ AC_SUBST(PACKAGE_RELEASE,$app_cv_release) AC_SUBST(PACKAGE_MAJOR_RELEASE,$app_rls_major) AC_SUBST(PACKAGE_MINOR_RELEASE,$app_rls_minor) -AC_ARG_WITH([application-datadir], [AS_HELP_STRING([--with-application-datadir], [Set path for configuration file])], [ app_cv_source_appdatadir="$withval" ],[ app_cv_source_appdatadir="\$(datarootdir)/\$(PACKAGE_NAME)" ]) - -AC_DEFINE_UNQUOTED(APPDATADIR, $app_cv_source_appdatadir) -AC_SUBST(APPDATADIR,$app_cv_source_appdatadir) - dnl --------------------------------------------------------------------------- dnl Check for OS specifics dnl --------------------------------------------------------------------------- @@ -124,14 +107,14 @@ dnl AC_CONFIG_FILES(win/py3270.nsi) if test "$host_cpu" = "x86_64"; then app_cv_programfiles="PROGRAMFILES64" - app_cv_winarch="64" +dnl app_cv_winarch="64" else app_cv_programfiles="PROGRAMFILES" - app_cv_winarch="32" +dnl app_cv_winarch="32" fi AC_SUBST(PROGRAMFILES,$app_cv_programfiles) - AC_SUBST(WINARCH,$app_cv_winarch) +dnl AC_SUBST(WINARCH,$app_cv_winarch) AC_SUBST(SONAME,py3270.dll) ;; @@ -139,8 +122,6 @@ dnl AC_CONFIG_FILES(win/py3270.nsi) *) CFLAGS="$CFLAGS -pthread" LDFLAGS="$LDFLAGS -pthread" - app_cv_datadir="/usr/share" - app_cv_confdir="/etc" app_cv_osname="linux" LOGDIR="/var/log" DLLEXT=".so" @@ -148,16 +129,6 @@ dnl AC_CONFIG_FILES(win/py3270.nsi) esac -AC_SUBST(DATADIR,$app_cv_datadir) -AC_SUBST(CONFDIR,$app_cv_confdir) -AC_SUBST(OSNAME,$app_cv_osname) -AC_SUBST(LIBS) -AC_SUBST(LOGDIR) -AC_SUBST(DLLEXT) -AC_SUBST(DLLPREFIX) -AC_SUBST(LDFLAGS) -AC_SUBST(DLL_LDFLAGS) - dnl --------------------------------------------------------------------------- dnl Check for other programs dnl --------------------------------------------------------------------------- @@ -237,7 +208,6 @@ PKG_CHECK_MODULES( [PYTHON], [python], AC_DEFINE(HAVE_PYTHON), AC_MSG_ERROR([Pyt AC_SUBST(PYTHON_LIBS) AC_SUBST(PYTHON_CFLAGS) - dnl --------------------------------------------------------------------------- dnl Check for pic dnl --------------------------------------------------------------------------- @@ -269,6 +239,18 @@ if test "$app_cv_pic" == "yes"; then fi dnl --------------------------------------------------------------------------- +dnl Configure program options +dnl --------------------------------------------------------------------------- + +AC_SUBST(OSNAME,$app_cv_osname) +AC_SUBST(LIBS) +AC_SUBST(DLLEXT) +AC_SUBST(CFLAGS) +AC_SUBST(CXXFLAGS) +AC_SUBST(LDFLAGS) +AC_SUBST(BASEDIR,$ac_pwd) + +dnl --------------------------------------------------------------------------- dnl Configure which files to generate. dnl --------------------------------------------------------------------------- @@ -277,7 +259,6 @@ dnl --------------------------------------------------------------------------- dnl --------------------------------------------------------------------------- dnl Output the generated config.status script. dnl --------------------------------------------------------------------------- -AC_SUBST(BASEDIR,$ac_pwd) AC_OUTPUT diff --git a/src/core/actions.cc b/src/core/actions.cc deleted file mode 100644 index e7cf448..0000000 --- a/src/core/actions.cc +++ /dev/null @@ -1,128 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin - * St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Este programa está nomeado como actions.cc e possui - linhas de código. - * - * Contatos - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * - * Referências: - * - * - * - * - */ - - #include "private.h" - -/*---[ Implement ]----------------------------------------------------------------------------------*/ - - PyObject * terminal_pfkey(PyObject *self, PyObject *args) { - - int rc, key; - - if (!PyArg_ParseTuple(args, "i", &key)) { - PyErr_SetString(terminalError, strerror(EINVAL)); - return NULL; - } - - try { - - rc = ((pw3270_TerminalObject *) self)->session->pfkey(key); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyLong_FromLong(rc); - - } - - PyObject * terminal_pakey(PyObject *self, PyObject *args) { - - int rc, key; - - if (!PyArg_ParseTuple(args, "i", &key)) { - PyErr_SetString(terminalError, strerror(EINVAL)); - return NULL; - } - - try { - - rc = ((pw3270_TerminalObject *) self)->session->pakey(key); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyLong_FromLong(rc); - - } - - PyObject * terminal_enter(PyObject *self, PyObject *args) { - - int rc; - - try { - - rc = ((pw3270_TerminalObject *) self)->session->enter(); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyLong_FromLong(rc); - - - } - - PyObject * terminal_action(PyObject *self, PyObject *args) { - - int rc; - const char *name; - - if (!PyArg_ParseTuple(args, "s", &name)) { - PyErr_SetString(terminalError, strerror(EINVAL)); - return NULL; - } - - try { - - rc = ((pw3270_TerminalObject *) self)->session->action(name); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyLong_FromLong(rc); - - - } - diff --git a/src/core/get.cc b/src/core/get.cc deleted file mode 100644 index d3ea909..0000000 --- a/src/core/get.cc +++ /dev/null @@ -1,154 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin - * St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Este programa está nomeado como get.cc e possui - linhas de código. - * - * Contatos: - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * - * Referências: - * - * - * - * - */ - - #include "private.h" - - -/*---[ Implement ]----------------------------------------------------------------------------------*/ - -PyObject * terminal_get_version(PyObject *self, PyObject *args) { - - return PyString_FromString( ((pw3270_TerminalObject *) self)->session->get_version().c_str() ); - -} - -PyObject * terminal_get_revision(PyObject *self, PyObject *args) { - - return PyString_FromString( ((pw3270_TerminalObject *) self)->session->get_revision().c_str() ); - -} - -PyObject * terminal_is_connected(PyObject *self, PyObject *args) { - - return PyBool_FromLong( ((pw3270_TerminalObject *) self)->session->is_connected() ); - -} - -PyObject * terminal_is_ready(PyObject *self, PyObject *args) { - - return PyBool_FromLong( ((pw3270_TerminalObject *) self)->session->is_ready() ); - -} - -PyObject * terminal_is_protected_at(PyObject *self, PyObject *args) { - - int rc, row, col; - - if (!PyArg_ParseTuple(args, "ii", &row, &col)) { - PyErr_SetString(terminalError, strerror(EINVAL)); - return NULL; - } - - try { - - rc = ((pw3270_TerminalObject *) self)->session->get_is_protected_at(row,col); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyBool_FromLong( rc ); - -} - - -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()); - -} - -PyObject * terminal_get_contents(PyObject *self) { - - string rc; - - try { - - rc = ((pw3270_TerminalObject *) self)->session->get_string(); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyString_FromString(rc.c_str()); - - - -} diff --git a/src/core/init.cc b/src/core/init.cc deleted file mode 100644 index 34b9662..0000000 --- a/src/core/init.cc +++ /dev/null @@ -1,87 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin - * St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Este programa está nomeado como py3270.cc e possui - linhas de código. - * - * Contatos: - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * - * Implementa métodos básicos inicio/final do objeto python - * - * Referências: - * - * - * - * - */ - - #include "private.h" - - -/*---[ Implement ]----------------------------------------------------------------------------------*/ - -PyObject * terminal_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - - PW3270_NAMESPACE::session * session; - const char *id = ""; - - if (!PyArg_ParseTuple(args, "s", &id)) { - id = ""; - } - - trace("%s(%s)",__FUNCTION__,id); - - try { - - session = PW3270_NAMESPACE::session::create(id); - - } catch(std::exception &e) { - - trace("%s failed: %s",__FUNCTION__,e.what()); - PyErr_SetString(terminalError, e.what()); - return NULL; - - } - - pw3270_TerminalObject *self = (pw3270_TerminalObject *) type->tp_alloc(type, 0); - - self->session = session; - - return (PyObject *)self; -} - - -int terminal_init(pw3270_TerminalObject *self, PyObject *args, PyObject *kwds) { - - return 0; - -} - -void terminal_dealloc(pw3270_TerminalObject * self) { - - trace("%s",__FUNCTION__); - - delete self->session; - - self->ob_type->tp_free((PyObject*)self); - -} diff --git a/src/core/misc.cc b/src/core/misc.cc deleted file mode 100644 index d9ccb8c..0000000 --- a/src/core/misc.cc +++ /dev/null @@ -1,134 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin - * St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Este programa está nomeado como misc.cc e possui - linhas de código. - * - * Contatos: - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * - * Implementa métodos básicos inicio/final do objeto python - * - * Referências: - * - * - * - * - */ - - #include "private.h" - - -/*---[ Implement ]----------------------------------------------------------------------------------*/ - - PyObject * terminal_connect(PyObject *self, PyObject *args) { - - int rc = -1; - int wait = 60; - const char * host = ""; - - if (!PyArg_ParseTuple(args, "s|i", &host, &wait)) { - PyErr_SetString(terminalError, "connect requires a host URL"); - return NULL; - } - - try { - - rc = ((pw3270_TerminalObject *) self)->session->connect(host,wait); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyLong_FromLong(rc); - - } - - PyObject * terminal_disconnect(PyObject *self, PyObject *args) { - - int rc = -1; - - try { - - rc = ((pw3270_TerminalObject *) self)->session->disconnect(); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyLong_FromLong(rc); - - } - - PyObject * terminal_wait_for_ready(PyObject *self, PyObject *args) { - - int rc; - int timeout = 60; - - if (!PyArg_ParseTuple(args, "|i", &timeout)) { - PyErr_SetString(terminalError, strerror(EINVAL)); - return NULL; - } - - try { - - rc = ((pw3270_TerminalObject *) self)->session->wait_for_ready(timeout); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyLong_FromLong(rc); - - } - - - PyObject * terminal_wait_for_string_at(PyObject *self, PyObject *args) { - - int row, col, rc; - int timeout = 10; - const char *text; - - if (!PyArg_ParseTuple(args, "iis|i", &row, &col, &text, &timeout)) { - PyErr_SetString(terminalError, strerror(EINVAL)); - return NULL; - } - - try { - - rc = ((pw3270_TerminalObject *) self)->session->wait_for_string_at(row,col,text,timeout); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyLong_FromLong(rc); - - } - diff --git a/src/core/py3270.cc b/src/core/py3270.cc deleted file mode 100644 index 945bef4..0000000 --- a/src/core/py3270.cc +++ /dev/null @@ -1,167 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin - * St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Este programa está nomeado como py3270.cc e possui - linhas de código. - * - * Contatos: - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * - * Implementa métodos básicos para a extensão python. - * - * Referências: - * - * - * - * - */ - - #include "private.h" - -/*---[ Globals ]------------------------------------------------------------------------------------*/ - - PyObject * terminalError = NULL; - -/*---[ Implement ]----------------------------------------------------------------------------------*/ - -static PyObject * get_revision(PyObject *self, PyObject *args) { - -#ifdef PACKAGE_REVISION - return PyLong_FromLong(atoi(PACKAGE_REVISION)); -#else - return PyLong_FromLong(BUILD_DATE); -#endif // PACKAGE_REVISION - -} - -static PyMethodDef terminal_methods[] = { - - { "Version", terminal_get_version, METH_NOARGS, "Get the lib3270 version string." }, - { "Revision", terminal_get_revision, METH_NOARGS, "Get the lib3270 revision number." }, - - { "IsConnected", terminal_is_connected, METH_NOARGS, "True if the terminal is connected to the host." }, - { "IsReady", terminal_is_ready, METH_NOARGS, "True if the terminal has finished network activity." }, - { "IsProtected", terminal_is_protected_at, METH_VARARGS, "True if the position is read-only." }, - - { "SetCursorPosition", terminal_set_cursor_at, METH_VARARGS, "Set cursor position." }, - - { "WaitForStringAt", terminal_wait_for_string_at, METH_VARARGS, "Wait for string at position" }, - { "WaitForReady", terminal_wait_for_ready, METH_VARARGS, "Wait for network communication to finish" }, - - { "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." }, - { "SetStringAt", terminal_set_string_at, METH_VARARGS, "Set string in terminal buffer." }, - - { "PFKey", terminal_pfkey, METH_VARARGS, "Send PF key." }, - { "PAKey", terminal_pakey, METH_VARARGS, "Send PA key." }, - { "Enter", terminal_enter, METH_NOARGS, "Send Enter Key." }, - { "Action", terminal_action, METH_VARARGS, "Send Action by name." }, - - {NULL} // Sentinel - -}; - -/* -static PyMemberDef terminal_members[] = { - - { NULL } // Sentinel - -}; -*/ - -static PyTypeObject pw3270_TerminalType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "py3270.terminal", /*tp_name*/ - sizeof(pw3270_TerminalObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - (destructor) terminal_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - terminal_get_contents, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "3270 terminal object", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - terminal_methods, /* tp_methods */ - 0, // terminal_members, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - (initproc) terminal_init, /* tp_init */ - 0, /* tp_alloc */ - terminal_new, /* tp_new */ - -}; - -static PyMethodDef MyMethods[] = { - - { "Revision", get_revision, METH_VARARGS, "Get module revision." }, - - {NULL, NULL, 0, NULL} /* Sentinel */ - -}; - -PyMODINIT_FUNC initpy3270(void) { - - // Cria o módulo - - PyObject *m = Py_InitModule("py3270", MyMethods); - - if (m == NULL) { - return; - } - - // Adiciona objeto para tratamento de erros. - terminalError = PyErr_NewException((char *) "py3270.error", NULL, NULL); - - (void) Py_INCREF(terminalError); - PyModule_AddObject(m, "error", terminalError); - - // Adiciona terminal - if(PyType_Ready(&pw3270_TerminalType) < 0) - return - - (void) Py_INCREF(&pw3270_TerminalType); - PyModule_AddObject(m, "Terminal", (PyObject *)&pw3270_TerminalType); - -} diff --git a/src/core/set.cc b/src/core/set.cc deleted file mode 100644 index 759495d..0000000 --- a/src/core/set.cc +++ /dev/null @@ -1,86 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin - * St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Este programa está nomeado como set.cc e possui - linhas de código. - * - * Contatos - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * - * Referências: - * - * - * - * - */ - - #include "private.h" - - -/*---[ Implement ]----------------------------------------------------------------------------------*/ - - PyObject * terminal_set_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->set_string_at(row,col,text); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyLong_FromLong(rc); - - } - - PyObject * terminal_set_cursor_at(PyObject *self, PyObject *args) { - - int row, col, rc; - - if (!PyArg_ParseTuple(args, "ii", &row, &col)) { - PyErr_SetString(terminalError, strerror(EINVAL)); - return NULL; - } - - try { - - rc = ((pw3270_TerminalObject *) self)->session->set_cursor_position(row,col); - - } catch(std::exception &e) { - - PyErr_SetString(terminalError, e.what()); - return NULL; - } - - return PyLong_FromLong(rc); - - } - diff --git a/src/module/actions.cc b/src/module/actions.cc new file mode 100644 index 0000000..e7cf448 --- /dev/null +++ b/src/module/actions.cc @@ -0,0 +1,128 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como actions.cc e possui - linhas de código. + * + * Contatos + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + * Referências: + * + * + * + * + */ + + #include "private.h" + +/*---[ Implement ]----------------------------------------------------------------------------------*/ + + PyObject * terminal_pfkey(PyObject *self, PyObject *args) { + + int rc, key; + + if (!PyArg_ParseTuple(args, "i", &key)) { + PyErr_SetString(terminalError, strerror(EINVAL)); + return NULL; + } + + try { + + rc = ((pw3270_TerminalObject *) self)->session->pfkey(key); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + + } + + PyObject * terminal_pakey(PyObject *self, PyObject *args) { + + int rc, key; + + if (!PyArg_ParseTuple(args, "i", &key)) { + PyErr_SetString(terminalError, strerror(EINVAL)); + return NULL; + } + + try { + + rc = ((pw3270_TerminalObject *) self)->session->pakey(key); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + + } + + PyObject * terminal_enter(PyObject *self, PyObject *args) { + + int rc; + + try { + + rc = ((pw3270_TerminalObject *) self)->session->enter(); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + + + } + + PyObject * terminal_action(PyObject *self, PyObject *args) { + + int rc; + const char *name; + + if (!PyArg_ParseTuple(args, "s", &name)) { + PyErr_SetString(terminalError, strerror(EINVAL)); + return NULL; + } + + try { + + rc = ((pw3270_TerminalObject *) self)->session->action(name); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + + + } + diff --git a/src/module/get.cc b/src/module/get.cc new file mode 100644 index 0000000..d3ea909 --- /dev/null +++ b/src/module/get.cc @@ -0,0 +1,154 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como get.cc e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + * Referências: + * + * + * + * + */ + + #include "private.h" + + +/*---[ Implement ]----------------------------------------------------------------------------------*/ + +PyObject * terminal_get_version(PyObject *self, PyObject *args) { + + return PyString_FromString( ((pw3270_TerminalObject *) self)->session->get_version().c_str() ); + +} + +PyObject * terminal_get_revision(PyObject *self, PyObject *args) { + + return PyString_FromString( ((pw3270_TerminalObject *) self)->session->get_revision().c_str() ); + +} + +PyObject * terminal_is_connected(PyObject *self, PyObject *args) { + + return PyBool_FromLong( ((pw3270_TerminalObject *) self)->session->is_connected() ); + +} + +PyObject * terminal_is_ready(PyObject *self, PyObject *args) { + + return PyBool_FromLong( ((pw3270_TerminalObject *) self)->session->is_ready() ); + +} + +PyObject * terminal_is_protected_at(PyObject *self, PyObject *args) { + + int rc, row, col; + + if (!PyArg_ParseTuple(args, "ii", &row, &col)) { + PyErr_SetString(terminalError, strerror(EINVAL)); + return NULL; + } + + try { + + rc = ((pw3270_TerminalObject *) self)->session->get_is_protected_at(row,col); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyBool_FromLong( rc ); + +} + + +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()); + +} + +PyObject * terminal_get_contents(PyObject *self) { + + string rc; + + try { + + rc = ((pw3270_TerminalObject *) self)->session->get_string(); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyString_FromString(rc.c_str()); + + + +} diff --git a/src/module/init.cc b/src/module/init.cc new file mode 100644 index 0000000..945bef4 --- /dev/null +++ b/src/module/init.cc @@ -0,0 +1,167 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como py3270.cc e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + * Implementa métodos básicos para a extensão python. + * + * Referências: + * + * + * + * + */ + + #include "private.h" + +/*---[ Globals ]------------------------------------------------------------------------------------*/ + + PyObject * terminalError = NULL; + +/*---[ Implement ]----------------------------------------------------------------------------------*/ + +static PyObject * get_revision(PyObject *self, PyObject *args) { + +#ifdef PACKAGE_REVISION + return PyLong_FromLong(atoi(PACKAGE_REVISION)); +#else + return PyLong_FromLong(BUILD_DATE); +#endif // PACKAGE_REVISION + +} + +static PyMethodDef terminal_methods[] = { + + { "Version", terminal_get_version, METH_NOARGS, "Get the lib3270 version string." }, + { "Revision", terminal_get_revision, METH_NOARGS, "Get the lib3270 revision number." }, + + { "IsConnected", terminal_is_connected, METH_NOARGS, "True if the terminal is connected to the host." }, + { "IsReady", terminal_is_ready, METH_NOARGS, "True if the terminal has finished network activity." }, + { "IsProtected", terminal_is_protected_at, METH_VARARGS, "True if the position is read-only." }, + + { "SetCursorPosition", terminal_set_cursor_at, METH_VARARGS, "Set cursor position." }, + + { "WaitForStringAt", terminal_wait_for_string_at, METH_VARARGS, "Wait for string at position" }, + { "WaitForReady", terminal_wait_for_ready, METH_VARARGS, "Wait for network communication to finish" }, + + { "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." }, + { "SetStringAt", terminal_set_string_at, METH_VARARGS, "Set string in terminal buffer." }, + + { "PFKey", terminal_pfkey, METH_VARARGS, "Send PF key." }, + { "PAKey", terminal_pakey, METH_VARARGS, "Send PA key." }, + { "Enter", terminal_enter, METH_NOARGS, "Send Enter Key." }, + { "Action", terminal_action, METH_VARARGS, "Send Action by name." }, + + {NULL} // Sentinel + +}; + +/* +static PyMemberDef terminal_members[] = { + + { NULL } // Sentinel + +}; +*/ + +static PyTypeObject pw3270_TerminalType = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "py3270.terminal", /*tp_name*/ + sizeof(pw3270_TerminalObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + (destructor) terminal_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash */ + 0, /*tp_call*/ + terminal_get_contents, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ + "3270 terminal object", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + terminal_methods, /* tp_methods */ + 0, // terminal_members, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + (initproc) terminal_init, /* tp_init */ + 0, /* tp_alloc */ + terminal_new, /* tp_new */ + +}; + +static PyMethodDef MyMethods[] = { + + { "Revision", get_revision, METH_VARARGS, "Get module revision." }, + + {NULL, NULL, 0, NULL} /* Sentinel */ + +}; + +PyMODINIT_FUNC initpy3270(void) { + + // Cria o módulo + + PyObject *m = Py_InitModule("py3270", MyMethods); + + if (m == NULL) { + return; + } + + // Adiciona objeto para tratamento de erros. + terminalError = PyErr_NewException((char *) "py3270.error", NULL, NULL); + + (void) Py_INCREF(terminalError); + PyModule_AddObject(m, "error", terminalError); + + // Adiciona terminal + if(PyType_Ready(&pw3270_TerminalType) < 0) + return + + (void) Py_INCREF(&pw3270_TerminalType); + PyModule_AddObject(m, "Terminal", (PyObject *)&pw3270_TerminalType); + +} diff --git a/src/module/misc.cc b/src/module/misc.cc new file mode 100644 index 0000000..d9ccb8c --- /dev/null +++ b/src/module/misc.cc @@ -0,0 +1,134 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como misc.cc e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + * Implementa métodos básicos inicio/final do objeto python + * + * Referências: + * + * + * + * + */ + + #include "private.h" + + +/*---[ Implement ]----------------------------------------------------------------------------------*/ + + PyObject * terminal_connect(PyObject *self, PyObject *args) { + + int rc = -1; + int wait = 60; + const char * host = ""; + + if (!PyArg_ParseTuple(args, "s|i", &host, &wait)) { + PyErr_SetString(terminalError, "connect requires a host URL"); + return NULL; + } + + try { + + rc = ((pw3270_TerminalObject *) self)->session->connect(host,wait); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + + } + + PyObject * terminal_disconnect(PyObject *self, PyObject *args) { + + int rc = -1; + + try { + + rc = ((pw3270_TerminalObject *) self)->session->disconnect(); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + + } + + PyObject * terminal_wait_for_ready(PyObject *self, PyObject *args) { + + int rc; + int timeout = 60; + + if (!PyArg_ParseTuple(args, "|i", &timeout)) { + PyErr_SetString(terminalError, strerror(EINVAL)); + return NULL; + } + + try { + + rc = ((pw3270_TerminalObject *) self)->session->wait_for_ready(timeout); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + + } + + + PyObject * terminal_wait_for_string_at(PyObject *self, PyObject *args) { + + int row, col, rc; + int timeout = 10; + const char *text; + + if (!PyArg_ParseTuple(args, "iis|i", &row, &col, &text, &timeout)) { + PyErr_SetString(terminalError, strerror(EINVAL)); + return NULL; + } + + try { + + rc = ((pw3270_TerminalObject *) self)->session->wait_for_string_at(row,col,text,timeout); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + + } + diff --git a/src/module/set.cc b/src/module/set.cc new file mode 100644 index 0000000..759495d --- /dev/null +++ b/src/module/set.cc @@ -0,0 +1,86 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como set.cc e possui - linhas de código. + * + * Contatos + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + * Referências: + * + * + * + * + */ + + #include "private.h" + + +/*---[ Implement ]----------------------------------------------------------------------------------*/ + + PyObject * terminal_set_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->set_string_at(row,col,text); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + + } + + PyObject * terminal_set_cursor_at(PyObject *self, PyObject *args) { + + int row, col, rc; + + if (!PyArg_ParseTuple(args, "ii", &row, &col)) { + PyErr_SetString(terminalError, strerror(EINVAL)); + return NULL; + } + + try { + + rc = ((pw3270_TerminalObject *) self)->session->set_cursor_position(row,col); + + } catch(std::exception &e) { + + PyErr_SetString(terminalError, e.what()); + return NULL; + } + + return PyLong_FromLong(rc); + + } + diff --git a/src/object/init.cc b/src/object/init.cc new file mode 100644 index 0000000..34b9662 --- /dev/null +++ b/src/object/init.cc @@ -0,0 +1,87 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como py3270.cc e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + * Implementa métodos básicos inicio/final do objeto python + * + * Referências: + * + * + * + * + */ + + #include "private.h" + + +/*---[ Implement ]----------------------------------------------------------------------------------*/ + +PyObject * terminal_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { + + PW3270_NAMESPACE::session * session; + const char *id = ""; + + if (!PyArg_ParseTuple(args, "s", &id)) { + id = ""; + } + + trace("%s(%s)",__FUNCTION__,id); + + try { + + session = PW3270_NAMESPACE::session::create(id); + + } catch(std::exception &e) { + + trace("%s failed: %s",__FUNCTION__,e.what()); + PyErr_SetString(terminalError, e.what()); + return NULL; + + } + + pw3270_TerminalObject *self = (pw3270_TerminalObject *) type->tp_alloc(type, 0); + + self->session = session; + + return (PyObject *)self; +} + + +int terminal_init(pw3270_TerminalObject *self, PyObject *args, PyObject *kwds) { + + return 0; + +} + +void terminal_dealloc(pw3270_TerminalObject * self) { + + trace("%s",__FUNCTION__); + + delete self->session; + + self->ob_type->tp_free((PyObject*)self); + +} -- libgit2 0.21.2