/* * "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 - e possui - linhas de código. * * Contatos: * * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) * */ #ifndef PY3270_H_INCLUDED #define PY3270_H_INCLUDED #define PY_SSIZE_T_CLEAN #include #include #if defined(_WIN32) #include #define DLL_PRIVATE extern #define DLL_PUBLIC extern __declspec (dllexport) #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) #define DLL_PRIVATE __hidden extern #define DLL_PUBLIC extern #elif defined (HAVE_GNUC_VISIBILITY) #define DLL_PRIVATE __attribute__((visibility("hidden"))) extern #define DLL_PUBLIC __attribute__((visibility("default"))) extern #else #error Unable to set visibility attribute #endif #ifdef DEBUG #include #undef trace #define trace( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr); #define debug( fmt, ... ) fprintf(stderr, "%s(%d) " fmt "\n", __FILE__, __LINE__, __VA_ARGS__ ); fflush(stderr); #else #undef trace #define trace(x, ...) // __VA_ARGS__ #define debug(x, ...) // __VA_ARGS__ #endif #ifdef __cplusplus #include #include #include #include #include #include #include #include using std::exception; using std::runtime_error; using TN3270::Host; using TN3270::Action; DLL_PRIVATE PyObject * py3270_session_call(PyObject *self, std::function worker) noexcept; DLL_PRIVATE PyObject * py3270_session_call(PyObject *self, std::function worker) noexcept; DLL_PRIVATE PyObject * py3270_action_call(PyObject *self, std::function worker) noexcept; DLL_PRIVATE void py3270_wait(Host &host, PyObject *args); extern "C" { #else typedef void Host; typedef void Action; #endif typedef struct { PyObject_HEAD Host *host; } pySession; typedef struct { PyObject_HEAD pySession * session; Action * action; } pyAction; DLL_PRIVATE PyTypeObject py3270_session_type; DLL_PRIVATE PyTypeObject py3270_action_type; DLL_PRIVATE const PyGetSetDef py3270_session_attributes[]; DLL_PRIVATE PyObject * py3270_get_module_version(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_get_module_revision(PyObject *self, PyObject *args); // Types DLL_PRIVATE void py3270_action_type_init(PyTypeObject *type); DLL_PRIVATE void py3270_session_type_init(PyTypeObject *type); // Session object DLL_PRIVATE PyObject * py3270_session_alloc(PyTypeObject *type, PyObject *args, PyObject *kwds); DLL_PRIVATE void py3270_session_dealloc(PyObject * self); DLL_PRIVATE int py3270_session_init(PyObject *self, PyObject *args, PyObject *kwds); DLL_PRIVATE void py3270_session_finalize(PyObject *self); DLL_PRIVATE PyObject * py3270_session_getter(PyObject *self, void *name); DLL_PRIVATE int py3270_session_setter(PyObject *self, PyObject *value, void *name); DLL_PRIVATE PyObject * py3270_session_get_timeout(PyObject *self, void *dunno); DLL_PRIVATE int py3270_session_set_timeout(PyObject *self, PyObject *value, void *dunno); DLL_PRIVATE PyObject * py3270_session_connect(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_session_get(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_session_set(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_session_str(PyObject *self); DLL_PRIVATE PyObject * py3270_session_wait(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_session_find(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_session_count(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_session_pfkey(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_session_pakey(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_session_set_cursor_position(PyObject *self, PyObject *args); // Action object DLL_PRIVATE PyObject * py3270_action_new_from_session(PyObject *session, void *action); DLL_PRIVATE void py3270_action_dealloc(PyObject * self); DLL_PRIVATE PyObject * py3270_action_call(PyObject *callable, PyObject *args, PyObject *kwargs); DLL_PRIVATE PyObject * py3270_action_describe(PyObject *self, PyObject *obj, PyObject *type); DLL_PRIVATE PyObject * py3270_action_activate(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_action_wait(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * py3270_action_get_activatable(PyObject *self, void *dunno); DLL_PRIVATE PyObject * py3270_action_str(PyObject *self); /* DLL_PRIVATE PyObject * py3270_alloc(PyTypeObject *type, PyObject *args, PyObject *kwds); DLL_PRIVATE int py3270_init(py3270_TerminalObject *self, PyObject *args, PyObject *kwds); DLL_PRIVATE void py3270_dealloc(py3270_TerminalObject * self); DLL_PRIVATE PyObject * terminal_get_version(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_get_revision(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_is_connected(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_is_ready(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_connect(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_disconnect(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_get_string_at(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_get_contents(PyObject *self); DLL_PRIVATE PyObject * terminal_set_string_at(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_cmp_string_at(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_pfkey(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_pakey(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_enter(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_action(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_is_protected_at(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_set_cursor_at(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_wait_for_ready(PyObject *self, PyObject *args); DLL_PRIVATE PyObject * terminal_wait_for_string_at(PyObject *self, PyObject *args); */ #ifdef __cplusplus } #endif #endif // PY3270_H_INCLUDED