/* load a matrix of integer values */ bool CIndexManager::LoadIntVectorVector(const CString& FileName, CVector<CIntVector>& Target, bool Verbose){ Target.RemoveAll(); static CIntVector EmptyVector; bool Intervalled = false; CMMapFile FastFile(FileName); if (! FastFile.MMap(MMAP_READOPENMODE)) return false; long fSize = FastFile.GetSize(); if (fSize && FastFile.GetMem()) { m_Progress.Init(10, Verbose); CString Line; while (FastFile.ReadLine(&Line) >= 0) { if (g_pHandler->GetSignalSigterm()) return false; m_Progress.Show(FastFile.GetOffset(), fSize, Verbose); if (!Line.GetLength()) { Target += EmptyVector; continue; } int PrevPos = 0; int IntervalPos = -1; CIntVector LineVector; for (register int Pos = 0; Pos <= (int) Line.GetLength(); Pos++) { if ((Pos == (int) Line.GetLength())||(Line[Pos] == ' ')) { if (IntervalPos >= 0) { LineVector._AppendInt(Line.GetInt(PrevPos, IntervalPos - PrevPos), Line.GetInt(IntervalPos+1, Pos - IntervalPos-1)); IntervalPos = -1; } else { if (Intervalled) LineVector._AppendElt(Line.GetInt(PrevPos, Pos - PrevPos)); else LineVector.AddElt(Line.GetInt(PrevPos, Pos - PrevPos)); } PrevPos = Pos + 1; } else if (Line[Pos] == '-') { if (!Intervalled) Intervalled = true; IntervalPos = Pos; } } Target += LineVector; } m_Progress.Finish(Verbose); } cout << "[" << Target.GetSize() << " lines]" << endl; return true; }
CString CSite::Map(const CString& String, const CVector<CString>& Vector) { CString Result; int DPos = String.Pos('$'); int i, PPos=0; CString MidValue; while (DPos >= 0) { String.Mid(PPos, DPos - PPos, &MidValue); Result += MidValue; i = ++DPos; while ((i < (int) String.GetLength()) && isdigit(String[i])) i++; PPos = i; if (i != DPos) { i = String.GetInt(DPos, i - DPos); if (i>=0) { if ((int) Vector.GetSize() > i) Result+=Vector[i]; } } DPos = String.Pos('$', DPos); } String.Mid(PPos, String.GetLength(), &MidValue); Result+=MidValue; return Result; }
bool CDate::EncodeSimpleDate(const CString& Date, struct tm& Result, bool bUsEncoding) { memset(& Result, 0, sizeof(struct tm)); if ((unsigned int) Date.GetLength() == sizeof("DDMMYY") - 1) { if (bUsEncoding) Result.tm_mday = Date.GetInt(2, 2); else Result.tm_mday = Date.GetInt(0, 2); if (bUsEncoding) Result.tm_mon = Date.GetInt(0, 2) - 1; else Result.tm_mon = Date.GetInt(2, 2) - 1; Result.tm_year = Date.GetInt(4, 2); if (Result.tm_year < 70) Result.tm_year += 100; } else if ((unsigned int) Date.GetLength() == sizeof("DDMMYYYY") - 1) { if (bUsEncoding) Result.tm_mday = Date.GetInt(2, 2); else Result.tm_mday = Date.GetInt(0, 2); if (bUsEncoding) Result.tm_mon = Date.GetInt(0, 2) - 1; else Result.tm_mon = Date.GetInt(2, 2) - 1; Result.tm_year = Date.GetInt(4, 4) - 1900; } else if ((unsigned int) Date.GetLength() == sizeof("DD/MM/YY") - 1) { if (bUsEncoding) Result.tm_mday = Date.GetInt(3, 2); else Result.tm_mday = Date.GetInt(0, 2); if (bUsEncoding) Result.tm_mon = Date.GetInt(0, 2) - 1; else Result.tm_mon = Date.GetInt(3, 2) - 1; Result.tm_year = Date.GetInt(6, 2); if (Result.tm_year < 70) Result.tm_year += 100; } else if ((unsigned int) Date.GetLength() == sizeof("DD/MM/YYYY") - 1) { if (bUsEncoding) Result.tm_mday = Date.GetInt(3, 2); else Result.tm_mday = Date.GetInt(0, 2); if (bUsEncoding) Result.tm_mon = Date.GetInt(0, 2) - 1; else Result.tm_mon = Date.GetInt(3, 2) - 1; Result.tm_year = Date.GetInt(6, 4) - 1900; } else { return false; } Result.tm_hour = 0; Result.tm_min = 0; Result.tm_sec = 0; Trace(tagDateTime, levVerbose, ("CDate:: EncodeSimpleDate - %d:%d:%d", Result.tm_mon, Result.tm_mday, Result.tm_year)); return true; }