void QueryClusterer::UpdateCluster() { // This function needs to be scheduled periodically for updating the clusters // Update the feature vectors of all templates, update new and existing // templates and merge the clusters UpdateFeatures(); UpdateExistingTemplates(); MergeClusters(); }
void EventBatchHandler::UpdateObjects() { { GML_STDMUTEX_LOCK(runit); // UpdateObjects UpdateUnits(); } { GML_STDMUTEX_LOCK(rfeat); // UpdateObjects UpdateFeatures(); } { GML_STDMUTEX_LOCK(rproj); // UpdateObjects UpdateProjectiles(); } }
// Object bearbeiten ---------------------------------------------------------- int end_previous_object (void) { long irc = 0L; lgi++; /* Geometriezaehler korrigieren */ if (lgi < koord_paare) return (db_error (EGCNT, ASCPARSER, yylineno)); // bevor irgend etwas passiert Header neu einlesen if (g_fReReadHeader) { DEXN_ReReadHeader(); DEXN_ReScale(); g_fReReadHeader = false; // nur einmal } // auswerten ob Komplexobjekt if (lgi == 0) { if (RelCount() == 0) return db_error (EBADKO, ASCPARSER, yylineno); if (!r_flag) return EOKAY; // keine Relationen, keine KomplexObjekte sta[0] = K_OBJEKT; // Status setzen sta[1] = 0; } HPROJECT hPr = DEX_GetDataSourceHandle(); _ASSERTE(NULL != hPr); irc = CreateObject (on, id, sta, mi, lgi, gxi, gyi); if (g_flag) { // evtl. ObjectGuid setzen if (irc && '\0' != guid[0]) { OBJECTGUID OUID; INITSTRUCT (OUID, OBJECTGUID); OUID.lONr = on; if (SUCCEEDED(CLSIDFromString (WideString(guid), &OUID.guid))) { // versuchen über GUID zu finden if (FAILED(DEX_FindObjectFromGuidEx (hPr, OUID))) { // alten Guid wieder setzen HRESULT hr = DEX_SetObjectGuid (OUID); // if (FAILED(hr) && HRESULT_FROM_ERRCODE(S_DUPLICATE) == hr) { // TX_ASSERT(0 != OUID.lONr); // Objekt muß existieren // // // GUID bereits in GeoDB vorhanden !!?? // irc = S_DUPLICATE; // // // neu erzeugtes Objekt löschen // DEX_DeleteObject (on); // CountObjects (sta[1], false); // // // Geometrie an existierendem Objekt korrigieren // on = OUID.lONr; // hier spielt die Musik // irc = CreateObject (on, id, sta, mi, lgi, gxi, gyi); // } } } } } else irc = UpdateFeatures (hPr, on, id, sta, mi); // evtl. zur AusgabeObjektmenge hinzufügen if (irc && g_Enum.IsValid()) g_Enum -> AddItem (on); // Protocoll, Relationen etc. bool fBreak = false; if (NULL != g_pDlg) { if (irc) g_pDlg -> SetPos (ftell (yyin), on); fBreak = g_pDlg -> Break(); } if (fpProt) fprintf (fpProt, "Satz %5ld, Objekt %5ld: Irc = %3ld\n", satz_nr, on, irc); if (irc && r_flag) { if (RelCount()) { // Relationen aufbauen long lONr, lRCode; short iRTyp; ResetList(); while (RetrieveNextFromList (&lONr, &lRCode, &iRTyp)) CreateRelation (on, lONr, lRCode, iRTyp); ClearList(); } // Zuordnung Objekt <--> SatzNummer für Relationen merken StoreInTree (on, satz_nr); } return fBreak; }