// NeL - MMORPG Framework
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
#include "ligo_error.h"
namespace NLLIGO
{
// ***************************************************************************
CLigoError::CLigoError()
{
clear ();
}
// ***************************************************************************
void CLigoError::pushVertexError (TError code, uint id, uint edge)
{
// Check if this vertex exist in the error list
uint vertex;
for (vertex=0; vertex<_VertexError.size(); vertex++)
{
if (_VertexError[vertex].Id == id)
{
_VertexError[vertex] = CVertex (code, id, edge);
break;
}
}
// Not found ?
if (vertex == _VertexError.size())
{
// Add a vertex error
_VertexError.push_back (CVertex (code, id, edge));
}
}
// ***************************************************************************
uint CLigoError::numVertexError () const
{
return (uint)_VertexError.size ();
}
// ***************************************************************************
CLigoError::TError CLigoError::getVertexError (uint error, uint &id, uint &edge) const
{
const CVertex &vertex = _VertexError[error];
id = vertex.Id;
edge = vertex.Edge;
return vertex.Code;
}
// ***************************************************************************
void CLigoError::clear ()
{
MainError = NoError;
_VertexError.clear ();
}
// ***************************************************************************
const char* CLigoError::_StringError[CLigoError::ErrorCount]=
{
"No error", // NoError
"No vertex in the edge list", // NoEdgeVertices
"Opened edges detected", // OpenedEdge
"Multiple edge on the boundary",// MultipleEdge
"Vertex list invalid. One vertex should be a corner", // VertexList
"The vertex has not been inserted in the edge list", // NotInserted
"The vertex has been inserted in the edge list", // Inserted
"Flat zone, all vertices are in the same corner", // FlatZone
"The zone must have 4 edges to define a material", // MustHave4Edges
"A edge of the zone is not symetrical", // NotSymetrical
"Not the same number of vertex", // NotSameVerticesNumber
"Some vertices are not the same", // NotSameVertex
"No corner found", // NoCornerFound
"A edge has two times the same corner", // TwoCornerVertices
"A corner is missing in this edge", // CornerIsMissing
"A boundary vertex is used by multiple edges", // VertexAlreadyUsed
"Unknown error", // UnknownError
};
// ***************************************************************************
const char* CLigoError::getStringError (TError errorCode)
{
if (errorCode<=ErrorCount)
{
return _StringError[errorCode];
}
else
{
return _StringError[UnknownError];
}
}
// ***************************************************************************
}