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,7 +15,7 @@ dnl Compute the canonical host-system type | ||
| 15 | AC_CANONICAL_HOST | 15 | AC_CANONICAL_HOST |
| 16 | 16 | ||
| 17 | dnl Put macro definitions here (though they aren't used). | 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 | dnl Initialise automake stuff. | 20 | dnl Initialise automake stuff. |
| 21 | AM_INIT_AUTOMAKE | 21 | AM_INIT_AUTOMAKE |
| @@ -368,7 +368,7 @@ dnl --------------------------------------------------------------------------- | @@ -368,7 +368,7 @@ dnl --------------------------------------------------------------------------- | ||
| 368 | dnl AC_CONFIG_FILES(Makefile) | 368 | dnl AC_CONFIG_FILES(Makefile) |
| 369 | dnl AC_CONFIG_FILES(src/extension/Makefile) | 369 | dnl AC_CONFIG_FILES(src/extension/Makefile) |
| 370 | dnl AC_CONFIG_FILES(src/plugin/Makefile) | 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 | dnl --------------------------------------------------------------------------- | 373 | dnl --------------------------------------------------------------------------- |
| 374 | dnl Output the generated config.status script. | 374 | dnl Output the generated config.status script. |
| @@ -0,0 +1,40 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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,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,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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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,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,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,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,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,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 @@ | @@ -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 @@ | @@ -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 | + |