#pragma once #ifndef CartoBaseTopologyManager_H #define CartoBaseTopologyManager_H #include "base_head.h" #include "garray_ord.h" #include "CartoBase.h" #include "th.h" class UTILES_EXPORT CartoBaseTopologyManager { CartoBase* cad; CartoLine linebuff; std::map*> correcciones; long ncorrecciones; Clock lcorreccines; public: std::map referencias; long nthread; double tolerancia; bool terminado; bool conErrores; char error[128]; static int comint(int* i1, int* i2) { return *i1 - *i2; } CartoBaseTopologyManager(void); ~CartoBaseTopologyManager(void); //funciones topologicas-------------------- bool revisaTopologia(CartoBase* carto, int nthread); //funciones topologicas aux-------------------------------------------- bool DivideLineVirtual(int ie, int ipun); bool DivideLine(int ie, int ipun); bool RevisaTopo(int ini, int fin); bool revisa(CartoBaseInfoEntity* ent); bool AddCorreccion(int ie, int pto); void AplicaCorrecciones(); }; class UTILES_EXPORT CthRevisaTopologia : public Cth { public: CartoBaseTopologyManager* topo; int ini, fin; bool resul; virtual void run() { resul=topo->RevisaTopo(ini, fin); if (!lck_sum_atm(&topo->nthread, -1)) { //finalizada revision, toca aplicar correccion topo->AplicaCorrecciones(); topo->terminado = true; } } }; #endif