Commit dd244268eb473dfbc96612a6fb6243dfa9328e54

Authored by Perry Werneck
1 parent 8cc442a7
Exists in master

Copiando fontes do módulo PHP original.

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