Exemplo n.º 1
0
ProfileManager::~ProfileManager()
{
    // If the profiles have been altered then write out the profile file
    if (Changed)
        SaveCache();

    ClearCache();
}
Exemplo n.º 2
0
void    ResetRecords(void)
{
  cdwKeyRecord = 0;
  SaveCache(&chKeyRecord);

  cdwSysRecord = 0;
  SaveCache(&chSysRecord);

  cdwDigRecord = 0;
  SaveCache(&chDigRecord);

  cdwImpRecord = 0;
  SaveCache(&chImpRecord);

  cdwModRecord = 0;
  SaveCache(&chModRecord);

  cdwPh2Record = 0;
  SaveCache(&chPh2Record);

  cdwAuxRecord = 0;
  SaveCache(&chAuxRecord);

  ResetRecordsDsbl();
}
Exemplo n.º 3
0
void    ResetFactors(void)
{
  uchar c;
  for (c=0; c<bCANALS; c++)
  {
    mpdbTransEng[c] = 1;
    mpdbPulseHou[c] = 500;

    mpdbCount[c] = 0;
    mpdbLosse[c] = 0;
  }

  for (c=0; c<bCANALS; c++)
  {
    mpdbPulseMnt[c] = mpdbPulseHou[c];
    mpdbLevel[c] = 1;

    mpdbTransCnt[c] = 1;
  }

  SaveCache(&chTransEng);
  SaveCache(&chTransCnt);

  SaveCache(&chPulseHou);
  SaveCache(&chPulseMnt);

  SaveCache(&chCount);
  SaveCache(&chLosse);
  SaveCache(&chLevel);
}
Exemplo n.º 4
0
void    NewBoundsAbs32(ulong  dwAbs)
{
  LoadCurrDigital(ibDig);

  uchar c;
  for (c=0; c<bCANALS; c++)
  {
    LoadPrevDigital(c);
    if (CompareCurrPrevLines(ibDig, c) == true)
    { 
      mpboStartCan[c] = true;
      mpcdwStartAbs32Can[c] = dwAbs;
    } 
  }

  SaveCache(&chStartCan);
  SaveCache(&chStartAbs32Can);
}
Exemplo n.º 5
0
bool    AddSysRecord(event  ev)
{
  if (IsRecordDisabled(ev)) return true;

  uint i = OpenRecord(SYS_RECORD, cdwSysRecord);

  reCurr.ti = *GetCurrTimeDate();
  reCurr.cdwRecord = cdwSysRecord++; SaveCache(&chSysRecord);
  reCurr.ev = ev;

  switch (ev)
  {
//    case EVE_CONTACTS3_START:
//    case EVE_CONTACTS3_COUNTER: memcpy(&reCurr.mpbBuff+0, &cbContact, sizeof(uchar));
//                                memcpy(&reCurr.mpbBuff+1, &cbContactMax, sizeof(uchar)); break;
//
//    case EVE_VALUE3_DOWN:     memcpy(&reCurr.mpbBuff+0, &reContactDown, sizeof(float)); break;
//    case EVE_VALUE3_UP:       memcpy(&reCurr.mpbBuff+0, &reContactUp, sizeof(float)); break;
//    case EVE_VALUE3_COUNTER:  memcpy(&reCurr.mpbBuff+0, &cbContactMax, sizeof(uchar)); break;
//
//    case EVE_CONTACTS3_0_ON:  memcpy(&reCurr.mpbBuff+0, &reContactRec, sizeof(float));
//                              memcpy(&reCurr.mpbBuff+4, &reContactUp, sizeof(float)); break;
//
//    case EVE_CONTACTS3_0_OFF: memcpy(&reCurr.mpbBuff+0, &reContactRec, sizeof(float));
//                              memcpy(&reCurr.mpbBuff+4, &reContactDown, sizeof(float)); break;
//
//    case EVE_CONTACTSMODE:
//    case EVE_CONTACTS1:
//    case EVE_CONTACTS2: memcpy(&reCurr.mpbBuff+0, &bContactRec, sizeof(uchar)); break;

    case EVE_PREVNEXTTIME2:   Put(0, (uchar *) &tiCurr, sizeof(time)); break;

    case EVE_EDIT_DIGITAL1:
    case EVE_EDIT_DIGITAL2:   PutChar(0, ibRecordCan);
                              Put(1, (uchar *) &mpdiDigital[ibRecordCan], sizeof(digital)); break;

    case EVE_EDIT_KEY10:
    case EVE_EDIT_KEY20:      PutChar(0, ibRecordCan);
                              Put(1, (uchar *) &mpphKeys[ibRecordCan].szLine+0, 7); break;

    case EVE_EDIT_KEY11:
    case EVE_EDIT_KEY21:      Put(0, (uchar *) &mpphKeys[ibRecordCan].szLine+7, 6); break;

    case EVE_EDIT_ADDRESS10:
    case EVE_EDIT_ADDRESS11:  PutChar(0, ibRecordCan);
                              Put(1, (uchar *) &mpdwAddress1[ibRecordCan], sizeof(ulong)); break;

    case EVE_EDIT_ADDRESS20:
    case EVE_EDIT_ADDRESS21:  PutChar(0, ibRecordCan);
                              Put(1, (uchar *) &mpdwAddress2[ibRecordCan], sizeof(ulong)); break;
  }

  CloseRecord(SYS_RECORD, i);

  return CloseOut();
}
Exemplo n.º 6
0
void    key_SetRelaxsTariff(void)
{
  if (bKey == bKEY_ENTER)
  {
    if (enKeyboard == KBD_ENTER)
    {
      if (boRelaxsFlag == true)
      {
        enKeyboard = KBD_POSTENTER;
        Clear();

        LoadSlide(pszRelaxs);
        ShowChar(ibRelaxsTariff+1); 
      }
      else BlockProgram(bSET_RELAXS_FLAG);
    } 
    else if (enKeyboard == KBD_POSTINPUT1)
    {
      enKeyboard = KBD_POSTENTER;

      ibX = GetCharLo(6,8);
      if ((ibX > 0) && (ibX <= bTARIFFS))
      {
        ibRelaxsTariff = ibX-1;
        SaveCache(&chRelaxsTariff);

        ShowChar(ibRelaxsTariff+1); 
      }
      else 
      {
        enKeyboard = KBD_INPUT1;
        LongBeep();

        ShowLo(szMaskRelaxs);
      }
    }
    else Beep();
  }


  else if (bKey < 10)
  {
    if ((enGlobal != GLB_WORK) && (enKeyboard == KBD_POSTENTER))
    {
      enKeyboard = KBD_INPUT1;
      ShowLo(szMaskRelaxs);
    }

    if ((enKeyboard == KBD_INPUT1) || (enKeyboard == KBD_POSTINPUT1))
    {
      enKeyboard = KBD_POSTINPUT1;
      ShiftLo(6,8);
    }
  }
  else Beep();
}
Exemplo n.º 7
0
void    MakeParamsDiv(void)
{
    uint p;
    for (p=0; p<wPARAMS; p++)
    {
        MakeParamDiv(p);
    }

    SaveCache(&flParamsDiv);
}
Exemplo n.º 8
0
void    ResetRecordsDsbl(void)
{
  memset(&mpfRecordDsbl, 0, sizeof(mpfRecordDsbl));

  mpfRecordDsbl[EVE_PROFILEOPEN] = true;
  mpfRecordDsbl[EVE_PROFILE_OK2] = true;
  mpfRecordDsbl[EVE_PROFILE2] = true;

  SaveCache(&chRecordDsbl);
}
Exemplo n.º 9
0
void    MakeLimits(void)
{
  uchar c;
  for (c=0; c<bCANALS; c++)
  {
    if (mpcwStopCan[c] < wHOURS-1)
      mpcwStopCan[c]++;
  }

  SaveCache(&chStopCan);
}
Exemplo n.º 10
0
void    ResetExtended4T(bool  fFull)
{
  if (fFull)
  {
    fExt4TFlag = false;
    SaveCache(&chExt4TFlag);

    bExt4TMonths = 4;
    SaveCache(&chExt4TMonths);
  }


  memset(&mpCntMonCan4T, 0, sizeof(mpCntMonCan4T));

  uchar m;
  for (m=0; m<bMONTHS; m++)
  {
    SaveExt4TValues(m);
  }
}
Exemplo n.º 11
0
void    key_GetPassword(void)
{
  if (bKey == bKEY_ENTER)
  {
    if (enKeyboard == KBD_ENTER)
    {
      enKeyboard = KBD_INPUT2;

      ShowHi(szPassword);
      ShowLo(szMaskPass);

      ClearPassTwo();
      ibX = 3;
    }
    else if (enKeyboard == KBD_INPUT2)
    { 
      if ((memcmp(mpbPassOne, mpbPassTwo, 10) == 0) || SuperUser())
      {       
        enKeyboard = KBD_BEGIN;
        OK();

        boSetPassword = true;
        SaveCache(&chSetPassword);

        enGlobal = GLB_REPROGRAM;
        Setting();

//        AddSysRecord(EVE_PASSWORD);
      }
      else 
      {
        enKeyboard = KBD_ENTER;
        LongBeep();

        Error();
      }
    }
  }


  else if (bKey < 10)
  {
    if (enKeyboard == KBD_INPUT2)
    {
      if (ibX < 13)
      {
        mpbPassTwo[ibX-3] = bKey;
        szLo[ibX++] = '*';
      }
    }
  }
  else Beep();
}
Exemplo n.º 12
0
void    InitFlow(void)
{
  fFlow = 0;
  cbFlowDelay = 0;

  LoadCache(&chFlowPortFrom);
  if ((ibFlowPortFrom != 0) && (ibFlowPortFrom != 1))
  {
  	ibFlowPortFrom = 0;
    SaveCache(&chFlowPortFrom);
  }

  LoadCache(&chMaxFlowDelay);

  LoadCache(&chFlowPortTo);
  if ((ibFlowPortTo != 2+1) && (ibFlowPortTo != 3+1))
  {
    ibFlowPortTo = 2+1;
    SaveCache(&chFlowPortTo);
  }
}
Exemplo n.º 13
0
GPU_Vulkan::~GPU_Vulkan() {
	SaveCache(shaderCachePath_);
	// Note: We save the cache in DeviceLost
	DestroyDeviceObjects();
	framebufferManagerVulkan_->DestroyAllFBOs();
	vulkan2D_.Shutdown();
	depalShaderCache_.Clear();
	drawEngine_.DeviceLost();
	delete textureCacheVulkan_;
	delete pipelineManager_;
	delete shaderManagerVulkan_;
	delete framebufferManagerVulkan_;
}
Exemplo n.º 14
0
// устанавливает настройки по умолчанию
void    key_Debug(void)
{
    if (enKeyboard == KBD_ENTER)
    {
        enKeyboard = KBD_BEGIN;

        ShowHi(szDebug);
        Clear();

        boSetTime = true;
        SaveCache(&chSetTime);

        boSetDate = true;
        SaveCache(&chSetDate);

        boSetGroups = true;
        SaveCache(&chSetGroups);

        ClearPassOne();
        boSetPassword = true;
        SaveCache(&chSetPassword);

// TODO key_Debug

        // сбрасываем настройки по умолчанию для переменных zoAlt,zoKey
//    ResetZones();

        // сбрасываем настройки по умолчанию для
        ResetTariffs();

        // устанавливаем признаки используемых каналов и групп
        MakeUsedNodes();

        OK();

//    if (boDTREnable == true) DTROff_All();
    }
    else Beep();
}
Exemplo n.º 15
0
void    ResetSpeeds(void)
{
uchar   p;

  mppoPorts[0].enStream = STR_SLAVEESC;
  mppoPorts[1].enStream = STR_SLAVEESC;
  mppoPorts[2].enStream = STR_MASTERDIRECT;
  mppoPorts[3].enStream = STR_MASTERDIRECT;

  for (p=0; p<bPORTS; p++)
  {
    mppoPorts[p].ibBaud  = 3;
    mppoPorts[p].ibParity = 0;

    SetDefaultDelay(p);
    mpboLocalDisable[p] = false;
    SetCorrectLimit(p);
  }

  SavePorts();
  SaveLocalDisable();
  SaveMajorInDelay();
  SaveMinorInDelay();

  SaveCache(&chCorrectLimit);


  for (p=0; p<bPORTS; p++)
    mpwOutputDelay[p] = 0;

  SaveCache(&chOutputDelay);


  for (p=0; p<bPORTS; p++)
    mpwTxDelay[p] = 0;

  SaveCache(&chTxDelay);
}
Exemplo n.º 16
0
void    SaveFactors(void)
{
  SaveCache(&chTransEng);
  SaveCache(&chTransCnt);

  SaveCache(&chPulseHou);
  SaveCache(&chPulseMnt);

  SaveCache(&chCount);
  SaveCache(&chLosse);
  SaveCache(&chLevel);
}
Exemplo n.º 17
0
void    NextHouLimitsAux(void) 
{
  if (UseBounds())
  {
    uchar c;
    for (c=0; c<bCANALS; c++)
    {
      if (IsLimitsAux(GetDigitalDevice(c)))
      {
        mpcwStopAuxCan[c]++;
      }
    }

    SaveCache(&chStopAuxCan);
  }
}
Exemplo n.º 18
0
void    ResetLimitsAux(uchar  ibDig) 
{
  LoadCurrDigital(ibDig);

  uchar c;
  for (c=0; c<bCANALS; c++)
  {
    LoadPrevDigital(c);
    if (CompareCurrPrevLines(ibDig, c) == true)
    {
      mpcwStopAuxCan[c] = 0;
    }
  }

  SaveCache(&chStopAuxCan);
}
Exemplo n.º 19
0
void    NewBoundsRel(uint  wRel)
{
  LoadCurrDigital(ibDig);

  uchar c;
  for (c=0; c<bCANALS; c++)
  {
    LoadPrevDigital(c);
    if (CompareCurrPrevLines(ibDig, c) == true)
    {
      mpcwStartRelCan[c] = wRel;
    }
  }

  SaveCache(&chStartRelCan);
}
Exemplo n.º 20
0
void    MakeExtended3(void)
{
  if (fExt3Flag == true)
  {
    ShowHi(szExtended3); Clear();
    sprintf(szLo+14,"%2u",ibDig+1); DelayInf();

    switch (diCurr.bDevice)
    {
      case 1:  ReadEventsAllA();  break;
      case 2:  ReadEventsAllB();  break;
    }

    mpfEventStart[ibDig] = false;
    SaveCache(&chEventStart);
  }
}
Exemplo n.º 21
0
inline bool
RasterTerrain::Load(Path path, FileCache *cache,
                    OperationEnvironment &operation)
{
  if (LoadCache(cache, path))
    return true;

  if (!LoadTerrainOverview(archive.get(), map.GetTileCache(), operation))
    return false;

  map.UpdateProjection();

  if (cache != nullptr)
    SaveCache(*cache, path);

  return true;
}
Exemplo n.º 22
0
void    key_SetBoolBlocked(cache const  *pch, char const  *pszMessages[], bool  fNonBlocked, uint  wProgram)
{
  bool *pboValue = (bool *) pch->pbBuff;

  if (bKey == bKEY_ENTER)
  {
    if (enKeyboard == KBD_ENTER)  
    {
      if (fNonBlocked)
      {
        enKeyboard = KBD_INPUT1;
        Clear();

        LoadSlide(pszMessages);
        ShowBool(*pboValue);
      }
      else
      {
        ShowHi(szBlocked);
        Clear();
        sprintf(szLo+1,"программой %u",wProgram);
      }
    }
    else Beep();
  }
  

  else if (bKey == bKEY_POINT)
  {
    if (enGlobal != GLB_WORK)
    {
      if ((enKeyboard == KBD_INPUT1) || (enKeyboard == KBD_POSTINPUT1))
      {           
        *pboValue = InvertBool(*pboValue);
        SaveCache(pch);

        ShowBool(*pboValue);
      }
      else Beep(); 
    }
    else Beep(); 
  } 
  else Beep(); 
}
Exemplo n.º 23
0
void    NextMinute3(void)
{
  Realtime1.cdwMinutes3++;

  DisableImpulses();
  PrepareImpulses();
  EnableImpulses();

  MakeImpulse();

  SaveImpHouBuff();
  SaveImpDayBuff();
  SaveImpMonBuff();
  SaveImpAbsBuff();

  SaveRealtimeTimes(); // TODO another place
  SaveCache(&chRealtimeValues);

  if (boMntParams == true) NextParamsTime();
  NextMntCurrent2();
}
Exemplo n.º 24
0
void CCache::WorkCache()
{
    if(_failtime && time(NULL) - _failtime < 300) {
        return;
    }
    _failtime = 0;
    while(_entries.size()) {
        if(AudioScrobbler->Scrobble(*_entries.front())) {
            delete _entries.front();
            _entries.erase(_entries.begin());
        }
        else {
            eprintf("%s", "Error scrobbling. Trying again in 5 minutes.");
            _failtime = time(NULL);
            AudioScrobbler->Failure();
            break;
        }
        sleep(1);
    }
    SaveCache();
}
Exemplo n.º 25
0
bool    AddKeyRecord(event  ev)
{
  if (IsRecordDisabled(ev)) return true;

  uint i = OpenRecord(KEY_RECORD, cdwKeyRecord);

  reCurr.ti = *GetCurrTimeDate();
  reCurr.cdwRecord = cdwKeyRecord++; SaveCache(&chKeyRecord);
  reCurr.ev = ev;

  switch (ev)
  {
    case EVE_GPS_GOODLINK:  Put(0, (uchar *) &tiGps, sizeof(time)); break;

    case EVE_GPS_BADGPS:    PutChar(0, bStatusGps); break;

    case EVE_GPS_GOODGPS_1: Put(0, (uchar *) &tiRecordTime, sizeof(time));
                            PutChar(6, bGmtGps); break;

    case EVE_GPS_GOODGPS_2: PutChar(0, bSeasonCurr);
                            PutChar(1, boSeasonGps ? 0xFF : 0x00); break;

    case EVE_EXT_CORRECT2:
    case EVE_ESC_K:
    case EVE_ESC_k:
    case EVE_INQ_CORRECT1:
    case EVE_INQ_CORRECT2:
    case EVE_INQ_CORRECT4:
    case EVE_PROGRAM_2:     Put(0, (uchar *) &tiRecordTime, sizeof(time)); break;

//    case EVE_SMK_GOODLINK:  memcpy(&reCurr.mpbBuff+0, &tiSMK, sizeof(time)); break;
//    case EVE_SMK_GOODSMK_1: memcpy(&reCurr.mpbBuff+0, &tiAlt, sizeof(time)); break;
  }

  CloseRecord(KEY_RECORD, i);

  return CloseOut();
}
Exemplo n.º 26
0
// удаление излома из списка
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);
}
Exemplo n.º 27
0
void    ResetLimits(void)
{
  fUseBounds = true;
  SaveCache(&chUseBounds);

  uchar c;
  for (c=0; c<bCANALS; c++)
  {
    mpcwStartRelCan[c] = 0;
    mpcwStartAbs16Can[c] = 0;
    mpcdwStartAbs32Can[c] = 0;
    mpboStartCan[c] = false;
    mpcwStopCan[c] = wHOURS_62-1; // самый старый получас
    mpcwStopAuxCan[c] = 0;
  }

  SaveCache(&chStartRelCan);
  SaveCache(&chStartAbs16Can);
  SaveCache(&chStartAbs32Can);
  SaveCache(&chStartCan);
  SaveCache(&chStopCan);
  SaveCache(&chStopAuxCan);
}
Exemplo n.º 28
0
	void DataFileDB::CacheUpdate() const
	{
		static bool first_update=true;
		static time_t last_update;

		if(dbtype==DBStringKeys)
		{
			// Check if it is too early to update.
			if(first_update)
			{
				::time(&last_update);
				first_update=false;
				return;
			}
		
			time_t now;
			::time(&now);

			if(now-last_update < CACHE_REFRESH_RATE)
				return;

			last_update=now;

			if(status.size()==0)
				return;
			
			// Debug:
#ifdef FILEDB_DEBUG
// 			for(size_t i=0; i<status.size(); i++)
// 				cout << "   => Age of " << vec[i][0] << " (" << i << "): " << (now - status[i].access) << "s " << (status[i].ondisk ? "disk" : "memory") << endl;
#endif
			int save_count=0;
			int oldest_index;
                        time_t oldest;

                        // Check the maximum size for resident entries.
                        int overflow=Loaded() - CACHE_MAX_RESIDENT;
                        while(overflow > 0)
                        {
                            oldest_index=Oldest();
                            if(oldest_index==-1)
                                break;
                            SaveCache(oldest_index);
                            save_count++;
                            overflow--;
                        }
			
			// Find and save older entries.
			for(int count=CACHE_MAX_SINGLE_WRITE; count; count--)
			{
				oldest_index=Oldest();

				if(oldest_index==-1)
					break;

                                oldest=status[oldest_index].access;

				if(now - oldest <= CACHE_MIN_AGE)
					break;

				SaveCache(oldest_index);
				save_count++;
			}

			Dump("DataFileDB::CacheUpdate()","cache update of "+ToString(save_count)+" entries");
		}
		else
			throw Error::NotYetImplemented("DataFileDB::CacheUpdate()");
	}
Exemplo n.º 29
0
void BuildTable::Init (IAICallback *callback, bool cache)
{
	cb = callback;

	char cachefn[80];
	ReplaceExtension (cb->GetModName (), cachefn, sizeof(cachefn), "modcache");
	if (cache) {
		if (LoadCache (cachefn))
			return;
	}

	// this is what makes loading times long, because spring will load unit defs only when they're needed.
	// meaning, GetUnitDefs() will make spring load all the unit defs at once.
	numDefs = cb->GetNumUnitDefs();
	deflist = new UDef[numDefs];

	const UnitDef** templist=new const UnitDef*[numDefs];
	cb->GetUnitDefList (templist);
	for (int a=0;a<numDefs;a++)
	{
		UDef& d = deflist[a];
		d.def = templist[a];
		d.cost.energy = d.def->energyCost;
		d.cost.metal = d.def->metalCost;
		d.make.energy = d.def->energyMake;
		d.make.metal = d.def->metalMake;
		if (d.def->activateWhenBuilt)
		{ // Solars have negative energy upkeep so they can be disabled
			d.make.energy -= d.def->energyUpkeep;
			d.make.metal += d.def->makesMetal;
			d.make.metal -= d.def->metalUpkeep;
		}
		d.storage.energy = d.def->energyStorage;
		d.storage.metal = d.def->metalStorage;
		d.metalExtractDepth = d.def->extractsMetal;
		d.buildTime = d.def->buildTime;
		d.energyUse = d.def->energyUpkeep;
		d.buildSpeed = d.def->buildSpeed;
		d.numBuildOptions = d.def->buildOptions.size();

		d.flags = 0;
		if (!d.def->buildOptions.empty ()) d.flags |= CUD_Builder;
		if (d.def->type == "Building" || d.def->type == "Factory" || d.def->type == "MetalExtractor")
			d.flags |= CUD_Building;
		if (d.def->windGenerator) d.flags |= CUD_WindGen;
		if (d.def->movedata)  {
			d.moveType = d.def->movedata->moveType;
			d.flags |= CUD_MoveType;
		}
		
		deflist[a].def = templist[a];
		deflist[a].name = templist[a]->name;

		d.weaponDamage = 0.0f;
		d.weaponRange = 0.0f;

		for (int b=0;b<d.def->weapons.size();b++)
		{
			const WeaponDef* w = d.def->weapons[b].def;

			if (d.weaponRange < w->range)
				d.weaponRange = w->range;

			d.weaponDamage += CalcAverageDamage (&w->damages);
		}
	}
	delete[] templist;

    table.alloc(numDefs);

	logPrintf ("Calculating build table for %d build types...\n", numDefs);

	// convert all string'ed identifiers to id's, which can be used for indexing directly
	buildby = new std::vector<int>[numDefs]; 

	for (int a=0;a<numDefs;a++)
	{
		const UnitDef *def=deflist[a].def;
		
		for (map<int,string>::const_iterator i=def->buildOptions.begin();i!=def->buildOptions.end();++i)
		{
			const UnitDef *bdef = cb->GetUnitDef (i->second.c_str());
			if (bdef)
				buildby[bdef->id-1].push_back(a);
		}

		deflist[a].buildby = &buildby [a];
	}

	for (int a=0;a<numDefs;a++)
		CalcBuildTable (a, a, 0, ResInfo());

	SaveCache (cachefn);

/*	for (int a=0;a<numDefs;a++)
	{
		logPrintf ("%s builds:", deflist[a].name.c_str());

		for (int b=0;b<numDefs;b++)
		{
			BuildTable::Table::ent& e=table.get(a,b);
			if (e.id>=0)
				logPrintf ("%s by building %s (%d), ", deflist[b].name.c_str(), deflist[e.id].name.c_str(), e.depth);
		}

		logPrintf ("\n");
	}*/
}
Exemplo n.º 30
0
void    ReadEventsA(uchar  ibEvent)
{
uchar j;
ulong dwCurr, dwPrev;
 
  ShowEventsA(ibEvent);

  if (QueryOpenA_Full(25) == 0) { bEventCode = 0; AddImpRecord(EVE_EVENTS_BADLINK); return; }

  uchar i;
  for (i=0; i<10; i++)
  {
    if (QueryEventA_Full(ibEvent,i,50) == 0) {  bEventCode = i+1; AddImpRecord(EVE_EVENTS_BADLINK); return; }

    InitPop(1);
    mptiEventAB1[i] = ReadEventA();
    mptiEventAB2[i] = ReadEventA();
  } 

  switch (ibEvent) {
    case 1: dwPrev = mpdwEventDevice[ibDig]; break;
    case 7: dwPrev = mpdwEventPhase1[ibDig]; break;
    case 8: dwPrev = mpdwEventPhase2[ibDig]; break;
    case 9: dwPrev = mpdwEventPhase3[ibDig]; break;
  }

  dwCurr = 0;
  bool f = false;

  for (i=0; i<10; i++)
  {
    time ti = mptiEventAB1[i];
    if (dwPrev == DateToEventIndex(ti)) f = true;
    if (dwCurr < DateToEventIndex(ti))
    {
      dwCurr = DateToEventIndex(ti);
      j = i;
    }

    ti = mptiEventAB2[i];
    if (dwPrev == DateToEventIndex(ti)) f = true;
    if (dwCurr < DateToEventIndex(ti))
    {
      dwCurr = DateToEventIndex(ti);
      j = i;
    }
  }

  if (dwCurr == 0) AddImpRecord(EVE_EVENTS_BADDATA);
  if ((f == false) && (mpfEventStart[ibDig] == true)) { bEventCode = GetEventCodeA(ibEvent); AddImpRecord(EVE_EVENTS_OMISSION); }

  for (i=0; i<10; i++)
  {
    uchar k = (10 + j + i + 1) % 10;

    time ti = mptiEventAB1[k];
    if (dwPrev < DateToEventIndex(ti))
    {
      tiRecordTime = ti;
      bEventCode = GetEventCodeA(ibEvent) | 0x80; // внимание !
      AddImpRecord(EVE_EVENTS_A);
    }

    ti = mptiEventAB2[k];
    if (dwPrev < DateToEventIndex(ti))
    {
      tiRecordTime = ti;
      bEventCode = GetEventCodeA(ibEvent);
      AddImpRecord(EVE_EVENTS_A);
    }
  }   

  switch (ibEvent) {
    case 1: mpdwEventDevice[ibDig] = dwCurr; SaveCache(&chEventDevice); break;
    case 7: mpdwEventPhase1[ibDig] = dwCurr; SaveCache(&chEventPhase1); break;
    case 8: mpdwEventPhase2[ibDig] = dwCurr; SaveCache(&chEventPhase2); break;
    case 9: mpdwEventPhase3[ibDig] = dwCurr; SaveCache(&chEventPhase3); break;
  }
}