// добавление нового излома в список и сортировка bool AddGap(void) { uchar i,j; uint k; // проверяем на наличие этого излома в списке for (i=0; i<GetGapSize(); i++) { GetGapDate(i); if ((tiGap.bMonth == tiT.bMonth) && (tiGap.bDay == tiT.bDay)) { // заменяем тип излома, не добавляя его в список SetGapDate(i); SaveCache(&chGaps); return(0); } } // записываем излом в конец списка tiGap = tiT; SetGapDate(ibX); // сортировка for(i=0; i<=GetGapSize(); i++) { for(j=0; j<=GetGapSize(); j++) { GetGapDate(i); k = GetDayIndexMD(tiGap.bMonth, tiGap.bDay); GetGapDate(j); if (k < GetDayIndexMD(tiGap.bMonth, tiGap.bDay)) { GetGapDate(i); time ti = tiGap; GetGapDate(j); SetGapDate(i); tiGap = ti; SetGapDate(j); } } } // увеличиваем размер списка SetGapSize(GetGapSize() + 1); SaveCache(&chGaps); return(1); }
void ResetGaps(void) { boGapsFlag = false; SaveCache(&chGapsFlag); memset(&gaGaps, 0, sizeof(gaGaps)); tiGap = tiGap0; SetGapDate(0); tiGap = tiGap1; SetGapDate(1); SetGapSize(2); SaveCache(&chGaps); }
// удаление излома из списка void DelGap(void) { uchar i; // если удаляем не последний излом if (ibX < GetGapSize() - 1) { // сдвигаем последующие изломи вверх for (i=ibX; i<GetGapSize() - 1; i++) { GetGapDate(i + 1); SetGapDate(i); } } // иначе уменьшаем индекс текущего излома else if (ibX != 0) ibX--; // уменьшаем количество изломов if (GetGapSize() != 0) SetGapSize(GetGapSize() - 1); SaveCache(&chGaps); }