utiles_v2017/CartoBaseTopologyManager.h

66 lines
1.3 KiB
C++

#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<int, Cgarray_ord<int, int>*> correcciones;
long ncorrecciones;
Clock lcorreccines;
public:
std::map<int, int> 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