int ChunkedPointCloud::addScalarField(const char* uniqueName) { //we don't accept two SF with the same name! if (getScalarFieldIndexByName(uniqueName) >= 0) return -1; //create requested scalar field ScalarField* sf = new ScalarField(uniqueName); if (!sf || (size() && !sf->resize(size()))) { //Not enough memory! if (sf) sf->release(); return -1; } try { //we don't want 'm_scalarFields' to grow by 50% each time! (default behavior of std::vector::push_back) m_scalarFields.resize(m_scalarFields.size()+1); } catch (std::bad_alloc) //out of memory { sf->release(); return -1; } m_scalarFields.back() = sf; sf->link(); return (int)m_scalarFields.size()-1; }
int ChunkedPointCloud::addScalarField(const char* uniqueName, bool isStrictlyPositive) { //we don't accept two SF with the same name! if (getScalarFieldIndexByName(uniqueName)>=0) return -1; //create requested scalar field ScalarField* sf = new ScalarField(uniqueName,isStrictlyPositive); if (!sf) return -1; //we don't want 'm_scalarFields' to grow by 50% each time! (default behavior of std::vector::push_back) try { m_scalarFields.push_back(sf); } catch (.../*const std::bad_alloc&*/) //out of memory { sf->release(); return -1; } sf->link(); return (int)m_scalarFields.size()-1; }