From aff1fde60cb3fab520864ad5de902f649a6d3a41 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Fri, 11 Apr 2014 02:07:45 +0000 Subject: [PATCH] Implementando extensão php --- src/php/get.cc | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/php/main.cc | 6 ++++++ src/php/php3270.cbp | 2 ++ src/php/php3270.h | 6 ++++++ src/php/set.cc | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 129 insertions(+), 0 deletions(-) create mode 100644 src/php/get.cc create mode 100644 src/php/set.cc diff --git a/src/php/get.cc b/src/php/get.cc new file mode 100644 index 0000000..2c9b47f --- /dev/null +++ b/src/php/get.cc @@ -0,0 +1,49 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como get.cc e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + * Referências: + * + * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ + * + */ + + #include "php3270.h" + +/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ + +PHP_METHOD(tn3270, isconnected) +{ + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); + RETURN_BOOL(obj->hSession->is_connected()); +} + +PHP_METHOD(tn3270, isready) +{ + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); + RETURN_BOOL(obj->hSession->is_ready()); +} + diff --git a/src/php/main.cc b/src/php/main.cc index 1a5264c..1d0814f 100644 --- a/src/php/main.cc +++ b/src/php/main.cc @@ -46,6 +46,12 @@ zend_function_entry tn3270_methods[] = PHP_ME( tn3270, connect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) PHP_ME( tn3270, disconnect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) + PHP_ME( tn3270, isconnected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) + PHP_ME( tn3270, isready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) + + PHP_ME( tn3270, pfkey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) + PHP_ME( tn3270, pakey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) + PHP_ME( tn3270, enter, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) {NULL, NULL, NULL} }; diff --git a/src/php/php3270.cbp b/src/php/php3270.cbp index 5647f8c..5f71afe 100644 --- a/src/php/php3270.cbp +++ b/src/php/php3270.cbp @@ -48,10 +48,12 @@ + + diff --git a/src/php/php3270.h b/src/php/php3270.h index 8b50ab3..8d1b94a 100644 --- a/src/php/php3270.h +++ b/src/php/php3270.h @@ -50,6 +50,12 @@ PHP_METHOD(tn3270,__construct); PHP_METHOD(tn3270,connect); PHP_METHOD(tn3270,disconnect); + PHP_METHOD(tn3270,isconnected); + PHP_METHOD(tn3270,isready); + + PHP_METHOD(tn3270,pfkey); + PHP_METHOD(tn3270,pakey); + PHP_METHOD(tn3270,enter); #undef PACKAGE_NAME diff --git a/src/php/set.cc b/src/php/set.cc new file mode 100644 index 0000000..3982921 --- /dev/null +++ b/src/php/set.cc @@ -0,0 +1,66 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como set.cc e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + * Referências: + * + * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ + * + */ + + #include "php3270.h" + +/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ + +PHP_METHOD(tn3270, pfkey) +{ + long id; + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); + + // http://www.php.net/manual/pt_BR/internals2.funcs.php + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) + RETURN_NULL(); + + RETURN_LONG(obj->hSession->pfkey((int) id)); +} + +PHP_METHOD(tn3270, pakey) +{ + long id; + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); + + // http://www.php.net/manual/pt_BR/internals2.funcs.php + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &id) == FAILURE) + RETURN_NULL(); + + RETURN_LONG(obj->hSession->pakey((int) id)); +} + +PHP_METHOD(tn3270, enter) +{ + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); + RETURN_LONG(obj->hSession->enter()); +} -- libgit2 0.21.2