void TBowMd::SaveTxtCfy(const PSOut& SOut, const TFltStrPrV& WgtCatNmPrV){ for (int WCPrN=0; WCPrN<WgtCatNmPrV.Len(); WCPrN++){ double Wgt=WgtCatNmPrV[WCPrN].Val1; TStr CatNm=WgtCatNmPrV[WCPrN].Val2; //printf("%d. %.3f '%s'\n", 1+WCPrN, Wgt, CatNm.CStr()); TChA Ln; Ln+=TInt::GetStr(1+WCPrN, "%d."); Ln+=TFlt::GetStr(Wgt, " %.3f"); Ln+=TStr::GetStr(CatNm, " '%s'"); SOut->PutStr(Ln); SOut->PutLn(); } }
///////////////////////////////////////////////// // Wireless-BMP void TWbmp::PutMultiByteInt(const PSOut& SOut, const uint& Val){ if (Val<128){ SOut->PutCh(uchar(Val)); } else if (Val<128*128){ uchar MsCh=uchar(Val/128); MsCh+=uchar(128); uchar LsCh=uchar(Val%128); SOut->PutCh(MsCh); SOut->PutCh(LsCh); } else { Fail; } }
void TWbmp::SaveWbmp(const PSOut& SOut) const { // write header SOut->PutCh(uchar(0)); // TypeField SOut->PutCh(uchar(0)); // FixHeaderField PutMultiByteInt(SOut, GetWidth()); // Width PutMultiByteInt(SOut, GetHeight()); // Height // write bitmap for (int Y=0; Y<GetHeight(); Y++){ TB8Set BSet; int X=0; while (X<GetWidth()){ if (GetPxVal(X,Y)){BSet.Incl(7-X%8);} X++; if (X%8==0){SOut->PutCh(BSet.GetUCh()); BSet=0;} } if (X%8!=0){SOut->PutCh(BSet.GetUCh());} } }
void TCpDoc::SaveForNlpWin(const PSOut& SOut){ SOut->PutStr("DocId:"); SOut->PutStr(DocNm); SOut->PutLn(); SOut->PutStr(HeadlineStr); SOut->PutLn(); for (int ParStrN=0; ParStrN<ParStrV.Len(); ParStrN++){ SOut->PutStr(ParStrV[ParStrN]); SOut->PutLn(); } }
void TBowMd::SaveXmlCfy(const PSOut& SOut, const TFltStrPrV& WgtCatNmPrV){ SOut->PutStr("<Classification>"); SOut->PutLn(); for (int WCPrN=0; WCPrN<WgtCatNmPrV.Len(); WCPrN++){ double Wgt=WgtCatNmPrV[WCPrN].Val1; TStr CatNm=WgtCatNmPrV[WCPrN].Val2; //printf("%d. %.3f '%s'\n", 1+WCPrN, Wgt, CatNm.CStr()); SOut->PutStr("<Category "); TChA Ln; Ln+=TInt::GetStr(1+WCPrN, "Rank=\"%d\""); Ln+=TFlt::GetStr(Wgt, " Weight=\"%.3f\""); Ln+=TStr::GetStr(CatNm, " Category=\"%s\""); SOut->PutStr(Ln); SOut->PutStr("/>"); SOut->PutLn(); } SOut->PutStr("</Classification>"); SOut->PutLn(); }
void TTransCorpus::SaveTxt(const TStr& OutFBase, const TStr& OutOrgFNm, const TStr& OutTransFNm, const TStr& OutRefTransFNm, TStrV& OrgFNmV, TStrV& TransFNmV, TStrV& RefTransFNmV, const int& LinesPerFile) { // prepare filenames OrgFNmV.Clr(); TransFNmV.Clr(); RefTransFNmV.Clr(); if (!OutOrgFNm.Empty()) { OrgFNmV.Add(GetOutFNm(OutFBase, 0, LinesPerFile, OutOrgFNm)); } if (!OutTransFNm.Empty()) { TransFNmV.Add(GetOutFNm(OutFBase, 0, LinesPerFile, OutTransFNm)); } if (!OutRefTransFNm.Empty()) { RefTransFNmV.Add(GetOutFNm(OutFBase, 0, LinesPerFile, OutRefTransFNm)); } // open files PSOut OrgSOut = !OutOrgFNm.Empty() ? TFOut::New(OrgFNmV.Last()) : PSOut(); PSOut TransSOut = !OutTransFNm.Empty() ? TFOut::New(TransFNmV.Last()) : PSOut(); PSOut RefTransSOut = !OutRefTransFNm.Empty() ? TFOut::New(RefTransFNmV.Last()) : PSOut(); // check which are given const bool IsOrgP = !OrgSOut.Empty() && IsOrg(); const bool IsTransP = !TransSOut.Empty() && IsTrans(); const bool IsRefTransP = !RefTransSOut.Empty() && IsRefTrans(); // print warnings if (!IsOrgP) { printf("No original sentences!\n"); } if (!IsTransP) { printf("No machine translation sentences!\n"); } if (!IsRefTransP) { printf("No reference translation sentences!\n"); } // go over all the sentences and store them in the file TIntV SentIdV; GetSentIdV(SentIdV); for (int SentIdN = 0; SentIdN < SentIdV.Len(); SentIdN++) { const int SentId = SentIdV[SentIdN]; if (IsOrgP) { OrgSOut->PutStrLn(GetOrgStr(SentId)); } if (IsTransP) { TransSOut->PutStrLn(GetTransStr(SentId)); } if (IsRefTransP) { RefTransSOut->PutStrLn(GetRefTransStrV(SentId)[0]); } // should we break and go to next file? if ((LinesPerFile!=-1) && (SentIdN>0) && (SentIdN % LinesPerFile == 0)) { // prepare filenames if (!OutOrgFNm.Empty()) { OrgFNmV.Add(GetOutFNm(OutFBase, SentIdN, LinesPerFile, OutOrgFNm)); } if (!OutTransFNm.Empty()) { TransFNmV.Add(GetOutFNm(OutFBase, SentIdN, LinesPerFile, OutTransFNm)); } if (!OutRefTransFNm.Empty()) { RefTransFNmV.Add(GetOutFNm(OutFBase, SentIdN, LinesPerFile, OutRefTransFNm)); } // open next files files OrgSOut = !OutOrgFNm.Empty() ? TFOut::New(OrgFNmV.Last()) : PSOut(); TransSOut = !OutTransFNm.Empty() ? TFOut::New(TransFNmV.Last()) : PSOut(); RefTransSOut = !OutRefTransFNm.Empty() ? TFOut::New(RefTransFNmV.Last()) : PSOut(); } } }
void TPartialGS::Dump(const TStr& FName) { PSOut out = TFOut::New(FName); for (int i = 0; i < R.Len(); i++) { for (int j = 0; j < i; j++) { out->PutStr(TFlt::GetStr(0.0, 20, 18)); out->PutCh(' '); } for (int j = 0; j < R[i].Len(); j++) { out->PutStr(TFlt::GetStr(R[i][j], 20, 18)); out->PutCh(' '); } out->PutCh('\n'); } }
int main(int argc, char* argv[]) { TEnv Env(argc, argv); TStr PrefixPath = Env.GetArgs() > 1 ? Env.GetArg(1) : TStr(""); double ts1 = Tick(); TTableContext Context; TVec<TPair<PTable,TStr> > NodeTblV = TVec<TPair<PTable,TStr> >(); TVec<TPair<PTable, int> > EdgeTblV = TVec<TPair<PTable, int> >(); Schema NodeSchema = Schema(); Schema EdgeSchema = Schema(); LoadFlickrTables(PrefixPath, Context, NodeTblV, NodeSchema, EdgeTblV, EdgeSchema); double ts2 = Tick(); THash<TStr,TStrH> NStrH; TIntStrH NIdH; CreateIdHashes(NodeTblV, NStrH, NIdH); double ts3 = Tick(); PSVNet Graph = LoadGraphMNet<PSVNet>(NodeTblV, EdgeTblV, NStrH, NIdH); double ts4 = Tick(); int nExps = 10; int nTriads = 0; for (int i = 0; i < nExps; i++) { nTriads = TSnap::GetTriads(Graph); } double ts5 = Tick(); StdOut->PutStrFmtLn("Triads %d", nTriads); PSOut TimeOut = TFOut::New(PrefixPath + TStr("time.txt"), true); TimeOut->PutStrFmtLn("===== Triad Counting - PSVNet ====="); TimeOut->PutStrLn(Env.GetCmLn()); TimeOut->PutStrFmtLn("Input Time = %f", GetCPUTimeUsage(ts1, ts2)); TimeOut->PutStrFmtLn("Preprocessing Time = %f", GetCPUTimeUsage(ts2, ts3)); TimeOut->PutStrFmtLn("Conversion Time = %f", GetCPUTimeUsage(ts3, ts4)); TimeOut->PutStrFmtLn("Computing Time = %f", GetCPUTimeUsage(ts4, ts5)/nExps); return 0; }
void TSAppSrvFun::LogReqRes(const TStrKdV& FldNmValPrV, const PHttpResp& HttpResp) { if (LogRqFolder == "") return; try { TDir::GenDir(LogRqFolder); TStr TimeNow = TTm::GetCurLocTm().GetWebLogDateTimeStr(true); TimeNow.ChangeChAll(':', '.'); PSOut Output = TFOut::New(LogRqFolder + "/" + TimeNow + ".txt", false); Output->PutStr(FunNm.CStr()); Output->PutCh('\n'); for (int N=0; N < FldNmValPrV.Len(); N++) Output->PutStrFmt(" %s: %s\n", FldNmValPrV[N].Key.CStr(), FldNmValPrV[N].Dat.CStr()); Output->PutCh('\n'); Output->PutStr(HttpResp->GetBodyAsStr(), false); } catch (...) { /*const PNotify& Notify = RqEnv->GetWebSrv()->GetNotify(); Notify->OnStatus("Unable to log request for function '" + GetFunNm() + "'!");*/ } }
void OnNotify(const TNotifyType& Type, const TStr& MsgStr){ TStr LogStr=TNotify::GetTypeStr(Type)+": "+MsgStr; LogSOut->PutStr(LogStr); LogSOut->PutDosLn(); printf("%s\n", LogStr.CStr()); }
int main(int argc, char* argv[]) { // PSVNet PGraph = PSVNet::New(); // PCVNet PGraph = PCVNet::New(); PMVNet PGraph = PMVNet::New(); int NTypeId1 = PGraph->AddNType(TStr("Photo")); int NTypeId2 = PGraph->AddNType(TStr("User")); int NTypeId3 = PGraph->AddNType(TStr("Tag")); int ETypeId1 = PGraph->AddEType(TStr("EType1"), TStr("Photo"), TStr("User")); int ETypeId2 = PGraph->AddEType(TStr("EType2"), TStr("User"), TStr("Photo")); int ETypeId3 = PGraph->AddEType(TStr("EType3"), TStr("User"), TStr("Photo")); int ETypeId4 = PGraph->AddEType(TStr("EType4"), TStr("Photo"), TStr("Tag")); StdOut->PutStrFmtLn("EdgeTypeId %d - %d - %d", ETypeId1, ETypeId2, ETypeId4); StdOut->PutStrFmtLn("TypeId %d - %d - %d", PGraph->AddNType(TStr("User")), PGraph->GetNTypeId(TStr("Photo")), PGraph->GetNTypeId(TStr("User"))); int NId1 = PGraph->AddNode(1, 0); int NId2 = PGraph->AddNode(1, 1); int NId3 = PGraph->AddNode(0, 1); int NId4 = PGraph->AddNode(1, 2); int NId5 = PGraph->AddNode(0, 0); int NId6 = PGraph->AddNode(2, 1); StdOut->PutStrFmtLn("Nodes %d %d %d %d %d %d", NId1, NId2, NId3, NId4, NId5, NId6); StdOut->PutStrFmtLn("Size = %d", PGraph->GetNodes()); for (TMVNet::TNodeI Iter = PGraph->BegNI(); Iter < PGraph->EndNI(); Iter++) { StdOut->PutStrFmtLn("Iter = %d, %d", Iter.GetTypeId(), Iter.GetId()); } // StdOut->PutStrFmtLn("Edges %d", EId1); // StdOut->PutStrFmtLn("IsEdge(%d) = %d", EId1, PGraph->IsEdge(EId1)); // StdOut->PutStrFmtLn("IsEdge(%d) = %d", 1, PGraph->IsEdge(1)); // int EId; // StdOut->PutStrFmtLn("IsEdge(%d, %d) = %d", NId1, NId2, PGraph->IsEdge(NId1, NId2, true)); // StdOut->PutStrFmtLn("IsEdge(%d, %d) = %d - %d", NId1, NId2, PGraph->IsEdge(NId1, NId2, EId, true), EId); // StdOut->PutStrFmtLn("IsEdge(%d, %d) = %d", NId1, NId3, PGraph->IsEdge(NId1, NId3, true)); // StdOut->PutStrFmtLn("IsEdge(%d, %d) = %d - %d", NId1, NId3, PGraph->IsEdge(NId1, NId3, EId, true), EId); int EId1 = PGraph->AddEdge(NId1, NId3, ETypeId2); int EId2 = PGraph->AddEdge(NId3, NId2, ETypeId1); int EId3 = PGraph->AddEdge(NId5, NId2, ETypeId1); int EId4 = PGraph->AddEdge(NId1, NId5, ETypeId2, 10); int EId5 = PGraph->AddEdge(NId3, NId1, ETypeId1); int EId6 = PGraph->AddEdge(NId3, NId6, ETypeId4); int EId7 = PGraph->AddEdge(NId3, NId6, ETypeId4); for (TMVNet::TEdgeI Iter = PGraph->BegEI(); Iter < PGraph->EndEI(); Iter++) { StdOut->PutStrFmtLn("Edge = %d:%d", Iter.GetTypeId(), Iter.GetId()); } StdOut->PutStrFmtLn("Edge Size = %d", PGraph->GetEdges()); StdOut->PutStrFmtLn("Degree %d-%d", PGraph->GetNI(NId3).GetInDeg(), PGraph->GetNI(NId3).GetOutDeg()); for (int i = 0; i < PGraph->GetNI(NId3).GetOutDeg(); i++) { StdOut->PutStrFmtLn("Edge %d", PGraph->GetNI(NId3).GetOutEId(i)); } TStrV NTypeNameV; NTypeNameV.Add(TStr("Photo")); NTypeNameV.Add(TStr("User")); PMVNet PSubGraph = PGraph->GetSubGraph(NTypeNameV); StdOut->PutStrFmtLn("Size = %d", PSubGraph->GetNodes()); StdOut->PutStrFmtLn("Edge Size = %d", PSubGraph->GetEdges()); for (TMVNet::TEdgeI Iter = PSubGraph->BegEI(); Iter < PSubGraph->EndEI(); Iter++) { StdOut->PutStrFmtLn("Edge = %d:%d", Iter.GetTypeId(), Iter.GetId()); } PGraph->DelEdge(EId5); PGraph->DelEdge(EId3); StdOut->PutStrFmtLn("Edge Size = %d", PGraph->GetEdges()); PGraph->DelEdge(NId3, NId6, true); for (TSVNet::TEdgeI Iter = PGraph->BegEI(); Iter < PGraph->EndEI(); Iter++) { StdOut->PutStrFmtLn("Edge = %d:%d", Iter.GetTypeId(), Iter.GetId()); } StdOut->PutStrFmtLn("Edge Size = %d", PGraph->GetEdges()); PGraph->DelNode(NId2); StdOut->PutStrFmtLn("Size = %d", PGraph->GetNodes()); for (TSVNet::TNodeI Iter = PGraph->BegNI(); Iter < PGraph->EndNI(); Iter++) { StdOut->PutStrFmtLn("Node = %d:%d", Iter.GetTypeId(), Iter.GetId()); } for (TSVNet::TEdgeI Iter = PGraph->BegEI(); Iter < PGraph->EndEI(); Iter++) { StdOut->PutStrFmtLn("Edge = %d:%d", Iter.GetTypeId(), Iter.GetId()); } StdOut->PutStrFmtLn("Edge Size = %d", PGraph->GetEdges()); TIntV ShortestDists; StdOut->PutStrFmtLn("Depth = %d", TSnap::GetShortestDistances(PGraph, NId1, false, false, ShortestDists)); for (TSVNet::TNodeI Iter = PGraph->BegNI(); Iter < PGraph->EndNI(); Iter++) { int NId = Iter.GetId(); StdOut->PutStrFmtLn("Shortest Dist = %d:%d", NId, ShortestDists[NId]); } TIntFltH PageRankH; TSnap::GetPageRankMNetMP(PGraph, PageRankH, 0.849999999999998, 0.0001, 10); }
int main(int argc, char* argv[]) { TEnv Env(argc, argv); TStr PrefixPath = Env.GetArgs() > 1 ? Env.GetArg(1) : TStr(""); double ts1 = Tick(); TTableContext Context; TVec<PTable> NodeTblV = TVec<PTable>(); TVec<PTable> EdgeTblV = TVec<PTable>(); Schema NodeSchema = Schema(); Schema EdgeSchema = Schema(); LoadFlickrTables(PrefixPath, Context, NodeTblV, NodeSchema, EdgeTblV, EdgeSchema); double ts2 = Tick(); int ExpectedSz = 0; for (TVec<PTable>::TIter it = NodeTblV.BegI(); it < NodeTblV.EndI(); it++) { PTable Table = *it; ExpectedSz += Table->GetNumRows(); } THash<TStr, TInt> Hash(ExpectedSz); TStrV OriNIdV(ExpectedSz); MergeNodeTables(NodeTblV, NodeSchema, Hash, OriNIdV); PTable EdgeTable = MergeEdgeTables(EdgeTblV, EdgeSchema, Hash, Context); double ts3 = Tick(); TStrV V; TStrV VE; VE.Add(EdgeSchema.GetVal(2).GetVal1()); PNEANet Graph = TSnap::ToNetwork<PNEANet>(EdgeTable, EdgeSchema.GetVal(0).GetVal1(), EdgeSchema.GetVal(1).GetVal1(), V, V, VE, aaLast); double ts4 = Tick(); //int nExps = 1; int nExps = 40; TIntFltH PageRankResults; for (int i = 0; i < nExps; i++) { PageRankResults = TIntFltH(ExpectedSz); #ifdef USE_OPENMP TSnap::GetWeightedPageRankMP2(Graph, PageRankResults, EdgeSchema.GetVal(2).GetVal1(), 0.849999999999998, 0.0001, 10); #else TSnap::GetWeightedPageRank(Graph, PageRankResults, EdgeSchema.GetVal(2).GetVal1(), 0.849999999999998, 0.0001, 10); #endif } double ts5 = Tick(); PSOut ResultOut = TFOut::New(PrefixPath + TStr("page-rank-results.tsv")); for (TIntFltH::TIter it = PageRankResults.BegI(); it < PageRankResults.EndI(); it++) { ResultOut->PutStrFmtLn("%s\t%f9", OriNIdV[it.GetKey()].CStr(), it.GetDat().Val); } double ts6 = Tick(); bool isPar = false; #ifdef USE_OPENMP isPar = true; #endif // PSOut FeaturesOut = TFOut::New(PrefixPath + "features.txt"); // FeaturesOut->PutStrFmtLn("Photo %d", PPhotoTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Users %d", PUserTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Tags %d", PTagTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Comments %d", PCommentTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Locations %d", PLocationTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Photo - Owner %d", PPhotoOwnerTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Photo - Comment %d", PPhotoCommentTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Photo - Location %d", PPhotoLocationTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Comment - User %d", PCommentUserTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Comment - User %d", PCommentUserTbl->GetNumRows().Val); //// FeaturesOut->PutStrFmtLn("Photo - Tagger %d", PPhotoTaggerTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Tagger - Tag %d", PTaggerTagTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Total number of nodes = %d", Graph->GetNodes()); // FeaturesOut->PutStrFmtLn("Total number of edges = %d", Graph->GetEdges()); PSOut TimeOut = TFOut::New(PrefixPath + TStr("time.txt"), true); TimeOut->PutStrFmtLn("Experiment Weighted - %s - %s", PrefixPath.CStr(), (isPar ? "Parallel" : "Sequential")); TimeOut->PutStrFmtLn("Input Time = %f", GetCPUTimeUsage(ts1, ts2)); TimeOut->PutStrFmtLn("Preprocessing Time = %f", GetCPUTimeUsage(ts2, ts3)); TimeOut->PutStrFmtLn("Conversion Time = %f", GetCPUTimeUsage(ts3, ts4)); TimeOut->PutStrFmtLn("Computing Time = %f", GetCPUTimeUsage(ts4, ts5)/nExps); TimeOut->PutStrFmtLn("Output Time = %f", GetCPUTimeUsage(ts5, ts6)); return 0; }
void TTransCorpus::SaveTransScript(const TStr& OutFBase, const TStr& OrgLang, const TStr& TransLang, const TStrV& OrgFNmV, const TStrV& RefTransFNmV) { const int FNms = OrgFNmV.Len(); IAssert(OrgFNmV.Len() == RefTransFNmV.Len()); // make tokenize PSOut TokSOut = TFOut::New(OutFBase + "_tokenize.sh"); for (int FNmN = 0; FNmN < FNms; FNmN++) { TokSOut->PutStrLn("tokenize.pl -lang=" + OrgLang + " " + OrgFNmV[FNmN].GetFBase() + " " + TStr::PutFExt(OrgFNmV[FNmN], ".tok").GetFBase()); TokSOut->PutStrLn("tokenize.pl -lang=" + TransLang + " " + RefTransFNmV[FNmN].GetFBase() + " " + TStr::PutFExt(RefTransFNmV[FNmN], ".tok").GetFBase()); } TokSOut->Flush(); // make align PSOut AlignSOut = TFOut::New(OutFBase + "_align.sh"); for (int FNmN = 0; FNmN < FNms; FNmN++) { AlignSOut->PutStrLn("ssal -f " + TStr::PutFExt(OrgFNmV[FNmN], ".tok").GetFBase() + " " + TStr::PutFExt(RefTransFNmV[FNmN], ".tok").GetFBase()); AlignSOut->PutStrLn("mv " + TStr::PutFExt(OrgFNmV[FNmN], ".tok.al").GetFBase() + " " + TStr::PutFExt(OrgFNmV[FNmN], ".al").GetFBase()); AlignSOut->PutStrLn("mv " + TStr::PutFExt(RefTransFNmV[FNmN], ".tok.al").GetFBase() + " " + TStr::PutFExt(RefTransFNmV[FNmN], ".al").GetFBase()); } AlignSOut->Flush(); // make lowercase PSOut LcSOut = TFOut::New(OutFBase + "_lowercase.sh"); for (int FNmN = 0; FNmN < FNms; FNmN++) { LcSOut->PutStrLn("lc-latin.pl " + TStr::PutFExt(OrgFNmV[FNmN], ".al").GetFBase() + " " + TStr::PutFExt(OrgFNmV[FNmN], ".lc").GetFBase()); LcSOut->PutStrLn("lc-latin.pl " + TStr::PutFExt(RefTransFNmV[FNmN], ".al").GetFBase() + " " + TStr::PutFExt(RefTransFNmV[FNmN], ".lc").GetFBase()); } LcSOut->Flush(); // rest -- script }
void TTransCorpus::SaveSgm(const TStr& OutOrgFNm, const TStr& OutTransFNm, const TStr& OutRefTransFNm) { // open files PSOut OrgSOut = !OutOrgFNm.Empty() ? TFOut::New(OutOrgFNm) : NULL; PSOut TransSOut = !OutTransFNm.Empty() ? TFOut::New(OutTransFNm) : NULL; PSOut RefTransSOut = !OutRefTransFNm.Empty() ? TFOut::New(OutRefTransFNm) : NULL; // check which are given const bool IsOrgP = !OrgSOut.Empty() && IsOrg(); const bool IsTransP = !TransSOut.Empty() && IsTrans(); const bool IsRefTransP = !RefTransSOut.Empty() && IsRefTrans(); // prepare headers if (IsOrgP) { OrgSOut->PutStrLn("<srcset setid=\"tmp\" srclang=\"source\" trglang=\"target\">"); OrgSOut->PutStrLn("<DOC docid=\"tmpdoc\">"); } if (IsTransP) { TransSOut->PutStrLn("<tstset setid=\"tmp\" srclang=\"source\" trglang=\"target\">"); TransSOut->PutStrLn("<DOC docid=\"tmpdoc\" sysid=\"trans\">"); } if (IsRefTransP) { RefTransSOut->PutStrLn("<refset setid=\"tmp\" srclang=\"source\" trglang=\"target\">"); RefTransSOut->PutStrLn("<DOC docid=\"tmpdoc\" sysid=\"ref\">"); } // output sentences TIntV SentIdV; GetSentIdV(SentIdV); for (int SentIdN = 0; SentIdN < SentIdV.Len(); SentIdN++) { const int SentId = SentIdV[SentIdN]; if (IsOrgP) { OrgSOut->PutStrLn(TStr::Fmt( "<p><seg id=\"%d\">%s</seg></p>", SentId, GetOrgStr(SentId).CStr())); } if (IsTransP) { TransSOut->PutStrLn(TStr::Fmt( "<p><seg id=\"%d\">%s</seg></p>", SentId, GetTransStr(SentId).CStr())); } if (IsRefTransP) { RefTransSOut->PutStrLn(TStr::Fmt( "<p><seg id=\"%d\">%s</seg></p>", SentId, GetRefTransStrV(SentId)[0].CStr())); } } // prepare footers if (IsOrgP) { OrgSOut->PutStrLn("</DOC>"); OrgSOut->PutStrLn("</srcset>"); } if (IsTransP) { TransSOut->PutStrLn("</DOC>"); TransSOut->PutStrLn("</tstset>"); } if (IsRefTransP) { RefTransSOut->PutStrLn("</DOC>"); RefTransSOut->PutStrLn("</refset>"); } }