Commit dd244268eb473dfbc96612a6fb6243dfa9328e54

Authored by Perry Werneck
1 parent 8cc442a7
Exists in master

Copiando fontes do módulo PHP original.

@@ -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.
pw3270-php5.cbp 0 → 100644
@@ -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>
src/config.h.in 0 → 100644
@@ -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
src/get.cc 0 → 100644
@@ -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  
src/init.cc 0 → 100644
@@ -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 +
src/main.cc 0 → 100644
@@ -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 +
src/misc.cc 0 → 100644
@@ -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 -  
src/php3270.h.in 0 → 100644
@@ -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
src/set.cc 0 → 100644
@@ -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 +