Commit dd244268eb473dfbc96612a6fb6243dfa9328e54
1 parent
8cc442a7
Exists in
master
Copiando fontes do módulo PHP original.
Showing
16 changed files
with
752 additions
and
712 deletions
Show diff stats
configure.ac
| ... | ... | @@ -15,7 +15,7 @@ dnl Compute the canonical host-system type |
| 15 | 15 | AC_CANONICAL_HOST |
| 16 | 16 | |
| 17 | 17 | dnl Put macro definitions here (though they aren't used). |
| 18 | -AC_CONFIG_HEADER([src/include/config.h]) | |
| 18 | +AC_CONFIG_HEADER([src/config.h]) | |
| 19 | 19 | |
| 20 | 20 | dnl Initialise automake stuff. |
| 21 | 21 | AM_INIT_AUTOMAKE |
| ... | ... | @@ -368,7 +368,7 @@ dnl --------------------------------------------------------------------------- |
| 368 | 368 | dnl AC_CONFIG_FILES(Makefile) |
| 369 | 369 | dnl AC_CONFIG_FILES(src/extension/Makefile) |
| 370 | 370 | dnl AC_CONFIG_FILES(src/plugin/Makefile) |
| 371 | -AC_CONFIG_FILES(src/include/php3270.h) | |
| 371 | +AC_CONFIG_FILES(src/php3270.h) | |
| 372 | 372 | |
| 373 | 373 | dnl --------------------------------------------------------------------------- |
| 374 | 374 | dnl Output the generated config.status script. | ... | ... |
| ... | ... | @@ -0,0 +1,40 @@ |
| 1 | +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | |
| 2 | +<CodeBlocks_project_file> | |
| 3 | + <FileVersion major="1" minor="6" /> | |
| 4 | + <Project> | |
| 5 | + <Option title="PHP5 Bindings for pw3270/lib3270" /> | |
| 6 | + <Option pch_mode="2" /> | |
| 7 | + <Option compiler="gcc" /> | |
| 8 | + <Build> | |
| 9 | + <Target title="Debug"> | |
| 10 | + <Option output=".bin/Debug/PHP5 Bindings for pw3270/lib3270" prefix_auto="1" extension_auto="1" /> | |
| 11 | + <Option object_output=".obj/Debug/" /> | |
| 12 | + <Option type="1" /> | |
| 13 | + <Option compiler="gcc" /> | |
| 14 | + <Compiler> | |
| 15 | + <Add option="-g" /> | |
| 16 | + </Compiler> | |
| 17 | + </Target> | |
| 18 | + <Target title="Release"> | |
| 19 | + <Option output=".bin/Release/PHP5 Bindings for pw3270/lib3270" prefix_auto="1" extension_auto="1" /> | |
| 20 | + <Option object_output=".obj/Release/" /> | |
| 21 | + <Option type="1" /> | |
| 22 | + <Option compiler="gcc" /> | |
| 23 | + <Compiler> | |
| 24 | + <Add option="-O2" /> | |
| 25 | + </Compiler> | |
| 26 | + <Linker> | |
| 27 | + <Add option="-s" /> | |
| 28 | + </Linker> | |
| 29 | + </Target> | |
| 30 | + </Build> | |
| 31 | + <Compiler> | |
| 32 | + <Add option="-Wall" /> | |
| 33 | + </Compiler> | |
| 34 | + <Extensions> | |
| 35 | + <code_completion /> | |
| 36 | + <envvars /> | |
| 37 | + <debugger /> | |
| 38 | + </Extensions> | |
| 39 | + </Project> | |
| 40 | +</CodeBlocks_project_file> | ... | ... |
| ... | ... | @@ -0,0 +1,51 @@ |
| 1 | +/** | |
| 2 | + * @file config.h | |
| 3 | + * | |
| 4 | + * @brief Configuração para o aplicativo. | |
| 5 | + * | |
| 6 | + * Gerado automaticamente pelo processo ./configure esse arquivo descreve | |
| 7 | + * as configurações de ambiente detectadas automaticamente. | |
| 8 | + * | |
| 9 | + * @author perry.werneck@gmail.com | |
| 10 | + * | |
| 11 | + */ | |
| 12 | + | |
| 13 | +#ifndef CONFIG_H_INCLUDED | |
| 14 | + | |
| 15 | + #define CONFIG_H_INCLUDED 1 | |
| 16 | + | |
| 17 | + /** | |
| 18 | + * @brief Nome do pacote. | |
| 19 | + */ | |
| 20 | + #undef PACKAGE_NAME | |
| 21 | + | |
| 22 | + /** | |
| 23 | + * @brief Versão atual. | |
| 24 | + */ | |
| 25 | + #undef PACKAGE_VERSION | |
| 26 | + | |
| 27 | + /** | |
| 28 | + * @brief Revisão svn quando o pacote foi configurado. | |
| 29 | + * | |
| 30 | + */ | |
| 31 | + #undef PACKAGE_REVISION | |
| 32 | + | |
| 33 | + /** | |
| 34 | + * @brief Descrição do aplicativo. | |
| 35 | + */ | |
| 36 | + #undef PACKAGE_DESCRIPTION | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * @brief Indica se o compilador atual possui suporte a "visibility" | |
| 40 | + * | |
| 41 | + * Quando disponível indica que o compilador atual permite tornar | |
| 42 | + * visíveis numa biblioteca apenas as funções declaradas para isso | |
| 43 | + * evitando que todos os símbolos fiquem visíveis. | |
| 44 | + * | |
| 45 | + * Isso permite um melhor controle sobre quais funções podem ser usados | |
| 46 | + * pelo programa principal. | |
| 47 | + * | |
| 48 | + */ | |
| 49 | + #undef HAVE_GNUC_VISIBILITY | |
| 50 | + | |
| 51 | +#endif // CONFIG_H_INCLUDED | ... | ... |
| ... | ... | @@ -0,0 +1,108 @@ |
| 1 | +/* | |
| 2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | + * | |
| 6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | + * | |
| 8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | + * Free Software Foundation. | |
| 11 | + * | |
| 12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | + * obter mais detalhes. | |
| 16 | + * | |
| 17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | + * | |
| 21 | + * Este programa está nomeado como get.cc e possui - linhas de código. | |
| 22 | + * | |
| 23 | + * Contatos: | |
| 24 | + * | |
| 25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | + * | |
| 28 | + * Referências: | |
| 29 | + * | |
| 30 | + * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | + * | |
| 32 | + */ | |
| 33 | + | |
| 34 | + #include "php3270.h" | |
| 35 | + | |
| 36 | +/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 37 | + | |
| 38 | +PHP_METHOD(tn3270, isconnected) | |
| 39 | +{ | |
| 40 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 41 | + RETURN_BOOL(obj->hSession->is_connected()); | |
| 42 | +} | |
| 43 | + | |
| 44 | +PHP_METHOD(tn3270, isready) | |
| 45 | +{ | |
| 46 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 47 | + RETURN_BOOL(obj->hSession->is_ready()); | |
| 48 | +} | |
| 49 | + | |
| 50 | +PHP_METHOD(tn3270, getstringat) | |
| 51 | +{ | |
| 52 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 53 | + long row; | |
| 54 | + long col; | |
| 55 | + long sz; | |
| 56 | + | |
| 57 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &row, &col, &sz) == FAILURE) | |
| 58 | + RETURN_NULL(); | |
| 59 | + | |
| 60 | + string str = obj->hSession->get_string_at(row,col,sz); | |
| 61 | + | |
| 62 | + trace("String = [%s]",str.c_str()); | |
| 63 | + RETURN_STRING(str.c_str(),1); | |
| 64 | +} | |
| 65 | + | |
| 66 | +PHP_METHOD(tn3270, cmpstringat) | |
| 67 | +{ | |
| 68 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 69 | + long row; | |
| 70 | + long col; | |
| 71 | + const char * text; | |
| 72 | + int szText; | |
| 73 | + | |
| 74 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls", &row, &col, &text, &szText) == FAILURE) | |
| 75 | + RETURN_NULL(); | |
| 76 | + | |
| 77 | + if(!szText) | |
| 78 | + RETURN_NULL(); | |
| 79 | + | |
| 80 | + char buffer[szText+1]; | |
| 81 | + memcpy(buffer,text,szText); | |
| 82 | + buffer[szText] = 0; | |
| 83 | + | |
| 84 | + RETURN_LONG(obj->hSession->cmp_string_at(row,col,buffer)); | |
| 85 | +} | |
| 86 | + | |
| 87 | +PHP_METHOD(tn3270, getisprotected) | |
| 88 | +{ | |
| 89 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 90 | + long baddr; | |
| 91 | + | |
| 92 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &baddr) == FAILURE) | |
| 93 | + RETURN_NULL(); | |
| 94 | + | |
| 95 | + RETURN_LONG(obj->hSession->get_is_protected(baddr)); | |
| 96 | +} | |
| 97 | + | |
| 98 | +PHP_METHOD(tn3270, getisprotectedat) | |
| 99 | +{ | |
| 100 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 101 | + long row; | |
| 102 | + long col; | |
| 103 | + | |
| 104 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &row, &col) == FAILURE) | |
| 105 | + RETURN_NULL(); | |
| 106 | + | |
| 107 | + RETURN_LONG(obj->hSession->get_is_protected_at(row,col)); | |
| 108 | +} | ... | ... |
src/include/config.h.in
| ... | ... | @@ -1,51 +0,0 @@ |
| 1 | -/** | |
| 2 | - * @file config.h | |
| 3 | - * | |
| 4 | - * @brief Configuração para o aplicativo. | |
| 5 | - * | |
| 6 | - * Gerado automaticamente pelo processo ./configure esse arquivo descreve | |
| 7 | - * as configurações de ambiente detectadas automaticamente. | |
| 8 | - * | |
| 9 | - * @author perry.werneck@gmail.com | |
| 10 | - * | |
| 11 | - */ | |
| 12 | - | |
| 13 | -#ifndef CONFIG_H_INCLUDED | |
| 14 | - | |
| 15 | - #define CONFIG_H_INCLUDED 1 | |
| 16 | - | |
| 17 | - /** | |
| 18 | - * @brief Nome do pacote. | |
| 19 | - */ | |
| 20 | - #undef PACKAGE_NAME | |
| 21 | - | |
| 22 | - /** | |
| 23 | - * @brief Versão atual. | |
| 24 | - */ | |
| 25 | - #undef PACKAGE_VERSION | |
| 26 | - | |
| 27 | - /** | |
| 28 | - * @brief Revisão svn quando o pacote foi configurado. | |
| 29 | - * | |
| 30 | - */ | |
| 31 | - #undef PACKAGE_REVISION | |
| 32 | - | |
| 33 | - /** | |
| 34 | - * @brief Descrição do aplicativo. | |
| 35 | - */ | |
| 36 | - #undef PACKAGE_DESCRIPTION | |
| 37 | - | |
| 38 | - /** | |
| 39 | - * @brief Indica se o compilador atual possui suporte a "visibility" | |
| 40 | - * | |
| 41 | - * Quando disponível indica que o compilador atual permite tornar | |
| 42 | - * visíveis numa biblioteca apenas as funções declaradas para isso | |
| 43 | - * evitando que todos os símbolos fiquem visíveis. | |
| 44 | - * | |
| 45 | - * Isso permite um melhor controle sobre quais funções podem ser usados | |
| 46 | - * pelo programa principal. | |
| 47 | - * | |
| 48 | - */ | |
| 49 | - #undef HAVE_GNUC_VISIBILITY | |
| 50 | - | |
| 51 | -#endif // CONFIG_H_INCLUDED |
src/include/php3270.h.in
| ... | ... | @@ -1,87 +0,0 @@ |
| 1 | -/* | |
| 2 | - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | - * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | - * | |
| 6 | - * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | - * | |
| 8 | - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | - * Free Software Foundation. | |
| 11 | - * | |
| 12 | - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | - * obter mais detalhes. | |
| 16 | - * | |
| 17 | - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | - * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | - * | |
| 21 | - * Este programa está nomeado como php3270.h e possui - linhas de código. | |
| 22 | - * | |
| 23 | - * Contatos: | |
| 24 | - * | |
| 25 | - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | - * | |
| 28 | - * Referências: | |
| 29 | - * | |
| 30 | - * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | - * | |
| 32 | - */ | |
| 33 | - | |
| 34 | -#ifndef PHP3270_INCLUDED | |
| 35 | - | |
| 36 | - #define PHP3270_INCLUDED 1 | |
| 37 | - | |
| 38 | - #define PHP3270_EXTNAME "@PACKAGE_NAME@" | |
| 39 | - #define PHP3270_EXTVER "@PACKAGE_VERSION@" | |
| 40 | - | |
| 41 | - extern "C" | |
| 42 | - { | |
| 43 | - #include "php.h" | |
| 44 | - } | |
| 45 | - | |
| 46 | - extern zend_module_entry lib3270_module_entry; | |
| 47 | - #define phpext_lib3270_ptr &lib3270_module_entry; | |
| 48 | - | |
| 49 | - // 3270 session methods | |
| 50 | - PHP_METHOD(tn3270,__construct); | |
| 51 | - PHP_METHOD(tn3270,connect); | |
| 52 | - PHP_METHOD(tn3270,disconnect); | |
| 53 | - PHP_METHOD(tn3270,isconnected); | |
| 54 | - PHP_METHOD(tn3270,isready); | |
| 55 | - PHP_METHOD(tn3270,waitforready); | |
| 56 | - PHP_METHOD(tn3270,wait); | |
| 57 | - PHP_METHOD(tn3270,iterate); | |
| 58 | - | |
| 59 | - PHP_METHOD(tn3270,pfkey); | |
| 60 | - PHP_METHOD(tn3270,pakey); | |
| 61 | - PHP_METHOD(tn3270,enter); | |
| 62 | - | |
| 63 | - PHP_METHOD(tn3270,getstringat); | |
| 64 | - PHP_METHOD(tn3270,setstringat); | |
| 65 | - PHP_METHOD(tn3270,cmpstringat); | |
| 66 | - | |
| 67 | - PHP_METHOD(tn3270,getisprotected); | |
| 68 | - PHP_METHOD(tn3270,getisprotectedat); | |
| 69 | - | |
| 70 | - PHP_METHOD(tn3270,action); | |
| 71 | - | |
| 72 | - #undef PACKAGE_NAME | |
| 73 | - #undef PACKAGE_VERSION | |
| 74 | - #undef HAVE_MALLOC_H | |
| 75 | - #include <pw3270/class.h> | |
| 76 | - | |
| 77 | - // PHP object | |
| 78 | - using namespace PW3270_NAMESPACE; | |
| 79 | - | |
| 80 | - struct tn3270_object | |
| 81 | - { | |
| 82 | - zend_object std; | |
| 83 | - session * hSession; | |
| 84 | - }; | |
| 85 | - | |
| 86 | - | |
| 87 | -#endif // PHP_LIB3270_INCLUDED |
| ... | ... | @@ -0,0 +1,86 @@ |
| 1 | +/* | |
| 2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | + * | |
| 6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | + * | |
| 8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | + * Free Software Foundation. | |
| 11 | + * | |
| 12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | + * obter mais detalhes. | |
| 16 | + * | |
| 17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | + * | |
| 21 | + * Este programa está nomeado como init.cc e possui - linhas de código. | |
| 22 | + * | |
| 23 | + * Contatos: | |
| 24 | + * | |
| 25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | + * | |
| 28 | + * Referências: | |
| 29 | + * | |
| 30 | + * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | + * | |
| 32 | + */ | |
| 33 | + | |
| 34 | + #include "php3270.h" | |
| 35 | + #include <Zend/zend_exceptions.h> | |
| 36 | + | |
| 37 | +/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 38 | + | |
| 39 | +PHP_METHOD(tn3270, __construct) | |
| 40 | +{ | |
| 41 | + char * name; | |
| 42 | + int szName = 0; | |
| 43 | + char * url; | |
| 44 | + int szURL = 0; | |
| 45 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 46 | + | |
| 47 | + trace("%s %d",__FUNCTION__,ZEND_NUM_ARGS()); | |
| 48 | + | |
| 49 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 50 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sss", &name, &szName, &url, &szURL) == FAILURE) | |
| 51 | + RETURN_NULL(); | |
| 52 | + | |
| 53 | + trace("szName=%d",szName); | |
| 54 | + | |
| 55 | + try | |
| 56 | + { | |
| 57 | + | |
| 58 | + if(szName) | |
| 59 | + { | |
| 60 | + char text[szName+1]; | |
| 61 | + strncpy(text,name,szName); | |
| 62 | + text[szName] = 0; | |
| 63 | + trace("session_name=\"%s\"",text); | |
| 64 | + obj->hSession = session::start(text); | |
| 65 | + } | |
| 66 | + else | |
| 67 | + { | |
| 68 | + obj->hSession = session::start(); | |
| 69 | + } | |
| 70 | + | |
| 71 | + if(szURL) | |
| 72 | + { | |
| 73 | + char text[szURL+1]; | |
| 74 | + strncpy(text,url,szURL); | |
| 75 | + text[szURL] = 0; | |
| 76 | + obj->hSession->set_url(text); | |
| 77 | + } | |
| 78 | + | |
| 79 | + } | |
| 80 | + catch(std::exception &e) | |
| 81 | + { | |
| 82 | + zend_throw_error_exception(zend_exception_get_default(), (char *) e.what(), 0, 0 TSRMLS_DC); | |
| 83 | + } | |
| 84 | + | |
| 85 | +} | |
| 86 | + | ... | ... |
| ... | ... | @@ -0,0 +1,151 @@ |
| 1 | +/* | |
| 2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | + * | |
| 6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | + * | |
| 8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | + * Free Software Foundation. | |
| 11 | + * | |
| 12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | + * obter mais detalhes. | |
| 16 | + * | |
| 17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | + * | |
| 21 | + * Este programa está nomeado como main.cc e possui - linhas de código. | |
| 22 | + * | |
| 23 | + * Contatos: | |
| 24 | + * | |
| 25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | + * | |
| 28 | + * Referências: | |
| 29 | + * | |
| 30 | + * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | + * | |
| 32 | + */ | |
| 33 | + | |
| 34 | + #include "php3270.h" | |
| 35 | + | |
| 36 | +/*--[ Globals ]----------------------------------------------------------------------------------------------------*/ | |
| 37 | + | |
| 38 | +static zend_class_entry * tn3270_ce = NULL; | |
| 39 | +static zend_object_handlers tn3270_object_handlers; | |
| 40 | + | |
| 41 | +/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 42 | + | |
| 43 | +zend_function_entry tn3270_methods[] = | |
| 44 | +{ | |
| 45 | + PHP_ME( tn3270, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 46 | + | |
| 47 | + PHP_ME( tn3270, connect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 48 | + PHP_ME( tn3270, disconnect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 49 | + | |
| 50 | + PHP_ME( tn3270, isconnected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 51 | + PHP_ME( tn3270, isready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 52 | + | |
| 53 | + PHP_ME( tn3270, waitforready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 54 | + PHP_ME( tn3270, wait, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 55 | + PHP_ME( tn3270, iterate, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 56 | + | |
| 57 | + PHP_ME( tn3270, pfkey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 58 | + PHP_ME( tn3270, pakey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 59 | + PHP_ME( tn3270, enter, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 60 | + | |
| 61 | + PHP_ME( tn3270, getstringat, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 62 | + PHP_ME( tn3270, setstringat, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 63 | + PHP_ME( tn3270, cmpstringat, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 64 | + | |
| 65 | + PHP_ME( tn3270, getisprotected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 66 | + PHP_ME( tn3270, getisprotectedat, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 67 | + | |
| 68 | + PHP_ME( tn3270, action, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 69 | + | |
| 70 | + {NULL, NULL, NULL} | |
| 71 | +}; | |
| 72 | + | |
| 73 | +void tn3270_free_storage(void *object TSRMLS_DC) | |
| 74 | +{ | |
| 75 | + tn3270_object *obj = (tn3270_object *)object; | |
| 76 | + | |
| 77 | + trace("%s",__FUNCTION__); | |
| 78 | + | |
| 79 | + zend_object_std_dtor(&obj->std TSRMLS_CC); | |
| 80 | + delete obj->hSession; | |
| 81 | + | |
| 82 | + efree(obj); | |
| 83 | +} | |
| 84 | + | |
| 85 | +zend_object_value tn3270_create_handler(zend_class_entry *type TSRMLS_DC) | |
| 86 | +{ | |
| 87 | + zend_object_value retval; | |
| 88 | + tn3270_object * obj = (tn3270_object *) emalloc(sizeof(tn3270_object)); | |
| 89 | + | |
| 90 | + trace("%s",__FUNCTION__); | |
| 91 | + | |
| 92 | + memset(obj, 0, sizeof(tn3270_object)); | |
| 93 | + | |
| 94 | + zend_object_std_init( &(obj->std), type TSRMLS_CC ); | |
| 95 | + | |
| 96 | + // http://stackoverflow.com/questions/14105529/writing-a-c-extension-for-php-5-4-example-code-is-obsolete | |
| 97 | + // object_properties_init((zend_object*) &(obj->std), type); | |
| 98 | +#if PHP_VERSION_ID < 50399 | |
| 99 | + zend_hash_copy(obj->std.properties, &(type->default_properties),(copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval*)); | |
| 100 | +#else | |
| 101 | + object_properties_init(&obj->std, type); | |
| 102 | +#endif | |
| 103 | + | |
| 104 | + retval.handle = zend_objects_store_put(obj, NULL, tn3270_free_storage, NULL TSRMLS_CC); | |
| 105 | + retval.handlers = &tn3270_object_handlers; | |
| 106 | + | |
| 107 | + return retval; | |
| 108 | +} | |
| 109 | + | |
| 110 | +PHP_MINIT_FUNCTION(tn3270) | |
| 111 | +{ | |
| 112 | + zend_class_entry ce; | |
| 113 | + | |
| 114 | + trace("%s",__FUNCTION__); | |
| 115 | + | |
| 116 | + INIT_CLASS_ENTRY(ce, "tn3270", tn3270_methods); | |
| 117 | + | |
| 118 | + tn3270_ce = zend_register_internal_class(&ce TSRMLS_CC); | |
| 119 | + tn3270_ce->create_object = tn3270_create_handler; | |
| 120 | + | |
| 121 | + memcpy(&tn3270_object_handlers,zend_get_std_object_handlers(), sizeof(zend_object_handlers)); | |
| 122 | + tn3270_object_handlers.clone_obj = NULL; | |
| 123 | + | |
| 124 | + return SUCCESS; | |
| 125 | +} | |
| 126 | + | |
| 127 | +zend_module_entry lib3270_module_entry = | |
| 128 | +{ | |
| 129 | +#if ZEND_MODULE_API_NO >= 20010901 | |
| 130 | + STANDARD_MODULE_HEADER, | |
| 131 | +#endif | |
| 132 | + PHP3270_EXTNAME, | |
| 133 | + NULL, /* Functions */ | |
| 134 | + PHP_MINIT(tn3270), | |
| 135 | + NULL, /* MSHUTDOWN */ | |
| 136 | + NULL, /* RINIT */ | |
| 137 | + NULL, /* RSHUTDOWN */ | |
| 138 | + NULL, /* MINFO */ | |
| 139 | +#if ZEND_MODULE_API_NO >= 20010901 | |
| 140 | + PHP3270_EXTVER, | |
| 141 | +#endif | |
| 142 | + STANDARD_MODULE_PROPERTIES | |
| 143 | +}; | |
| 144 | + | |
| 145 | +// #ifdef COMPILE_DL_LIB3270 | |
| 146 | +extern "C" | |
| 147 | +{ | |
| 148 | + ZEND_GET_MODULE(lib3270) | |
| 149 | +} | |
| 150 | +// #endif | |
| 151 | + | ... | ... |
| ... | ... | @@ -0,0 +1,139 @@ |
| 1 | +/* | |
| 2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | + * | |
| 6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | + * | |
| 8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | + * Free Software Foundation. | |
| 11 | + * | |
| 12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | + * obter mais detalhes. | |
| 16 | + * | |
| 17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | + * | |
| 21 | + * Este programa está nomeado como main.cc e possui - linhas de código. | |
| 22 | + * | |
| 23 | + * Contatos: | |
| 24 | + * | |
| 25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | + * | |
| 28 | + * Referências: | |
| 29 | + * | |
| 30 | + * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | + * | |
| 32 | + */ | |
| 33 | + | |
| 34 | + #include "php3270.h" | |
| 35 | + | |
| 36 | +/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 37 | + | |
| 38 | +PHP_METHOD(tn3270, connect) | |
| 39 | +{ | |
| 40 | + const char * host; | |
| 41 | + int szHost; | |
| 42 | + zend_bool wait = 0; | |
| 43 | + int rc = 0; | |
| 44 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 45 | + | |
| 46 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sb", &host, &szHost, &wait) == FAILURE) | |
| 47 | + RETURN_NULL(); | |
| 48 | + | |
| 49 | + if(szHost) | |
| 50 | + { | |
| 51 | + char text[szHost+1]; | |
| 52 | + strncpy(text,host,szHost); | |
| 53 | + text[szHost] = 0; | |
| 54 | + rc = obj->hSession->connect(text,wait); | |
| 55 | + } | |
| 56 | + else | |
| 57 | + { | |
| 58 | + rc = obj->hSession->connect(); | |
| 59 | + } | |
| 60 | + | |
| 61 | + RETURN_LONG(rc); | |
| 62 | +} | |
| 63 | + | |
| 64 | +PHP_METHOD(tn3270, disconnect) | |
| 65 | +{ | |
| 66 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 67 | + RETURN_LONG(obj->hSession->disconnect()); | |
| 68 | +} | |
| 69 | + | |
| 70 | +PHP_METHOD(tn3270, waitforready) | |
| 71 | +{ | |
| 72 | + long seconds; | |
| 73 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 74 | + | |
| 75 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 76 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | |
| 77 | + RETURN_NULL(); | |
| 78 | + | |
| 79 | + RETURN_LONG(obj->hSession->wait_for_ready((int) seconds)); | |
| 80 | +} | |
| 81 | + | |
| 82 | +PHP_METHOD(tn3270, waity) | |
| 83 | +{ | |
| 84 | + long seconds; | |
| 85 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 86 | + | |
| 87 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 88 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | |
| 89 | + RETURN_NULL(); | |
| 90 | + | |
| 91 | + RETURN_LONG(obj->hSession->wait((int) seconds)); | |
| 92 | +} | |
| 93 | + | |
| 94 | +PHP_METHOD(tn3270, wait) | |
| 95 | +{ | |
| 96 | + long seconds; | |
| 97 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 98 | + | |
| 99 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 100 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | |
| 101 | + RETURN_NULL(); | |
| 102 | + | |
| 103 | + RETURN_LONG(obj->hSession->wait((int) seconds)); | |
| 104 | +} | |
| 105 | + | |
| 106 | + | |
| 107 | +PHP_METHOD(tn3270, iterate) | |
| 108 | +{ | |
| 109 | + zend_bool wait = 0; | |
| 110 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 111 | + | |
| 112 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 113 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", &wait) == FAILURE) | |
| 114 | + RETURN_NULL(); | |
| 115 | + | |
| 116 | + RETURN_LONG(obj->hSession->iterate(wait)); | |
| 117 | +} | |
| 118 | + | |
| 119 | +PHP_METHOD(tn3270, action) | |
| 120 | +{ | |
| 121 | + | |
| 122 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 123 | + | |
| 124 | + const char * text; | |
| 125 | + int szText; | |
| 126 | + | |
| 127 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &text, &szText) == FAILURE) | |
| 128 | + RETURN_NULL(); | |
| 129 | + | |
| 130 | + if(!szText) | |
| 131 | + RETURN_NULL(); | |
| 132 | + | |
| 133 | + char buffer[szText+1]; | |
| 134 | + memcpy(buffer,text,szText); | |
| 135 | + buffer[szText] = 0; | |
| 136 | + | |
| 137 | + RETURN_LONG(obj->hSession->action(buffer)); | |
| 138 | + | |
| 139 | +} | ... | ... |
src/native/get.cc
| ... | ... | @@ -1,108 +0,0 @@ |
| 1 | -/* | |
| 2 | - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | - * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | - * | |
| 6 | - * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | - * | |
| 8 | - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | - * Free Software Foundation. | |
| 11 | - * | |
| 12 | - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | - * obter mais detalhes. | |
| 16 | - * | |
| 17 | - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | - * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | - * | |
| 21 | - * Este programa está nomeado como get.cc e possui - linhas de código. | |
| 22 | - * | |
| 23 | - * Contatos: | |
| 24 | - * | |
| 25 | - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | - * | |
| 28 | - * Referências: | |
| 29 | - * | |
| 30 | - * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | - * | |
| 32 | - */ | |
| 33 | - | |
| 34 | - #include "php3270.h" | |
| 35 | - | |
| 36 | -/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 37 | - | |
| 38 | -PHP_METHOD(tn3270, isconnected) | |
| 39 | -{ | |
| 40 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 41 | - RETURN_BOOL(obj->hSession->is_connected()); | |
| 42 | -} | |
| 43 | - | |
| 44 | -PHP_METHOD(tn3270, isready) | |
| 45 | -{ | |
| 46 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 47 | - RETURN_BOOL(obj->hSession->is_ready()); | |
| 48 | -} | |
| 49 | - | |
| 50 | -PHP_METHOD(tn3270, getstringat) | |
| 51 | -{ | |
| 52 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 53 | - long row; | |
| 54 | - long col; | |
| 55 | - long sz; | |
| 56 | - | |
| 57 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &row, &col, &sz) == FAILURE) | |
| 58 | - RETURN_NULL(); | |
| 59 | - | |
| 60 | - string str = obj->hSession->get_string_at(row,col,sz); | |
| 61 | - | |
| 62 | - trace("String = [%s]",str.c_str()); | |
| 63 | - RETURN_STRING(str.c_str(),1); | |
| 64 | -} | |
| 65 | - | |
| 66 | -PHP_METHOD(tn3270, cmpstringat) | |
| 67 | -{ | |
| 68 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 69 | - long row; | |
| 70 | - long col; | |
| 71 | - const char * text; | |
| 72 | - int szText; | |
| 73 | - | |
| 74 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls", &row, &col, &text, &szText) == FAILURE) | |
| 75 | - RETURN_NULL(); | |
| 76 | - | |
| 77 | - if(!szText) | |
| 78 | - RETURN_NULL(); | |
| 79 | - | |
| 80 | - char buffer[szText+1]; | |
| 81 | - memcpy(buffer,text,szText); | |
| 82 | - buffer[szText] = 0; | |
| 83 | - | |
| 84 | - RETURN_LONG(obj->hSession->cmp_string_at(row,col,buffer)); | |
| 85 | -} | |
| 86 | - | |
| 87 | -PHP_METHOD(tn3270, getisprotected) | |
| 88 | -{ | |
| 89 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 90 | - long baddr; | |
| 91 | - | |
| 92 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &baddr) == FAILURE) | |
| 93 | - RETURN_NULL(); | |
| 94 | - | |
| 95 | - RETURN_LONG(obj->hSession->get_is_protected(baddr)); | |
| 96 | -} | |
| 97 | - | |
| 98 | -PHP_METHOD(tn3270, getisprotectedat) | |
| 99 | -{ | |
| 100 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 101 | - long row; | |
| 102 | - long col; | |
| 103 | - | |
| 104 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &row, &col) == FAILURE) | |
| 105 | - RETURN_NULL(); | |
| 106 | - | |
| 107 | - RETURN_LONG(obj->hSession->get_is_protected_at(row,col)); | |
| 108 | -} |
src/native/init.cc
| ... | ... | @@ -1,86 +0,0 @@ |
| 1 | -/* | |
| 2 | - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | - * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | - * | |
| 6 | - * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | - * | |
| 8 | - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | - * Free Software Foundation. | |
| 11 | - * | |
| 12 | - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | - * obter mais detalhes. | |
| 16 | - * | |
| 17 | - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | - * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | - * | |
| 21 | - * Este programa está nomeado como init.cc e possui - linhas de código. | |
| 22 | - * | |
| 23 | - * Contatos: | |
| 24 | - * | |
| 25 | - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | - * | |
| 28 | - * Referências: | |
| 29 | - * | |
| 30 | - * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | - * | |
| 32 | - */ | |
| 33 | - | |
| 34 | - #include "php3270.h" | |
| 35 | - #include <Zend/zend_exceptions.h> | |
| 36 | - | |
| 37 | -/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 38 | - | |
| 39 | -PHP_METHOD(tn3270, __construct) | |
| 40 | -{ | |
| 41 | - char * name; | |
| 42 | - int szName = 0; | |
| 43 | - char * url; | |
| 44 | - int szURL = 0; | |
| 45 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 46 | - | |
| 47 | - trace("%s %d",__FUNCTION__,ZEND_NUM_ARGS()); | |
| 48 | - | |
| 49 | - // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 50 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sss", &name, &szName, &url, &szURL) == FAILURE) | |
| 51 | - RETURN_NULL(); | |
| 52 | - | |
| 53 | - trace("szName=%d",szName); | |
| 54 | - | |
| 55 | - try | |
| 56 | - { | |
| 57 | - | |
| 58 | - if(szName) | |
| 59 | - { | |
| 60 | - char text[szName+1]; | |
| 61 | - strncpy(text,name,szName); | |
| 62 | - text[szName] = 0; | |
| 63 | - trace("session_name=\"%s\"",text); | |
| 64 | - obj->hSession = session::start(text); | |
| 65 | - } | |
| 66 | - else | |
| 67 | - { | |
| 68 | - obj->hSession = session::start(); | |
| 69 | - } | |
| 70 | - | |
| 71 | - if(szURL) | |
| 72 | - { | |
| 73 | - char text[szURL+1]; | |
| 74 | - strncpy(text,url,szURL); | |
| 75 | - text[szURL] = 0; | |
| 76 | - obj->hSession->set_url(text); | |
| 77 | - } | |
| 78 | - | |
| 79 | - } | |
| 80 | - catch(std::exception &e) | |
| 81 | - { | |
| 82 | - zend_throw_error_exception(zend_exception_get_default(), (char *) e.what(), 0, 0 TSRMLS_DC); | |
| 83 | - } | |
| 84 | - | |
| 85 | -} | |
| 86 | - |
src/native/main.cc
| ... | ... | @@ -1,151 +0,0 @@ |
| 1 | -/* | |
| 2 | - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | - * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | - * | |
| 6 | - * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | - * | |
| 8 | - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | - * Free Software Foundation. | |
| 11 | - * | |
| 12 | - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | - * obter mais detalhes. | |
| 16 | - * | |
| 17 | - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | - * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | - * | |
| 21 | - * Este programa está nomeado como main.cc e possui - linhas de código. | |
| 22 | - * | |
| 23 | - * Contatos: | |
| 24 | - * | |
| 25 | - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | - * | |
| 28 | - * Referências: | |
| 29 | - * | |
| 30 | - * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | - * | |
| 32 | - */ | |
| 33 | - | |
| 34 | - #include "php3270.h" | |
| 35 | - | |
| 36 | -/*--[ Globals ]----------------------------------------------------------------------------------------------------*/ | |
| 37 | - | |
| 38 | -static zend_class_entry * tn3270_ce = NULL; | |
| 39 | -static zend_object_handlers tn3270_object_handlers; | |
| 40 | - | |
| 41 | -/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 42 | - | |
| 43 | -zend_function_entry tn3270_methods[] = | |
| 44 | -{ | |
| 45 | - PHP_ME( tn3270, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 46 | - | |
| 47 | - PHP_ME( tn3270, connect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 48 | - PHP_ME( tn3270, disconnect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 49 | - | |
| 50 | - PHP_ME( tn3270, isconnected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 51 | - PHP_ME( tn3270, isready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 52 | - | |
| 53 | - PHP_ME( tn3270, waitforready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 54 | - PHP_ME( tn3270, wait, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 55 | - PHP_ME( tn3270, iterate, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 56 | - | |
| 57 | - PHP_ME( tn3270, pfkey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 58 | - PHP_ME( tn3270, pakey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 59 | - PHP_ME( tn3270, enter, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 60 | - | |
| 61 | - PHP_ME( tn3270, getstringat, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 62 | - PHP_ME( tn3270, setstringat, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 63 | - PHP_ME( tn3270, cmpstringat, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 64 | - | |
| 65 | - PHP_ME( tn3270, getisprotected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 66 | - PHP_ME( tn3270, getisprotectedat, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 67 | - | |
| 68 | - PHP_ME( tn3270, action, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | |
| 69 | - | |
| 70 | - {NULL, NULL, NULL} | |
| 71 | -}; | |
| 72 | - | |
| 73 | -void tn3270_free_storage(void *object TSRMLS_DC) | |
| 74 | -{ | |
| 75 | - tn3270_object *obj = (tn3270_object *)object; | |
| 76 | - | |
| 77 | - trace("%s",__FUNCTION__); | |
| 78 | - | |
| 79 | - zend_object_std_dtor(&obj->std TSRMLS_CC); | |
| 80 | - delete obj->hSession; | |
| 81 | - | |
| 82 | - efree(obj); | |
| 83 | -} | |
| 84 | - | |
| 85 | -zend_object_value tn3270_create_handler(zend_class_entry *type TSRMLS_DC) | |
| 86 | -{ | |
| 87 | - zend_object_value retval; | |
| 88 | - tn3270_object * obj = (tn3270_object *) emalloc(sizeof(tn3270_object)); | |
| 89 | - | |
| 90 | - trace("%s",__FUNCTION__); | |
| 91 | - | |
| 92 | - memset(obj, 0, sizeof(tn3270_object)); | |
| 93 | - | |
| 94 | - zend_object_std_init( &(obj->std), type TSRMLS_CC ); | |
| 95 | - | |
| 96 | - // http://stackoverflow.com/questions/14105529/writing-a-c-extension-for-php-5-4-example-code-is-obsolete | |
| 97 | - // object_properties_init((zend_object*) &(obj->std), type); | |
| 98 | -#if PHP_VERSION_ID < 50399 | |
| 99 | - zend_hash_copy(obj->std.properties, &(type->default_properties),(copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval*)); | |
| 100 | -#else | |
| 101 | - object_properties_init(&obj->std, type); | |
| 102 | -#endif | |
| 103 | - | |
| 104 | - retval.handle = zend_objects_store_put(obj, NULL, tn3270_free_storage, NULL TSRMLS_CC); | |
| 105 | - retval.handlers = &tn3270_object_handlers; | |
| 106 | - | |
| 107 | - return retval; | |
| 108 | -} | |
| 109 | - | |
| 110 | -PHP_MINIT_FUNCTION(tn3270) | |
| 111 | -{ | |
| 112 | - zend_class_entry ce; | |
| 113 | - | |
| 114 | - trace("%s",__FUNCTION__); | |
| 115 | - | |
| 116 | - INIT_CLASS_ENTRY(ce, "tn3270", tn3270_methods); | |
| 117 | - | |
| 118 | - tn3270_ce = zend_register_internal_class(&ce TSRMLS_CC); | |
| 119 | - tn3270_ce->create_object = tn3270_create_handler; | |
| 120 | - | |
| 121 | - memcpy(&tn3270_object_handlers,zend_get_std_object_handlers(), sizeof(zend_object_handlers)); | |
| 122 | - tn3270_object_handlers.clone_obj = NULL; | |
| 123 | - | |
| 124 | - return SUCCESS; | |
| 125 | -} | |
| 126 | - | |
| 127 | -zend_module_entry lib3270_module_entry = | |
| 128 | -{ | |
| 129 | -#if ZEND_MODULE_API_NO >= 20010901 | |
| 130 | - STANDARD_MODULE_HEADER, | |
| 131 | -#endif | |
| 132 | - PHP3270_EXTNAME, | |
| 133 | - NULL, /* Functions */ | |
| 134 | - PHP_MINIT(tn3270), | |
| 135 | - NULL, /* MSHUTDOWN */ | |
| 136 | - NULL, /* RINIT */ | |
| 137 | - NULL, /* RSHUTDOWN */ | |
| 138 | - NULL, /* MINFO */ | |
| 139 | -#if ZEND_MODULE_API_NO >= 20010901 | |
| 140 | - PHP3270_EXTVER, | |
| 141 | -#endif | |
| 142 | - STANDARD_MODULE_PROPERTIES | |
| 143 | -}; | |
| 144 | - | |
| 145 | -// #ifdef COMPILE_DL_LIB3270 | |
| 146 | -extern "C" | |
| 147 | -{ | |
| 148 | - ZEND_GET_MODULE(lib3270) | |
| 149 | -} | |
| 150 | -// #endif | |
| 151 | - |
src/native/misc.cc
| ... | ... | @@ -1,139 +0,0 @@ |
| 1 | -/* | |
| 2 | - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | - * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | - * | |
| 6 | - * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | - * | |
| 8 | - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | - * Free Software Foundation. | |
| 11 | - * | |
| 12 | - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | - * obter mais detalhes. | |
| 16 | - * | |
| 17 | - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | - * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | - * | |
| 21 | - * Este programa está nomeado como main.cc e possui - linhas de código. | |
| 22 | - * | |
| 23 | - * Contatos: | |
| 24 | - * | |
| 25 | - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | - * | |
| 28 | - * Referências: | |
| 29 | - * | |
| 30 | - * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | - * | |
| 32 | - */ | |
| 33 | - | |
| 34 | - #include "php3270.h" | |
| 35 | - | |
| 36 | -/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 37 | - | |
| 38 | -PHP_METHOD(tn3270, connect) | |
| 39 | -{ | |
| 40 | - const char * host; | |
| 41 | - int szHost; | |
| 42 | - zend_bool wait = 0; | |
| 43 | - int rc = 0; | |
| 44 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 45 | - | |
| 46 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sb", &host, &szHost, &wait) == FAILURE) | |
| 47 | - RETURN_NULL(); | |
| 48 | - | |
| 49 | - if(szHost) | |
| 50 | - { | |
| 51 | - char text[szHost+1]; | |
| 52 | - strncpy(text,host,szHost); | |
| 53 | - text[szHost] = 0; | |
| 54 | - rc = obj->hSession->connect(text,wait); | |
| 55 | - } | |
| 56 | - else | |
| 57 | - { | |
| 58 | - rc = obj->hSession->connect(); | |
| 59 | - } | |
| 60 | - | |
| 61 | - RETURN_LONG(rc); | |
| 62 | -} | |
| 63 | - | |
| 64 | -PHP_METHOD(tn3270, disconnect) | |
| 65 | -{ | |
| 66 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 67 | - RETURN_LONG(obj->hSession->disconnect()); | |
| 68 | -} | |
| 69 | - | |
| 70 | -PHP_METHOD(tn3270, waitforready) | |
| 71 | -{ | |
| 72 | - long seconds; | |
| 73 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 74 | - | |
| 75 | - // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 76 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | |
| 77 | - RETURN_NULL(); | |
| 78 | - | |
| 79 | - RETURN_LONG(obj->hSession->wait_for_ready((int) seconds)); | |
| 80 | -} | |
| 81 | - | |
| 82 | -PHP_METHOD(tn3270, waity) | |
| 83 | -{ | |
| 84 | - long seconds; | |
| 85 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 86 | - | |
| 87 | - // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 88 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | |
| 89 | - RETURN_NULL(); | |
| 90 | - | |
| 91 | - RETURN_LONG(obj->hSession->wait((int) seconds)); | |
| 92 | -} | |
| 93 | - | |
| 94 | -PHP_METHOD(tn3270, wait) | |
| 95 | -{ | |
| 96 | - long seconds; | |
| 97 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 98 | - | |
| 99 | - // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 100 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | |
| 101 | - RETURN_NULL(); | |
| 102 | - | |
| 103 | - RETURN_LONG(obj->hSession->wait((int) seconds)); | |
| 104 | -} | |
| 105 | - | |
| 106 | - | |
| 107 | -PHP_METHOD(tn3270, iterate) | |
| 108 | -{ | |
| 109 | - zend_bool wait = 0; | |
| 110 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 111 | - | |
| 112 | - // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 113 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", &wait) == FAILURE) | |
| 114 | - RETURN_NULL(); | |
| 115 | - | |
| 116 | - RETURN_LONG(obj->hSession->iterate(wait)); | |
| 117 | -} | |
| 118 | - | |
| 119 | -PHP_METHOD(tn3270, action) | |
| 120 | -{ | |
| 121 | - | |
| 122 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 123 | - | |
| 124 | - const char * text; | |
| 125 | - int szText; | |
| 126 | - | |
| 127 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &text, &szText) == FAILURE) | |
| 128 | - RETURN_NULL(); | |
| 129 | - | |
| 130 | - if(!szText) | |
| 131 | - RETURN_NULL(); | |
| 132 | - | |
| 133 | - char buffer[szText+1]; | |
| 134 | - memcpy(buffer,text,szText); | |
| 135 | - buffer[szText] = 0; | |
| 136 | - | |
| 137 | - RETURN_LONG(obj->hSession->action(buffer)); | |
| 138 | - | |
| 139 | -} |
src/native/set.cc
| ... | ... | @@ -1,88 +0,0 @@ |
| 1 | -/* | |
| 2 | - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | - * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | - * | |
| 6 | - * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | - * | |
| 8 | - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | - * Free Software Foundation. | |
| 11 | - * | |
| 12 | - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | - * obter mais detalhes. | |
| 16 | - * | |
| 17 | - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | - * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | - * | |
| 21 | - * Este programa está nomeado como set.cc e possui - linhas de código. | |
| 22 | - * | |
| 23 | - * Contatos: | |
| 24 | - * | |
| 25 | - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | - * | |
| 28 | - * Referências: | |
| 29 | - * | |
| 30 | - * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | - * | |
| 32 | - */ | |
| 33 | - | |
| 34 | - #include "php3270.h" | |
| 35 | - | |
| 36 | -/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 37 | - | |
| 38 | -PHP_METHOD(tn3270, pfkey) | |
| 39 | -{ | |
| 40 | - long id; | |
| 41 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 42 | - | |
| 43 | - // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 44 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) | |
| 45 | - RETURN_NULL(); | |
| 46 | - | |
| 47 | - RETURN_LONG(obj->hSession->pfkey((int) id)); | |
| 48 | -} | |
| 49 | - | |
| 50 | -PHP_METHOD(tn3270, pakey) | |
| 51 | -{ | |
| 52 | - long id; | |
| 53 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 54 | - | |
| 55 | - // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 56 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) | |
| 57 | - RETURN_NULL(); | |
| 58 | - | |
| 59 | - RETURN_LONG(obj->hSession->pakey((int) id)); | |
| 60 | -} | |
| 61 | - | |
| 62 | -PHP_METHOD(tn3270, enter) | |
| 63 | -{ | |
| 64 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 65 | - RETURN_LONG(obj->hSession->enter()); | |
| 66 | -} | |
| 67 | - | |
| 68 | -PHP_METHOD(tn3270, setstringat) | |
| 69 | -{ | |
| 70 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 71 | - long row; | |
| 72 | - long col; | |
| 73 | - const char * text; | |
| 74 | - int szText; | |
| 75 | - | |
| 76 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls", &row, &col, &text, &szText) == FAILURE) | |
| 77 | - RETURN_NULL(); | |
| 78 | - | |
| 79 | - if(!szText) | |
| 80 | - RETURN_NULL(); | |
| 81 | - | |
| 82 | - char buffer[szText+1]; | |
| 83 | - memcpy(buffer,text,szText); | |
| 84 | - buffer[szText] = 0; | |
| 85 | - | |
| 86 | - RETURN_LONG(obj->hSession->set_string_at(row,col,buffer)); | |
| 87 | -} | |
| 88 | - |
| ... | ... | @@ -0,0 +1,87 @@ |
| 1 | +/* | |
| 2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | + * | |
| 6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | + * | |
| 8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | + * Free Software Foundation. | |
| 11 | + * | |
| 12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | + * obter mais detalhes. | |
| 16 | + * | |
| 17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | + * | |
| 21 | + * Este programa está nomeado como php3270.h e possui - linhas de código. | |
| 22 | + * | |
| 23 | + * Contatos: | |
| 24 | + * | |
| 25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | + * | |
| 28 | + * Referências: | |
| 29 | + * | |
| 30 | + * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | + * | |
| 32 | + */ | |
| 33 | + | |
| 34 | +#ifndef PHP3270_INCLUDED | |
| 35 | + | |
| 36 | + #define PHP3270_INCLUDED 1 | |
| 37 | + | |
| 38 | + #define PHP3270_EXTNAME "@PACKAGE_NAME@" | |
| 39 | + #define PHP3270_EXTVER "@PACKAGE_VERSION@" | |
| 40 | + | |
| 41 | + extern "C" | |
| 42 | + { | |
| 43 | + #include "php.h" | |
| 44 | + } | |
| 45 | + | |
| 46 | + extern zend_module_entry lib3270_module_entry; | |
| 47 | + #define phpext_lib3270_ptr &lib3270_module_entry; | |
| 48 | + | |
| 49 | + // 3270 session methods | |
| 50 | + PHP_METHOD(tn3270,__construct); | |
| 51 | + PHP_METHOD(tn3270,connect); | |
| 52 | + PHP_METHOD(tn3270,disconnect); | |
| 53 | + PHP_METHOD(tn3270,isconnected); | |
| 54 | + PHP_METHOD(tn3270,isready); | |
| 55 | + PHP_METHOD(tn3270,waitforready); | |
| 56 | + PHP_METHOD(tn3270,wait); | |
| 57 | + PHP_METHOD(tn3270,iterate); | |
| 58 | + | |
| 59 | + PHP_METHOD(tn3270,pfkey); | |
| 60 | + PHP_METHOD(tn3270,pakey); | |
| 61 | + PHP_METHOD(tn3270,enter); | |
| 62 | + | |
| 63 | + PHP_METHOD(tn3270,getstringat); | |
| 64 | + PHP_METHOD(tn3270,setstringat); | |
| 65 | + PHP_METHOD(tn3270,cmpstringat); | |
| 66 | + | |
| 67 | + PHP_METHOD(tn3270,getisprotected); | |
| 68 | + PHP_METHOD(tn3270,getisprotectedat); | |
| 69 | + | |
| 70 | + PHP_METHOD(tn3270,action); | |
| 71 | + | |
| 72 | + #undef PACKAGE_NAME | |
| 73 | + #undef PACKAGE_VERSION | |
| 74 | + #undef HAVE_MALLOC_H | |
| 75 | + #include <pw3270/class.h> | |
| 76 | + | |
| 77 | + // PHP object | |
| 78 | + using namespace PW3270_NAMESPACE; | |
| 79 | + | |
| 80 | + struct tn3270_object | |
| 81 | + { | |
| 82 | + zend_object std; | |
| 83 | + session * hSession; | |
| 84 | + }; | |
| 85 | + | |
| 86 | + | |
| 87 | +#endif // PHP_LIB3270_INCLUDED | ... | ... |
| ... | ... | @@ -0,0 +1,88 @@ |
| 1 | +/* | |
| 2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
| 3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
| 4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | |
| 5 | + * | |
| 6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
| 7 | + * | |
| 8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
| 9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
| 10 | + * Free Software Foundation. | |
| 11 | + * | |
| 12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
| 13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
| 14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
| 15 | + * obter mais detalhes. | |
| 16 | + * | |
| 17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
| 18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
| 19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
| 20 | + * | |
| 21 | + * Este programa está nomeado como set.cc e possui - linhas de código. | |
| 22 | + * | |
| 23 | + * Contatos: | |
| 24 | + * | |
| 25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
| 26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
| 27 | + * | |
| 28 | + * Referências: | |
| 29 | + * | |
| 30 | + * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | |
| 31 | + * | |
| 32 | + */ | |
| 33 | + | |
| 34 | + #include "php3270.h" | |
| 35 | + | |
| 36 | +/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | |
| 37 | + | |
| 38 | +PHP_METHOD(tn3270, pfkey) | |
| 39 | +{ | |
| 40 | + long id; | |
| 41 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 42 | + | |
| 43 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 44 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) | |
| 45 | + RETURN_NULL(); | |
| 46 | + | |
| 47 | + RETURN_LONG(obj->hSession->pfkey((int) id)); | |
| 48 | +} | |
| 49 | + | |
| 50 | +PHP_METHOD(tn3270, pakey) | |
| 51 | +{ | |
| 52 | + long id; | |
| 53 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 54 | + | |
| 55 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | |
| 56 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) | |
| 57 | + RETURN_NULL(); | |
| 58 | + | |
| 59 | + RETURN_LONG(obj->hSession->pakey((int) id)); | |
| 60 | +} | |
| 61 | + | |
| 62 | +PHP_METHOD(tn3270, enter) | |
| 63 | +{ | |
| 64 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 65 | + RETURN_LONG(obj->hSession->enter()); | |
| 66 | +} | |
| 67 | + | |
| 68 | +PHP_METHOD(tn3270, setstringat) | |
| 69 | +{ | |
| 70 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | |
| 71 | + long row; | |
| 72 | + long col; | |
| 73 | + const char * text; | |
| 74 | + int szText; | |
| 75 | + | |
| 76 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls", &row, &col, &text, &szText) == FAILURE) | |
| 77 | + RETURN_NULL(); | |
| 78 | + | |
| 79 | + if(!szText) | |
| 80 | + RETURN_NULL(); | |
| 81 | + | |
| 82 | + char buffer[szText+1]; | |
| 83 | + memcpy(buffer,text,szText); | |
| 84 | + buffer[szText] = 0; | |
| 85 | + | |
| 86 | + RETURN_LONG(obj->hSession->set_string_at(row,col,buffer)); | |
| 87 | +} | |
| 88 | + | ... | ... |