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