Commit 80da8535e2a5b799e11e01b350707d2ba084480e
1 parent
a083088a
Exists in
master
and in
1 other branch
Modifica pyTradutor para chamar PortGlosa
Showing
2 changed files
with
108 additions
and
52 deletions
Show diff stats
tradutor/src/pyTradutor.cpp
| 1 | +//***************************************************************** | |
| 2 | +/* | |
| 3 | + VLibras: Automatic contents translator from Portuguese to LIBRAS | |
| 4 | + | |
| 5 | + Copyright (c) 2015 Gustavo Sobral, Erickson Silva, Leonardo Araújo | |
| 6 | + VLibras-Core group at LAViD, Federal University of Paraiba | |
| 7 | +*/ | |
| 8 | +//***************************************************************** | |
| 9 | + | |
| 1 | 10 | /** |
| 2 | - * Essa classe invoca os metodos do tradutor em Python | |
| 3 | - * Onde efetua a tradução do texto passado por parametro | |
| 4 | - * | |
| 5 | - * @author Erickson Silva | |
| 6 | - * @date 14/10/2013 | |
| 7 | - * | |
| 11 | + * \file pyTradutor.cpp | |
| 12 | + * \authors Erickson Silva, Gustavo Sobral | |
| 13 | + * \date Janeiro 2015 | |
| 8 | 14 | */ |
| 9 | 15 | |
| 16 | +#include "../include/pyTradutor.hpp" | |
| 10 | 17 | |
| 11 | -#include "pyTradutor.h" | |
| 18 | +PyTradutor::PyTradutor() | |
| 19 | +{ | |
| 20 | + // Initialize the Python interpreter | |
| 21 | + Py_Initialize(); | |
| 22 | + // Type conversion between C++ string to Py string | |
| 23 | + pName = PyString_FromString("PortGlosa"); | |
| 24 | + assert(pName!=NULL); | |
| 25 | + // Loads the script name saved in 'pName' | |
| 26 | + pModule = PyImport_Import(pName); | |
| 27 | + PyErr_Print(); | |
| 28 | + assert(pModule!=NULL); | |
| 29 | + // Returns the dictionary object that implements the namespace pModule | |
| 30 | + pDict = PyModule_GetDict(pModule); | |
| 31 | + PyErr_Print(); | |
| 32 | + assert(pDict!=NULL); | |
| 33 | + // Return the object from dictionary pDict which has a key 'iniciar' | |
| 34 | + pFunc = PyDict_GetItemString(pDict, "traduzir"); | |
| 35 | + PyErr_Print(); | |
| 36 | + assert(pFunc!=NULL); | |
| 37 | +} | |
| 12 | 38 | |
| 13 | -namespace Tradutor { | |
| 14 | - PyTradutor::PyTradutor() { | |
| 15 | - DPRINTF("Done!\n"); | |
| 16 | - } | |
| 17 | - PyTradutor::~PyTradutor() { | |
| 18 | - Py_DECREF(pName); | |
| 19 | - Py_DECREF(pModule); | |
| 20 | - Py_DECREF(pDict); | |
| 21 | - Py_DECREF(pFunc); | |
| 22 | - Py_DECREF(pArgs); | |
| 23 | - Py_DECREF(pResult); | |
| 24 | - DDDPRINTF("PyTranslator finalized!\n"); | |
| 25 | - } | |
| 39 | +PyTradutor::~PyTradutor() | |
| 40 | +{ | |
| 41 | + // Free the allocated memory and finalize the Python interpreter | |
| 42 | + Py_Finalize(); | |
| 43 | +} | |
| 26 | 44 | |
| 27 | -/** | |
| 28 | -* Traduz um texto (char * input) para uma string contendo a | |
| 29 | -* traducao para glosa | |
| 30 | -* | |
| 31 | -* @param input texto de entrada | |
| 32 | -* @return string contendo os tokens em glosa traduzidos. | |
| 33 | -**/ | |
| 34 | - char * PyTradutor::convertStringToGlosa(const char * input) { | |
| 35 | - if(!isRunning){ | |
| 36 | - Py_Initialize(); | |
| 37 | - pName = PyString_FromString("ModuleTranslate"); | |
| 38 | - assert(pName!=NULL); | |
| 39 | - pModule = PyImport_Import(pName); | |
| 40 | - PyErr_Print(); | |
| 41 | - assert(pModule!=NULL); | |
| 42 | - pDict = PyModule_GetDict(pModule); | |
| 43 | - PyErr_Print(); | |
| 44 | - assert(pDict!=NULL); | |
| 45 | - pFunc = PyDict_GetItemString(pDict, "iniciar"); | |
| 46 | - PyErr_Print(); | |
| 47 | - assert(pFunc!=NULL); | |
| 48 | - isRunning = 1; | |
| 49 | - } | |
| 50 | - pArgs = PyTuple_Pack(1,PyString_FromString(input)); | |
| 51 | - PyErr_Print(); | |
| 52 | - assert(pArgs!=NULL); | |
| 53 | - pResult = PyObject_CallObject(pFunc, pArgs); | |
| 54 | - PyErr_Print(); | |
| 55 | - assert(pResult!=NULL); | |
| 56 | - return PyString_AsString(pResult); | |
| 57 | - } | |
| 58 | -} | |
| 59 | 45 | \ No newline at end of file |
| 46 | +char * PyTradutor::convertStringToGlosa(const char * input) | |
| 47 | +{ | |
| 48 | + // Generates a new Tuple object with size '1' and value 'input' (converted) | |
| 49 | + pArgs = PyTuple_Pack(1, PyString_FromString(input)); | |
| 50 | + PyErr_Print(); | |
| 51 | + assert(pArgs!=NULL); | |
| 52 | + // Call the callable object 'pFunc' with arguments given by the tuple 'pArgs' | |
| 53 | + pResult = PyObject_CallObject(pFunc, pArgs); | |
| 54 | + PyErr_Print(); | |
| 55 | + assert(pResult!=NULL); | |
| 56 | + // Converts the string Python type to C++ | |
| 57 | + return PyString_AsString(pResult); | |
| 58 | +} | ... | ... |
| ... | ... | @@ -0,0 +1,57 @@ |
| 1 | +//***************************************************************** | |
| 2 | +/* | |
| 3 | + VLibras: Automatic contents translator from Portuguese to LIBRAS | |
| 4 | + | |
| 5 | + Copyright (c) 2015 Gustavo Sobral, Erickson Silva, Leonardo Araújo | |
| 6 | + VLibras-Core group at LAViD, Federal University of Paraiba | |
| 7 | +*/ | |
| 8 | +//***************************************************************** | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * \file pyTradutor.cpp | |
| 12 | + * \authors Erickson Silva, Gustavo Sobral | |
| 13 | + * \date Janeiro 2015 | |
| 14 | + */ | |
| 15 | + | |
| 16 | +#include "../include/pyTradutor.hpp" | |
| 17 | + | |
| 18 | +PyTradutor::PyTradutor() | |
| 19 | +{ | |
| 20 | + // Initialize the Python interpreter | |
| 21 | + Py_Initialize(); | |
| 22 | + // Type conversion between C++ string to Py string | |
| 23 | + pName = PyString_FromString("PortGlosa"); | |
| 24 | + assert(pName!=NULL); | |
| 25 | + // Loads the script name saved in 'pName' | |
| 26 | + pModule = PyImport_Import(pName); | |
| 27 | + PyErr_Print(); | |
| 28 | + assert(pModule!=NULL); | |
| 29 | + // Returns the dictionary object that implements the namespace pModule | |
| 30 | + pDict = PyModule_GetDict(pModule); | |
| 31 | + PyErr_Print(); | |
| 32 | + assert(pDict!=NULL); | |
| 33 | + // Return the object from dictionary pDict which has a key 'iniciar' | |
| 34 | + pFunc = PyDict_GetItemString(pDict, "traduzir"); | |
| 35 | + PyErr_Print(); | |
| 36 | + assert(pFunc!=NULL); | |
| 37 | +} | |
| 38 | + | |
| 39 | +PyTradutor::~PyTradutor() | |
| 40 | +{ | |
| 41 | + // Free the allocated memory and finalize the Python interpreter | |
| 42 | + Py_Finalize(); | |
| 43 | +} | |
| 44 | + | |
| 45 | +char * PyTradutor::convertStringToGlosa(const char * input) | |
| 46 | +{ | |
| 47 | + // Generates a new Tuple object with size '1' and value 'input' (converted) | |
| 48 | + pArgs = PyTuple_Pack(1, PyString_FromString(input)); | |
| 49 | + PyErr_Print(); | |
| 50 | + assert(pArgs!=NULL); | |
| 51 | + // Call the callable object 'pFunc' with arguments given by the tuple 'pArgs' | |
| 52 | + pResult = PyObject_CallObject(pFunc, pArgs); | |
| 53 | + PyErr_Print(); | |
| 54 | + assert(pResult!=NULL); | |
| 55 | + // Converts the string Python type to C++ | |
| 56 | + return PyString_AsString(pResult); | |
| 57 | +} | ... | ... |