Beispiel #1
0
/* 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;
}
Beispiel #2
0
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;
    
}
Beispiel #3
0
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;
}