/* * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a * aplicativos mainframe. Registro no INPI sob o nome G3270. * * Copyright (C) <2008> * * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela * Free Software Foundation. * * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para * obter mais detalhes. * * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin * St, Fifth Floor, Boston, MA 02110-1301 USA * * Este programa está nomeado como get.cc e possui - linhas de código. * * Contatos: * * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) * * Referências: * * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ * */ #include "php3270.h" /*--[ Implement ]--------------------------------------------------------------------------------------------------*/ PHP_METHOD(tn3270, isconnected) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); RETURN_BOOL(obj->hSession->is_connected()); } PHP_METHOD(tn3270, isready) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); RETURN_BOOL(obj->hSession->is_ready()); } PHP_METHOD(tn3270, getstringat) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); long row; long col; long sz; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &row, &col, &sz) == FAILURE) RETURN_NULL(); string str = obj->hSession->get_string_at(row,col,sz); trace("String = [%s]",str.c_str()); RETURN_STRING(str.c_str(),1); } PHP_METHOD(tn3270, cmpstringat) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); long row; long col; const char * text; int szText; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls", &row, &col, &text, &szText) == FAILURE) RETURN_NULL(); if(!szText) RETURN_NULL(); char buffer[szText+1]; memcpy(buffer,text,szText); buffer[szText] = 0; RETURN_LONG(obj->hSession->cmp_string_at(row,col,buffer)); } PHP_METHOD(tn3270, getisprotected) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); long baddr; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &baddr) == FAILURE) RETURN_NULL(); RETURN_LONG(obj->hSession->get_is_protected(baddr)); } PHP_METHOD(tn3270, getisprotectedat) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); long row; long col; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &row, &col) == FAILURE) RETURN_NULL(); RETURN_LONG(obj->hSession->get_is_protected_at(row,col)); } PHP_METHOD(tn3270, getversion) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); string str = obj->hSession->get_version(); trace("String = [%s]",str.c_str()); RETURN_STRING(str.c_str(),1); } PHP_METHOD(tn3270, getrevision) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); string str = obj->hSession->get_revision(); trace("String = [%s]",str.c_str()); RETURN_STRING(str.c_str(),1); } PHP_METHOD(tn3270, getname) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); string str = obj->hSession->get_session_name(); trace("String = [%s]",str.c_str()); RETURN_STRING(str.c_str(),1); } PHP_METHOD(tn3270, __tostring) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); string str; try { str = obj->hSession->get_contents(); } catch(std::exception &e) { str.clear(); } trace("String = [%s]",str.c_str()); RETURN_STRING(str.c_str(),1); } PHP_METHOD(tn3270, __get) { tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); const char * text; int szText; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &text, &szText) == FAILURE) RETURN_NULL(); if(!strncasecmp("online",text,szText)) { RETURN_BOOL(obj->hSession->is_connected()); } else if(!strncasecmp("ready",text,szText)) { RETURN_BOOL(obj->hSession->is_ready()); } else if(!strncasecmp("sslstate",text,szText)) { RETURN_LONG((unsigned long) obj->hSession->get_secure()); } else if(!strncasecmp("message",text,szText)) { RETURN_LONG((unsigned long) obj->hSession->get_program_message()); } else if(!strncasecmp("name",text,szText)) { string str = obj->hSession->get_session_name(); RETURN_STRING(str.c_str(),1); } RETURN_BOOL(0); }