pyTradutor.cpp 1.54 KB
/**
 * Essa classe invoca os metodos do tradutor em Python
 * Onde efetua a tradução do texto passado por parametro
 *
 * @author Erickson Silva
 * @date 14/10/2013
 *
 */


#include "pyTradutor.h"

namespace Tradutor {
    PyTradutor::PyTradutor() {
	    DPRINTF("Done!\n");



    }
    PyTradutor::~PyTradutor() {
		Py_Finalize();
    	/**Py_Initialize();
    	Py_DECREF(pName); 
	    Py_DECREF(pModule); 
	    Py_DECREF(pDict);
	    Py_DECREF(pFunc); 
	    Py_DECREF(pArgs);
	    Py_DECREF(pResult);
	    Py_Finalize();**/
    	DDDPRINTF("PyTranslator finalized!\n");
    }

/**
* Traduz um texto (char * input) para uma string contendo a
* traducao para glosa
*
* @param input texto de entrada
* @return string contendo os tokens em glosa traduzidos.
**/	
	char * PyTradutor::convertStringToGlosa(const char * input) {

	   	if(!isRunning){
 	   		Py_Initialize();
	      	pName = PyString_FromString("ModuleTranslate");
	      	assert(pName!=NULL);
	      	pModule = PyImport_Import(pName);
    	    PyErr_Print();
	      	assert(pModule!=NULL);
	      	pDict = PyModule_GetDict(pModule);
	      	PyErr_Print();
	      	assert(pDict!=NULL);
	      	pFunc = PyDict_GetItemString(pDict, "iniciar");
	      	PyErr_Print();
	      	assert(pFunc!=NULL);
	      	isRunning = 1;
	    }

	    if(pFunc){
	    	pArgs = PyTuple_Pack(1,PyString_FromString(input));
	    	PyErr_Print();
	        assert(pArgs!=NULL);
	    	pResult = PyObject_CallObject(pFunc, pArgs);
	    	PyErr_Print();
	  	    assert(pResult!=NULL);
	    	return PyString_AsString(pResult);
	    }
	}
}