Made uniform the use of size_t instead of int in the vast majority of the allocate.h functions

This commit is contained in:
Paolo Cignoni 2014-07-03 20:57:26 +00:00
parent 6b106d97fb
commit afc802107a
1 changed files with 1214 additions and 1225 deletions

View File

@ -52,31 +52,31 @@ template<class MeshType>
size_t Index(MeshType &m, const typename MeshType::HEdgeType* h) {return h-&*m.hedge.begin();}
template <class MeshType, class ATTR_CONT>
void ReorderAttribute(ATTR_CONT &c,std::vector<size_t> & newVertIndex, MeshType & /* m */){
void ReorderAttribute(ATTR_CONT &c, std::vector<size_t> & newVertIndex, MeshType & /* m */){
typename std::set<typename MeshType::PointerToAttribute>::iterator ai;
for(ai = c.begin(); ai != c.end(); ++ai)
((typename MeshType::PointerToAttribute)(*ai)).Reorder(newVertIndex);
}
template <class MeshType, class ATTR_CONT>
void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
void ResizeAttribute(ATTR_CONT &c, size_t sz, MeshType &/*m*/){
typename std::set<typename MeshType::PointerToAttribute>::iterator ai;
for(ai =c.begin(); ai != c.end(); ++ai)
((typename MeshType::PointerToAttribute)(*ai)).Resize(sz);
}
/*!
/*!
\brief Class to safely add and delete elements in a mesh.
Adding elements to a mesh, like faces and vertices can involve the reallocation of the vectors of the involved elements.
This class provide the only safe methods to add elements.
It also provide an accessory class vcg::tri::PointerUpdater for updating pointers to mesh elements that are kept by the user.
*/
template <class MeshType>
class Allocator
{
template <class MeshType>
class Allocator
{
public:
public:
typedef typename MeshType::VertexType VertexType;
typedef typename MeshType::VertexPointer VertexPointer;
typedef typename MeshType::VertexIterator VertexIterator;
@ -162,7 +162,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
\param pu a PointerUpdater initialized so that it can be used to update pointers to vertices that could have become invalid after this adding.
\retval the iterator to the first element added.
*/
static VertexIterator AddVertices(MeshType &m,int n, PointerUpdater<VertexPointer> &pu)
static VertexIterator AddVertices(MeshType &m, size_t n, PointerUpdater<VertexPointer> &pu)
{
VertexIterator last;
if(n == 0) return m.vert.end();
@ -207,7 +207,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
// e poiche' lo spazio e' cambiato si ricalcola anche last da zero
}
unsigned int siz=(unsigned int)m.vert.size()-n;
size_t siz=(size_t)(m.vert.size()-n);
last = m.vert.begin();
advance(last,siz);
@ -217,7 +217,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
/** \brief Wrapper to AddVertices(); no PointerUpdater
*/
static VertexIterator AddVertices(MeshType &m, int n)
static VertexIterator AddVertices(MeshType &m, size_t n)
{
PointerUpdater<VertexPointer> pu;
return AddVertices(m, n,pu);
@ -225,7 +225,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
/** \brief Wrapper to AddVertices() no PointerUpdater but a vector of VertexPointer pointers to be updated
*/
static VertexIterator AddVertices(MeshType &m, int n, std::vector<VertexPointer *> &local_vec)
static VertexIterator AddVertices(MeshType &m, size_t n, std::vector<VertexPointer *> &local_vec)
{
PointerUpdater<VertexPointer> pu;
VertexIterator v_ret = AddVertices(m, n,pu);
@ -276,7 +276,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
\param pu a PointerUpdater initialized so that it can be used to update pointers to edges that could have become invalid after this adding.
\retval the iterator to the first element added.
*/
static EdgeIterator AddEdges(MeshType &m,int n, PointerUpdater<EdgePointer> &pu)
static EdgeIterator AddEdges(MeshType &m, size_t n, PointerUpdater<EdgePointer> &pu)
{
EdgeIterator last;
if(n == 0) return m.edge.end();
@ -315,7 +315,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
if(!(*hi).IsD())
if ((*hi).cHEp()!=0) pu.Update((*hi).HEp());
}
unsigned int siz=(unsigned int)m.edge.size()-n;
size_t siz=(size_t)(m.edge.size()-n);
last = m.edge.begin();
advance(last,siz);
@ -349,7 +349,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
/** Function to add n edges to the mesh.
First wrapper, with no parameters
*/
static EdgeIterator AddEdges(MeshType &m, int n)
static EdgeIterator AddEdges(MeshType &m, size_t n)
{
PointerUpdater<EdgePointer> pu;
return AddEdges(m, n,pu);
@ -358,7 +358,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
/** Function to add n edges to the mesh.
Second Wrapper, with a vector of vertex pointers to be updated.
*/
static EdgeIterator AddEdges(MeshType &m, int n, std::vector<EdgePointer*> &local_vec)
static EdgeIterator AddEdges(MeshType &m, size_t n, std::vector<EdgePointer*> &local_vec)
{
PointerUpdater<EdgePointer> pu;
EdgeIterator v_ret = AddEdges(m, n,pu);
@ -380,7 +380,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
\param pu a PointerUpdater initialized so that it can be used to update pointers to edges that could have become invalid after this adding.
\retval the iterator to the first element added.
*/
static HEdgeIterator AddHEdges(MeshType &m,int n, PointerUpdater<HEdgePointer> &pu)
static HEdgeIterator AddHEdges(MeshType &m, size_t n, PointerUpdater<HEdgePointer> &pu)
{
HEdgeIterator last;
if(n == 0) return m.hedge.end();
@ -399,36 +399,27 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
if(pu.NeedUpdate())
{
int ii = 0;
FaceIterator fi;
for (fi=m.face.begin(); fi!=m.face.end(); ++fi)
if(HasFHAdjacency(m)) {
for (FaceIterator fi=m.face.begin(); fi!=m.face.end(); ++fi)
{
if(HasFHAdjacency(m))
if(!(*fi).IsD() && (*fi).FHp())
pu.Update((*fi).FHp());
}
{
VertexIterator vi;
for (vi=m.vert.begin(); vi!=m.vert.end(); ++vi)
if(HasVHAdjacency(m))
if(!(*vi).IsD())
if ((*vi).cVHp()!=0)
}
if(HasVHAdjacency(m)) {
for (VertexIterator vi=m.vert.begin(); vi!=m.vert.end(); ++vi)
if(!(*vi).IsD() && (*vi).cVHp()!=0)
pu.Update((*vi).VHp());
}
{
EdgeIterator ei;
for (ei=m.edge.begin(); ei!=m.edge.end(); ++ei)
if(HasEHAdjacency(m))
if(!(*ei).IsD())
if ((*ei).cEHp()!=0)
if(HasEHAdjacency(m)) {
for (EdgeIterator ei=m.edge.begin(); ei!=m.edge.end(); ++ei)
if(!(*ei).IsD() && (*ei).cEHp()!=0)
pu.Update((*ei).EHp());
}
{
int ii = 0;
HEdgeIterator hi = m.hedge.begin();
while(ii < m.hn - n)// cycle on all the faces except the new ones
while(ii < m.hn - int(n))// cycle on all the faces except the new ones
{
if(!(*hi).IsD())
{
@ -437,12 +428,10 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
if(HasHOppAdjacency(m)) pu.Update((*hi).HOp());
++ii;
}
++hi;
}
}
}
unsigned int siz = (unsigned int)m.hedge.size()-n;
size_t siz = (size_t)(m.hedge.size()-n);
last = m.hedge.begin();
advance(last,siz);
@ -453,7 +442,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
/** Function to add n vertices to the mesh.
First wrapper, with no parameters
*/
static HEdgeIterator AddHEdges(MeshType &m, int n)
static HEdgeIterator AddHEdges(MeshType &m, size_t n)
{
PointerUpdater<HEdgePointer> pu;
return AddHEdges(m, n,pu);
@ -462,7 +451,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
/** Function to add n vertices to the mesh.
Second Wrapper, with a vector of vertex pointers to be updated.
*/
static HEdgeIterator AddHEdges(MeshType &m, int n, std::vector<HEdgePointer*> &local_vec)
static HEdgeIterator AddHEdges(MeshType &m, size_t n, std::vector<HEdgePointer*> &local_vec)
{
PointerUpdater<HEdgePointer> pu;
HEdgeIterator v_ret = AddHEdges(m, n,pu);
@ -553,7 +542,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
/** \brief Function to add n faces to the mesh.
First wrapper, with no parameters
*/
static FaceIterator AddFaces(MeshType &m, int n)
static FaceIterator AddFaces(MeshType &m, size_t n)
{
PointerUpdater<FacePointer> pu;
return AddFaces(m,n,pu);
@ -562,7 +551,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
/** \brief Function to add n faces to the mesh.
Second Wrapper, with a vector of face pointer to be updated.
*/
static FaceIterator AddFaces(MeshType &m, int n,std::vector<FacePointer *> &local_vec)
static FaceIterator AddFaces(MeshType &m, size_t n,std::vector<FacePointer *> &local_vec)
{
PointerUpdater<FacePointer> pu;
FaceIterator f_ret= AddFaces(m,n,pu);
@ -585,7 +574,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
\param pu a PointerUpdater initialized so that it can be used to update pointers to edges that could have become invalid after this adding.
\retval the iterator to the first element added.
*/
static FaceIterator AddFaces(MeshType &m, int n, PointerUpdater<FacePointer> &pu)
static FaceIterator AddFaces(MeshType &m, size_t n, PointerUpdater<FacePointer> &pu)
{
pu.Clear();
if(n == 0) return m.face.end();
@ -598,7 +587,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
m.face.resize(m.face.size()+n);
m.fn+=n;
unsigned int siz=(unsigned int)m.face.size()-n;
size_t siz=(size_t)(m.face.size()-n);
FaceIterator firstNewFace = m.face.begin();
advance(firstNewFace,siz);
@ -706,7 +695,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
static void PermutateVertexVector(MeshType &m, PointerUpdater<VertexPointer> &pu)
{
if(m.vert.empty()) return;
for(unsigned int i=0;i<m.vert.size();++i)
for(size_t i=0;i<m.vert.size();++i)
{
if(pu.remap[i]<size_t(m.vn))
{
@ -754,9 +743,9 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
if(HasEVAdjacency(m))
for(EdgeIterator ei=m.edge.begin();ei!=m.edge.end();++ei)
if(!(*ei).IsD())
for(unsigned int i=0;i<2;++i)
{
pu.Update((*ei).V(i));
pu.Update((*ei).V(0));
pu.Update((*ei).V(1));
}
}
@ -836,7 +825,7 @@ void ResizeAttribute(ATTR_CONT &c,const int & sz , MeshType &/*m*/){
assert((int)pos==m.en);
// the actual copying of the data.
for(unsigned int i=0;i<m.edge.size();++i)
for(size_t i=0;i<m.edge.size();++i)
{
if(pu.remap[i]<size_t(m.en)) // uninitialized entries in the remap vector has max_int value;
{
@ -1194,7 +1183,7 @@ public:
}
h._sizeof = sizeof(ATTR_TYPE);
h._padding = 0;
// h._typename = typeid(ATTR_TYPE).name();
// h._typename = typeid(ATTR_TYPE).name();
h._handle = new SimpleTempData<EdgeContainer,ATTR_TYPE>(m.edge);
m.attrn++;
h.n_attr = m.attrn;
@ -1523,7 +1512,7 @@ public:
// copy the padded container in the new one
_handle->Resize(m.vert.size());
for(unsigned int i = 0; i < m.vert.size(); ++i){
for(size_t i = 0; i < m.vert.size(); ++i){
ATTR_TYPE * dest = &(*_handle)[i];
char * ptr = (char*)( ((SimpleTempDataBase *)pa._handle)->DataBegin());
memcpy((void*)dest ,
@ -1550,7 +1539,7 @@ public:
// copy the padded container in the new one
_handle->Resize(m.edge.size());
for(unsigned int i = 0; i < m.edge.size(); ++i){
for(size_t i = 0; i < m.edge.size(); ++i){
ATTR_TYPE * dest = &(*_handle)[i];
char * ptr = (char*)( ((SimpleTempDataBase *)pa._handle)->DataBegin());
memcpy((void*)dest ,
@ -1578,7 +1567,7 @@ public:
// copy the padded container in the new one
_handle->Resize(m.face.size());
for(unsigned int i = 0; i < m.face.size(); ++i){
for(size_t i = 0; i < m.face.size(); ++i){
ATTR_TYPE * dest = &(*_handle)[i];
char * ptr = (char*)( ((SimpleTempDataBase *)pa._handle)->DataBegin());
memcpy((void*)dest ,