pyTradutor.cpp 1.44 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_DECREF(pName); 
	    Py_DECREF(pModule); 
	    Py_DECREF(pDict);
	    Py_DECREF(pFunc); 
	    Py_DECREF(pArgs);
	    Py_DECREF(pResult);
    	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;
	    }
    	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);
	}
}