void makeLexDic(JKArgs& args) { if(!args.is_set("src")||!args.is_set("tar")||!args.is_set("align")) usage(); string srcfilename=args.value("src"); string tarfilename=args.value("tar"); string alignfilename=args.value("align"); string s2tDicName="s2t.lex"; string t2sDicName="t2s.lex"; string weightFilename=""; if(args.is_set("w"))weightFilename=args.value("w"); if(args.is_set("s2t")) s2tDicName=args.value("s2t"); if(args.is_set("t2s")) t2sDicName=args.value("t2s"); ofstream s2t(s2tDicName.c_str()); ofstream t2s(t2sDicName.c_str()); Dic<double> s2tLexDic; Dic<double> t2sLexDic; makeLexDic(srcfilename,tarfilename,alignfilename,weightFilename,s2tLexDic,t2sLexDic); s2tLexDic.print(s2t); t2sLexDic.print(t2s); s2t.close(); t2s.close(); }
/* Debug: Ensure all registry calls do succeed and have valid parameters. * Shows a details message box otherwise. */ static __inline LONG regchk(LONG res, const char *pszFunc, const void *pszInfo, BOOL fInfoUnicode, const char *pszFile, unsigned int nLine) { if (res != ERROR_SUCCESS && res != ERROR_FILE_NOT_FOUND && res != ERROR_NO_MORE_ITEMS) { TCHAR szMsg[1024], *pszInfo2; char *pszErr; pszErr = GetWinErrorDescription(res); pszInfo2 = s2t(pszInfo, fInfoUnicode, FALSE); /* does NULL check */ mir_sntprintf(szMsg, TranslateT("Access failed:\n%.64hs(%.128s)\n%.250hs(%u)\n%.256hs (%u)"), pszFunc, pszInfo2, pszFile, nLine, pszErr, res); MessageBox(NULL, szMsg, TranslateT("Registry warning"), MB_OK | MB_ICONINFORMATION | MB_SETFOREGROUND | MB_TOPMOST | MB_TASKMODAL); if (pszErr != NULL) LocalFree(pszErr); mir_free(pszInfo2); /* does NULL check */ } return res; }
void MidiTest::testMTCWriter() { PhMidiTimeCodeWriter mtcWriter(PhTimeCodeType30); PhMidiInput midiIn; int quarterFrameCount = 0; unsigned char quarterFrameData = 255; connect(&midiIn, &PhMidiInput::quarterFrame, [&](unsigned char data) { quarterFrameCount++; quarterFrameData = data; }); QVERIFY(midiIn.open("testMTCWriter")); QVERIFY(mtcWriter.open("testMTCWriter")); mtcWriter.clock()->setTime(s2t("23:40:19:16", PhTimeCodeType30)); QThread::msleep(10); QCOMPARE(quarterFrameCount, 0); mtcWriter.clock()->setRate(1); PhFrame freq = PhTimeCode::getFps(PhTimeCodeType30) * 4; // => one quarter frame frequency mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 1); QCOMPARE((int)quarterFrameData, 0x02); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 2); QCOMPARE((int)quarterFrameData, 0x11); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 3); QCOMPARE((int)quarterFrameData, 0x23); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 4); QCOMPARE((int)quarterFrameData, 0x31); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 5); QCOMPARE((int)quarterFrameData, 0x48); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 6); QCOMPARE((int)quarterFrameData, 0x52); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 7); QCOMPARE((int)quarterFrameData, 0x67); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(mtcWriter.clock()->time(), s2t("23:40:19:18", PhTimeCodeType30)); QCOMPARE(quarterFrameCount, 8); QCOMPARE((int)quarterFrameData, 0x70 | (0x03 << 1) | 0x01); // timecode type info + hour high digit // Test changing the writer timecode type: mtcWriter.setTimeCodeType(PhTimeCodeType25); freq = PhTimeCode::getFps(PhTimeCodeType25) * 4; // => one quarter frame frequency mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 9); QCOMPARE((int)quarterFrameData, 0x01); // With 25 fps, the next timecode will be 23:40:19:17 mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 10); QCOMPARE((int)quarterFrameData, 0x11); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 11); QCOMPARE((int)quarterFrameData, 0x23); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 12); QCOMPARE((int)quarterFrameData, 0x31); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 13); QCOMPARE((int)quarterFrameData, 0x48); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 14); QCOMPARE((int)quarterFrameData, 0x52); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(quarterFrameCount, 15); QCOMPARE((int)quarterFrameData, 0x67); mtcWriter.clock()->tick(freq); QThread::msleep(10); QCOMPARE(mtcWriter.clock()->time(), s2t("23:40:19:17", PhTimeCodeType25)); QCOMPARE(quarterFrameCount, 16); QCOMPARE((int)quarterFrameData, 0x70 | (0x01 << 1) | 0x01); // timecode type info + hour high digit // Test changing speed to 0 mtcWriter.clock()->setRate(0); // No quarter frame message shall be sent anymore QThread::msleep(10); QCOMPARE(quarterFrameCount, 16); QThread::msleep(10); QCOMPARE(quarterFrameCount, 16); QThread::msleep(10); QCOMPARE(quarterFrameCount, 16); QThread::msleep(10); QCOMPARE(quarterFrameCount, 16); }