66 lines
1.3 KiB
C++
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
|