/** * edit: * @author Erickson Silva * @date 14/10/2013 * */ /** * Essa classe converte portugues para Glosa * * @author Derzu Omaia * @date 21/10/2009 * */ #include "tradutorPortGlosa.h" namespace Tradutor { TradutorPortGlosa::TradutorPortGlosa() { listeners = new list(); pyTradutor = new PyTradutor(); // Inicia o mutex mutex = (pthread_mutex_t *) malloc( sizeof(pthread_mutex_t) ); pthread_mutex_init(mutex, NULL); PRINTL(util::_DEBUG, "Translator Done!\n"); } TradutorPortGlosa::~TradutorPortGlosa() { delete listeners; delete pyTradutor; if (mutex) { int ret = pthread_mutex_destroy(mutex); if (ret) PRINTL(util::_ERROR, "Erro, destruindo mutex.\n"); free(mutex); } PRINTL(util::_DEBUG, "Translator finalized!\n"); } void TradutorPortGlosa::addListener(ListenerTradutor* listener) { listeners->push_back(listener); } void TradutorPortGlosa::removeListener(ListenerTradutor* listener) { listeners->remove(listener); } void TradutorPortGlosa::notifyListeners(char* traducao) { for (list::iterator i = listeners->begin() ; i != listeners->end() ; i++){ (*i)->notifyTranslation(traducao); } } /* // Implemento o metodo da classe que estou ouvindo, classe ExtratorCC void TradutorPortGlosa::notificaCC(unsigned char * cc, int64_t pts) { // Mutex para evitar bug multiplas chamadas dos notificadores pthread_mutex_lock(mutex); traduz(cc); pthread_mutex_unlock(mutex); }*/ // Implemento o metodo da classe que estou ouvindo. void TradutorPortGlosa::notifyInput(unsigned char * texto) { // Mutex para evitar bug multiplas chamadas dos notificadores pthread_mutex_lock(mutex); traduz(texto); pthread_mutex_unlock(mutex); } void TradutorPortGlosa::traduz(unsigned char * texto) { char* glosa = portuguesToGlosaVector((const char *)texto); notifyListeners(glosa); } /** * Traduz um texto (char * input) para um vetor de tokens contendo a * traducao para glosa * * @param input texto de entrada * @return vetor de string contendo os tokens em glosa traduzidos. **/ char* TradutorPortGlosa::portuguesToGlosaVector(const char * input) { char * glosa; // Faz a tradução de portugues para glosa glosa = pyTradutor->convertStringToGlosa(input); return glosa; } }