bool _test0(LSHandle* lshandle,LSMessage *message, void *user_data) { const char* str = LSMessageGetPayload(message); if( !str ) return false; QtJsonAbstract * j = QtJsonAbstract::jsonParse(QString(str)); if (j) { QList<QPair<QString,QVariant> > allContents = j->extractAll(); for (QtJsonAbstract::ContentsListIterator it = allContents.begin(); it != allContents.end();++it) { //qDebug() << "key = " << it->first; // if ((QMetaType::Type)(it->second.userType()) == qMetaTypeId<QtJsonAbstractVariant>()) //qDebug() << "\tval = " << it->second.value<QtJsonAbstractVariant>(); // else //qDebug() << "\tval = " << it->second << " , usertype = " << (QMetaType::Type)(it->second.userType()) << " , mytype = " << qMetaTypeId<QtJsonAbstractVariant>(); } QtJsonAbstract::throwAway(j); QtJsonAbstract * reply = QtJsonAbstract::create(); reply->add("returnValue",true); LSError lserror; LSErrorInit(&lserror); if (!LSMessageReply( lshandle, message,ccstr(reply->toString()), &lserror )) { LSErrorPrint (&lserror, stderr); LSErrorFree(&lserror); } QtJsonAbstract::throwAway(reply); } else { QtJsonAbstract * reply = QtJsonAbstract::create(); reply->add("returnValue",true); LSError lserror; LSErrorInit(&lserror); if (!LSMessageReply( lshandle, message,ccstr(reply->toString()), &lserror )) { LSErrorPrint (&lserror, stderr); LSErrorFree(&lserror); } QtJsonAbstract::throwAway(reply); } return true; }
void print_u(utterance_struct u) { for (INTPTR i = 0; i < u.phr_vector.GetSize(); i++) for (INTPTR i1 = 0; i1 < u.phr_vector[i].word_vector.GetSize(); i1++) { fprintf(stderr, "%s\n\n", ccstr(u.phr_vector[i].word_vector[i1].mi.m_szRoot)); for (INTPTR i2 = 0; i2 < u.phr_vector[i].word_vector[i1].syl_vector.GetSize(); i2++) { fprintf(stderr, "\t%s\n", ccstr(u.phr_vector[i].word_vector[i1].syl_vector[i2].syl)); for (INTPTR i3 = 0; i3 < u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_vector.GetSize(); i3++) { CFSWString w = u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_vector[i3].phone; while (w.GetLength() < 6) w += sp; fprintf(stderr, "\t\t%s", ccstr(w)); wprintf(L"%i %i %i %i\t", u.phra_c, u.word_c, u.syl_c, u.phone_c); wprintf(L"%i %i %i [%i]\t", u.phr_vector[i].word_c, u.phr_vector[i].syl_c, u.phr_vector[i].phone_c, u.phr_vector[i].utt_p); wprintf(L"%i %i [%i %i]\t", u.phr_vector[i].word_vector[i1].syl_c, u.phr_vector[i].word_vector[i1].phone_c, u.phr_vector[i].word_vector[i1].utt_p, u.phr_vector[i].word_vector[i1].phr_p ); wprintf(L"%i [%i %i %i]\t", u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_c, u.phr_vector[i].word_vector[i1].syl_vector[i2].utt_p, u.phr_vector[i].word_vector[i1].syl_vector[i2].phr_p, u.phr_vector[i].word_vector[i1].syl_vector[i2].word_p ); phone_struct p = u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_vector[i3]; wprintf(L"[%i %i %i %i]\t", p.utt_p, p.phr_p, p.word_p, p.syl_p); wprintf(L"{ %i }", u.phr_vector[i].word_vector[i1].syl_vector[i2].stress); wprintf(L"\n"); } } } wprintf(L"\n"); }
CFSArray<CFSWString> do_all(CFSWString utt, bool print_label, bool print_utt) { CFSArray<CFSWString> res; CFSArray<CPTWord> PTW; utterance_struct u; u.s = utt; u.syl_c = 0; u.phone_c = 0; u.phra_c = do_phrases(u); INTPTR word_count = 0; if (print_utt) fprintf(stderr, "%s\n", ccstr(utt)); for (INTPTR i = 0; i < u.phr_vector.GetSize(); i++) { u.phr_vector[i].utt_p = i; phrase2words(u.phr_vector[i], PTW); word_count += u.phr_vector[i].word_c; } CFSArray<CMorphInfos> MRs = Disambiguator.Disambiguate(Linguistic.AnalyzeSentense(PTW)); CFSArray<CMorphInfo> words; for (INTPTR i = 0; i < MRs.GetSize(); i++) //for (INTPTR i1 = 0; i1 < MRs[i].m_MorphInfo.GetSize(); i1++) words.AddItem(MRs[i].m_MorphInfo[0]); //Ühestamistulemuse ühestamise koht u.word_c = words.GetSize(); word_struct w; INTPTR utt_phone_c = 1; INTPTR syl_utt_p = 1; INTPTR phone_utt_p = 1; for (INTPTR i = 0; i < u.phr_vector.GetSize(); i++) { u.phr_vector[i].utt_p = i + 1; INTPTR syl_phr_p = 1; INTPTR phone_phr_p = 1; INTPTR phrase_pho_c = 1; for (INTPTR i1 = 0; i1 < u.phr_vector[i].word_c; i1++) { w.utt_p = utt_phone_c++; w.phr_p = i1 + 1; w.mi = words[0]; w.mi.m_szRoot += make_char_string(w.mi.m_szEnding) + w.mi.m_szClitic; w.mi.m_szRoot = w.mi.m_szRoot.ToLower(); // sidesõnad + ei välteta if ((CFSWString(w.mi.m_cPOS) == L"J") || (w.mi.m_szRoot == L"<ei")) w.mi.m_szRoot.Replace(L"<", L"", 1); do_syls(w); u.phr_vector[i].word_vector.AddItem(w); INTPTR phone_word_p = 1; INTPTR word_pho_c = 1; for (INTPTR i2 = 0; i2 < u.phr_vector[i].word_vector[i1].syl_vector.GetSize(); i2++) { u.syl_c++; u.phr_vector[i].syl_c++; u.phr_vector[i].word_vector[i1].syl_c++; u.phr_vector[i].word_vector[i1].syl_vector[i2].phr_p = syl_phr_p++; u.phr_vector[i].word_vector[i1].syl_vector[i2].utt_p = syl_utt_p++; INTPTR syl_phone_c = 1; do_phones(u.phr_vector[i].word_vector[i1].syl_vector[i2]); for (INTPTR i3 = 0; i3 < u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_vector.GetSize(); i3++) { u.phone_c++; u.phr_vector[i].phone_c = phrase_pho_c++; u.phr_vector[i].word_vector[i1].phone_c = word_pho_c++; u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_c = syl_phone_c++; phone_struct p = u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_vector[i3]; p.utt_p = phone_utt_p++; p.phr_p = phone_phr_p++; p.word_p = phone_word_p++; u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_vector[i3] = p; } } words.RemoveItem(0, 1); } } if (print_label) print_u(u); res = do_label(u); return res; }
CFSArray<CFSWString> do_all(CFSWString utt, bool print_label, bool print_utt) { CFSArray<CFSWString> res; CFSArray<CPTWord> PTW; utterance_struct u; u.s = utt.ToLower(); u.syl_c = 0; u.phone_c = 0; u.phra_c = do_phrases(u); INTPTR word_count = 0; if (print_utt) fprintf(stderr, "%s\n", ccstr(utt)); for (INTPTR i = 0; i < u.phr_vector.GetSize(); i++) { u.phr_vector[i].utt_p = i; phrase2words(u.phr_vector[i], PTW); word_count += u.phr_vector[i].word_c; } CFSArray<CMorphInfo> words; for (INTPTR i = 0; i < PTW.GetSize(); i++) { CMorphInfo MI; MI.m_szRoot = PTW[i].m_szWord; words.AddItem(MI); } u.word_c = words.GetSize(); word_struct w; INTPTR utt_phone_c = 1; INTPTR syl_utt_p = 1; INTPTR phone_utt_p = 1; for (INTPTR i = 0; i < u.phr_vector.GetSize(); i++) { u.phr_vector[i].utt_p = i + 1; INTPTR syl_phr_p = 1; INTPTR phone_phr_p = 1; INTPTR phrase_pho_c = 1; for (INTPTR i1 = 0; i1 < u.phr_vector[i].word_c; i1++) { w.utt_p = utt_phone_c++; w.phr_p = i1 + 1; w.mi = words[0]; w.mi.m_szRoot += make_char_string(w.mi.m_szEnding) + w.mi.m_szClitic; w.mi.m_szRoot = w.mi.m_szRoot.ToLower(); do_syls(w); u.phr_vector[i].word_vector.AddItem(w); INTPTR phone_word_p = 1; INTPTR word_pho_c = 1; for (INTPTR i2 = 0; i2 < u.phr_vector[i].word_vector[i1].syl_vector.GetSize(); i2++) { u.syl_c++; u.phr_vector[i].syl_c++; u.phr_vector[i].word_vector[i1].syl_c++; u.phr_vector[i].word_vector[i1].syl_vector[i2].phr_p = syl_phr_p++; u.phr_vector[i].word_vector[i1].syl_vector[i2].utt_p = syl_utt_p++; INTPTR syl_phone_c = 1; do_phones(u.phr_vector[i].word_vector[i1].syl_vector[i2]); for (INTPTR i3 = 0; i3 < u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_vector.GetSize(); i3++) { u.phone_c++; u.phr_vector[i].phone_c = phrase_pho_c++; u.phr_vector[i].word_vector[i1].phone_c = word_pho_c++; u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_c = syl_phone_c++; phone_struct p = u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_vector[i3]; p.utt_p = phone_utt_p++; p.phr_p = phone_phr_p++; p.word_p = phone_word_p++; u.phr_vector[i].word_vector[i1].syl_vector[i2].phone_vector[i3] = p; } } words.RemoveItem(0, 1); } } if (print_label) print_u(u); res = do_label(u); return res; }
unsigned int disassemble(unsigned int addr) { int d = get_memb(addr); int s, i; tt_u8 pb; char reg; const unsigned char *map = NULL; // Default for most undefined opcodes unsigned char sm = 0x10; // size_mode byte unsigned char oi = OP_XX; // opcode index FILE *stream = &ser0stream; if (d == 0x10) { d = get_memb(addr + 1); map = map1; } if (d == 0x11) { d = get_memb(addr + 1); map = map2; } if (map) { // Search for the opcode in map1 or map2 map -= 3; do { map += 3; if (pgm_read_byte(map) == d) { oi = pgm_read_byte(++map); sm = pgm_read_byte(++map); break; } } while (*map < 255); } else { // Lookup directly in map0 map = map0 + 2 * d; oi = pgm_read_byte(map++); sm = pgm_read_byte(map++); } s = sm >> 4; fprintf(stream, "%04X ", addr); for (i = 0; i < s; i++) { fputs(hex8str(get_memb(addr + i)), stream); fputc(' ', stream); } for (i = s; i < 4; i++) { fputs(" ", stream); } const char *ip = inst + oi * 4; for (i = 0; i < 4; i++) fputc(pgm_read_byte(ip++), stream); fputs(" ", stream); switch(sm & 15) { case 1: /* immediate */ fputs("#$", stream); if (s == 2) fputs(hex8str(get_memb(addr + 1)), stream); else fputs(hex16str(get_memw(addr + s - 2)), stream); break; case 2: /* direct */ fputs("$", stream); fputs(hex8str(get_memb(addr + s - 1)), stream); break; case 3: /* indexed */ pb = get_memb(addr + s - 1); reg = regi[(pb >> 5) & 0x03]; if (!(pb & 0x80)) { /* n4,R */ if (pb & 0x10) fprintf(stream, "-$%s,%c", hex8str(((pb & 0x0f) ^ 0x0f) + 1), reg); else fprintf(stream, "$%s,%c", hex8str(pb & 0x0f), reg); } else { if (pb & 0x10) fputc('[', stream); switch (pb & 0x0f) { case 0: /* ,R+ */ fprintf(stream, ",%c+", reg); break; case 1: /* ,R++ */ fprintf(stream, ",%c++", reg); break; case 2: /* ,-R */ fprintf(stream, ",-%c", reg); break; case 3: /* ,--R */ fprintf(stream, ",--%c", reg); break; case 4: /* ,R */ fprintf(stream, ",%c", reg); break; case 5: /* B,R */ fprintf(stream, "B,%c", reg); break; case 6: /* A,R */ fprintf(stream, "A,%c", reg); break; case 8: /* n7,R */ s += 1; fprintf(stream, "$%s,%c", hex8str(get_memb(addr + s - 1)), reg); break; case 9: /* n15,R */ s += 2; fprintf(stream, "$%s,%c", hex16str(get_memw(addr + s - 2)), reg); break; case 11: /* D,R */ fprintf(stream, "D,%c", reg); break; case 12: /* n7,PCR */ s += 1; fprintf(stream, "$%s,PCR", hex8str(get_memb(addr + s - 1))); break; case 13: /* n15,PCR */ s += 2; fprintf(stream, "$%s,PCR", hex16str(get_memw(addr + s - 2))); break; case 15: /* [n] */ s += 2; fprintf(stream, "$%s", hex16str(get_memw(addr + s - 2))); break; default: fputs("??", stream); break; } if (pb & 0x10) fputc(']', stream); } break; case 4: /* extended */ fprintf(stream, "$%s", hex16str(get_memw(addr + s - 2))); break; case 5: /* inherent */ pb = get_memb(addr + 1); switch (d) { case 0x1e: case 0x1f: /* exg tfr */ fprintf(stream, "%s,%s", exgi[(pb >> 4) & 0x0f], exgi[pb & 0x0f]); break; case 0x1a: case 0x1c: case 0x3c: /* orcc andcc cwai */ fprintf(stream, "#$%s=%s", hex8str(pb), ccstr(pb)); break; case 0x34: /* pshs */ { int p = 0; for (i = 0; i < 8; i++) { if (pb & 0x80) { if (p) fputc(',', stream); fputs(pshsregi[i], stream); p = 1; } pb <<= 1; } } break; case 0x35: /* puls */ { int p = 0; for (i = 7; i >= 0; i--) { if (pb & 0x01) { if (p) fputc(',', stream); fputs(pshsregi[i], stream); p = 1; } pb >>= 1; } } break; case 0x36: /* pshu */ { int p = 0; for (i = 0; i < 8; i++) { if (pb & 0x80) { if (p) fputc(',', stream); fputs(pshuregi[i], stream); p = 1; } pb <<= 1; } } break; case 0x37: /* pulu */ { int p = 0; for (i = 7; i >= 0; i--) { if (pb & 0x01) { if (p) fputc(',', stream); fputs(pshuregi[i], stream); p = 1; } pb >>= 1; } } break; } break; case 6: /* relative */ { tt_s16 v; if (s == 2) v = (tt_s16)(tt_s8)get_memb(addr + 1); else v = (tt_s16)get_memw(addr + s - 2); fprintf(stream, "$%s", hex16str(addr + (tt_u16)s + v)); break; } } fputc('\n', stream); return addr + s; }