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 | 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. | ... | ... |
... | ... | @@ -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 @@ |
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 @@ |
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 |
... | ... | @@ -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 @@ |
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 @@ |
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 | - |
... | ... | @@ -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 @@ |
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 | + | ... | ... |