pyTradutor.cpp
1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**
* 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);
}
}