Commit adb8e8e6 authored by Jan Möbius's avatar Jan Möbius
Browse files

Tobias: Documentation update for splats

git-svn-id: http://www.openflipper.org/svnrepo/OpenFlipper/branches/Free@14991 383ad7c9-94d9-4d36-a494-682f7c89f535
parent 87e9889f
...@@ -73,21 +73,21 @@ const SplatCloud::SelectionsHandle SplatCloud::SELECTIONS_HANDLE( "<Selections>" ...@@ -73,21 +73,21 @@ const SplatCloud::SelectionsHandle SplatCloud::SELECTIONS_HANDLE( "<Selections>"
void SplatCloud::copySplatProperties( const SplatCloud &_splatCloud ) void SplatCloud::copySplatProperties( const SplatCloud &_splatCloud )
{ {
// deep copy all splat-properties // deep copy all splat-properties
SplatProperties::const_iterator splatPropertyIter; SplatPropertyMap::const_iterator splatPropertyIter;
for( splatPropertyIter = _splatCloud.splatProperties_.begin(); splatPropertyIter != _splatCloud.splatProperties_.end(); ++splatPropertyIter ) for( splatPropertyIter = _splatCloud.splatProperties_.begin(); splatPropertyIter != _splatCloud.splatProperties_.end(); ++splatPropertyIter )
{ {
// create new deep copy of current splat-property // create new deep copy of current splat-property
SplatPropertyInterface *prop = splatPropertyIter->second->clone(); SplatPropertyInterface *prop = splatPropertyIter->second.property_->clone();
// check if out of memory // check if out of memory
if( prop == 0 ) if( prop == 0 )
{ {
std::cerr << "Out of memory for a copy of SplatCloud's Splat-Property \"" << splatPropertyIter->first << "\"." << std::endl; std::cerr << "Out of memory for a copy of SplatCloud's splat-property \"" << splatPropertyIter->first << "\"." << std::endl;
continue; continue;
} }
// insert new copy into splat-property map with same name as before // insert new property map entry into splat-property map with same name as before
splatProperties_[ splatPropertyIter->first ] = prop; splatProperties_[ splatPropertyIter->first ] = SplatPropertyMapEntry( prop, splatPropertyIter->second.numRequests_ );
} }
// Get pointers to predefined splat-properties. // Get pointers to predefined splat-properties.
...@@ -103,21 +103,21 @@ void SplatCloud::copySplatProperties( const SplatCloud &_splatCloud ) ...@@ -103,21 +103,21 @@ void SplatCloud::copySplatProperties( const SplatCloud &_splatCloud )
void SplatCloud::copyCloudProperties( const SplatCloud &_splatCloud ) void SplatCloud::copyCloudProperties( const SplatCloud &_splatCloud )
{ {
// deep copy all cloud-properties // deep copy all cloud-properties
CloudProperties::const_iterator cloudPropertyIter; CloudPropertyMap::const_iterator cloudPropertyIter;
for( cloudPropertyIter = _splatCloud.cloudProperties_.begin(); cloudPropertyIter != _splatCloud.cloudProperties_.end(); ++cloudPropertyIter ) for( cloudPropertyIter = _splatCloud.cloudProperties_.begin(); cloudPropertyIter != _splatCloud.cloudProperties_.end(); ++cloudPropertyIter )
{ {
// create new deep copy of current cloud-property // create new deep copy of current cloud-property
CloudPropertyInterface *prop = cloudPropertyIter->second->clone(); CloudPropertyInterface *prop = cloudPropertyIter->second.property_->clone();
// check if out of memory // check if out of memory
if( prop == 0 ) if( prop == 0 )
{ {
std::cerr << "Out of memory for a copy of SplatCloud's Cloud-Property \"" << cloudPropertyIter->first << "\"." << std::endl; std::cerr << "Out of memory for a copy of SplatCloud's cloud-property \"" << cloudPropertyIter->first << "\"." << std::endl;
continue; continue;
} }
// insert new copy into cloud-property map with same name as before // insert new property map entry into cloud-property map with same name as before
cloudProperties_[ cloudPropertyIter->first ] = prop; cloudProperties_[ cloudPropertyIter->first ] = CloudPropertyMapEntry( prop, cloudPropertyIter->second.numRequests_ );
} }
// Get pointers to predefined cloud-properties. // Get pointers to predefined cloud-properties.
...@@ -147,12 +147,12 @@ SplatCloud::SplatCloud( const SplatCloud &_splatCloud ) ...@@ -147,12 +147,12 @@ SplatCloud::SplatCloud( const SplatCloud &_splatCloud )
void SplatCloud::clearSplatProperties() void SplatCloud::clearSplatProperties()
{ {
// free memory of all splat-properties // free memory of all splat-properties
SplatProperties::const_iterator splatPropertyIter; SplatPropertyMap::const_iterator splatPropertyIter;
for( splatPropertyIter = splatProperties_.begin(); splatPropertyIter != splatProperties_.end(); ++splatPropertyIter ) for( splatPropertyIter = splatProperties_.begin(); splatPropertyIter != splatProperties_.end(); ++splatPropertyIter )
delete splatPropertyIter->second; delete splatPropertyIter->second.property_;
// clear splat-property map // clear splat-property map
SplatProperties().swap( splatProperties_ ); SplatPropertyMap().swap( splatProperties_ );
// reset pointers to predefined splat-properties // reset pointers to predefined splat-properties
resetPredefinedSplatPropertyPointers(); resetPredefinedSplatPropertyPointers();
...@@ -165,12 +165,12 @@ void SplatCloud::clearSplatProperties() ...@@ -165,12 +165,12 @@ void SplatCloud::clearSplatProperties()
void SplatCloud::clearCloudProperties() void SplatCloud::clearCloudProperties()
{ {
// free memory of all cloud-properties // free memory of all cloud-properties
CloudProperties::const_iterator cloudPropertyIter; CloudPropertyMap::const_iterator cloudPropertyIter;
for( cloudPropertyIter = cloudProperties_.begin(); cloudPropertyIter != cloudProperties_.end(); ++cloudPropertyIter ) for( cloudPropertyIter = cloudProperties_.begin(); cloudPropertyIter != cloudProperties_.end(); ++cloudPropertyIter )
delete cloudPropertyIter->second; delete cloudPropertyIter->second.property_;
// clear cloud-property map // clear cloud-property map
CloudProperties().swap( cloudProperties_ ); CloudPropertyMap().swap( cloudProperties_ );
// reset pointers to predefined cloud-properties // reset pointers to predefined cloud-properties
resetPredefinedCloudPropertyPointers(); resetPredefinedCloudPropertyPointers();
...@@ -215,9 +215,9 @@ void SplatCloud::swap( SplatCloud &_splatCloud ) ...@@ -215,9 +215,9 @@ void SplatCloud::swap( SplatCloud &_splatCloud )
void SplatCloud::clearSplats() void SplatCloud::clearSplats()
{ {
// clear data vector of all splat-properties // clear data vector of all splat-properties
SplatProperties::const_iterator splatPropertyIter; SplatPropertyMap::const_iterator splatPropertyIter;
for( splatPropertyIter = splatProperties_.begin(); splatPropertyIter != splatProperties_.end(); ++splatPropertyIter ) for( splatPropertyIter = splatProperties_.begin(); splatPropertyIter != splatProperties_.end(); ++splatPropertyIter )
splatPropertyIter->second->clear(); splatPropertyIter->second.property_->clear();
// reset number of splats // reset number of splats
numSplats_ = 0; numSplats_ = 0;
...@@ -230,9 +230,9 @@ void SplatCloud::clearSplats() ...@@ -230,9 +230,9 @@ void SplatCloud::clearSplats()
void SplatCloud::pushbackSplat() void SplatCloud::pushbackSplat()
{ {
// add one element at end of data vector of all splat-properties // add one element at end of data vector of all splat-properties
SplatProperties::const_iterator splatPropertyIter; SplatPropertyMap::const_iterator splatPropertyIter;
for( splatPropertyIter = splatProperties_.begin(); splatPropertyIter != splatProperties_.end(); ++splatPropertyIter ) for( splatPropertyIter = splatProperties_.begin(); splatPropertyIter != splatProperties_.end(); ++splatPropertyIter )
splatPropertyIter->second->pushback(); splatPropertyIter->second.property_->pushback();
// increase number of splats // increase number of splats
++numSplats_; ++numSplats_;
...@@ -245,9 +245,9 @@ void SplatCloud::pushbackSplat() ...@@ -245,9 +245,9 @@ void SplatCloud::pushbackSplat()
void SplatCloud::resizeSplats( unsigned int _num ) void SplatCloud::resizeSplats( unsigned int _num )
{ {
// resize data vector of all splat-properties // resize data vector of all splat-properties
SplatProperties::const_iterator splatPropertyIter; SplatPropertyMap::const_iterator splatPropertyIter;
for( splatPropertyIter = splatProperties_.begin(); splatPropertyIter != splatProperties_.end(); ++splatPropertyIter ) for( splatPropertyIter = splatProperties_.begin(); splatPropertyIter != splatProperties_.end(); ++splatPropertyIter )
splatPropertyIter->second->resize( _num ); splatPropertyIter->second.property_->resize( _num );
// update number of splats // update number of splats
numSplats_ = _num; numSplats_ = _num;
......
...@@ -73,9 +73,9 @@ unsigned int SplatCloud::eraseSplatsByFlag( const std::vector<T> &_flags ) ...@@ -73,9 +73,9 @@ unsigned int SplatCloud::eraseSplatsByFlag( const std::vector<T> &_flags )
if( numDelete != 0 ) if( numDelete != 0 )
{ {
// keep only elements with given indices in data vector of all splat-properties // keep only elements with given indices in data vector of all splat-properties
SplatProperties::const_iterator splatPropertyIter; SplatPropertyMap::const_iterator splatPropertyIter;
for( splatPropertyIter = splatProperties_.begin(); splatPropertyIter != splatProperties_.end(); ++splatPropertyIter ) for( splatPropertyIter = splatProperties_.begin(); splatPropertyIter != splatProperties_.end(); ++splatPropertyIter )
splatPropertyIter->second->crop( indices ); splatPropertyIter->second.property_->crop( indices );
// update number of splats // update number of splats
numSplats_ = indices.size(); numSplats_ = indices.size();
...@@ -110,16 +110,24 @@ template <typename T> ...@@ -110,16 +110,24 @@ template <typename T>
template <typename T> template <typename T>
bool SplatCloud::addSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle, SplatCloud::SplatPropertyT<T> *(&_property) ) bool SplatCloud::requestSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle, SplatCloud::SplatPropertyT<T> *(&_property) )
{ {
// try to find property // try to find property map entry
SplatProperties::iterator iter = splatProperties_.find( _handle ); SplatPropertyMap::iterator iter = splatProperties_.find( _handle );
// if a property with the same name is already present, try to cast and abort // check if a property with the same name is already present
if( iter != splatProperties_.end() ) if( iter != splatProperties_.end() )
{ {
_property = dynamic_cast<SplatPropertyT<T> *>( iter->second ); // try to cast
return (_property != 0); _property = dynamic_cast<SplatPropertyT<T> *>( iter->second.property_ );
// check if cast failed and property in map has different type. if so, return failure (_property is 0)
if( _property == 0 )
return false;
// increase number of requests and return success (_property is a valid pointer)
++iter->second.numRequests_;
return true;
} }
// create new property // create new property
...@@ -137,8 +145,8 @@ bool SplatCloud::addSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle ...@@ -137,8 +145,8 @@ bool SplatCloud::addSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle
return false; return false;
} }
// insert new property and return success (_property is a valid pointer) // insert new property map entry and return success (_property is a valid pointer)
splatProperties_[ _handle ] = _property; splatProperties_[ _handle ] = SplatPropertyMapEntry( _property, 1 );
return true; return true;
} }
...@@ -147,16 +155,24 @@ bool SplatCloud::addSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle ...@@ -147,16 +155,24 @@ bool SplatCloud::addSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle
template <typename T> template <typename T>
bool SplatCloud::addCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle, SplatCloud::CloudPropertyT<T> *(&_property) ) bool SplatCloud::requestCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle, SplatCloud::CloudPropertyT<T> *(&_property) )
{ {
// try to find property // try to find property map entry
CloudProperties::iterator iter = cloudProperties_.find( _handle ); CloudPropertyMap::iterator iter = cloudProperties_.find( _handle );
// if a property with the same name is already present, try to cast and abort // check if a property with the same name is already present
if( iter != cloudProperties_.end() ) if( iter != cloudProperties_.end() )
{ {
_property = dynamic_cast<CloudPropertyT<T> *>( iter->second ); // try to cast
return (_property != 0); _property = dynamic_cast<CloudPropertyT<T> *>( iter->second.property_ );
// check if cast failed and property in map has different type. if so, return failure (_property is 0)
if( _property == 0 )
return false;
// increase number of requests and return success (_property is a valid pointer)
++iter->second.numRequests_;
return true;
} }
// create new property // create new property
...@@ -166,8 +182,8 @@ bool SplatCloud::addCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle ...@@ -166,8 +182,8 @@ bool SplatCloud::addCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle
if( _property == 0 ) if( _property == 0 )
return false; return false;
// insert new property and return success (_property is a valid pointer) // insert new property map entry and return success (_property is a valid pointer)
cloudProperties_[ _handle ] = _property; cloudProperties_[ _handle ] = CloudPropertyMapEntry( _property, 1 );
return true; return true;
} }
...@@ -176,25 +192,34 @@ bool SplatCloud::addCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle ...@@ -176,25 +192,34 @@ bool SplatCloud::addCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle
template <typename T> template <typename T>
void SplatCloud::removeSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle ) bool SplatCloud::releaseSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle, SplatCloud::SplatPropertyT<T> *(&_property) )
{ {
// try to find property // try to find property map entry
SplatProperties::iterator iter = splatProperties_.find( _handle ); SplatPropertyMap::iterator iter = splatProperties_.find( _handle );
// set prop to 0 if *not* found or cast fails, otherwise to a valid pointer // set _property to 0 if *not* found or cast fails, otherwise to a valid pointer
SplatPropertyT<T> *prop = (iter == splatProperties_.end()) ? 0 : dynamic_cast<SplatPropertyT<T> *>( iter->second ); _property = (iter == splatProperties_.end()) ? 0 : dynamic_cast<SplatPropertyT<T> *>( iter->second.property_ );
// if a property with the same name but a different type is present, do *not* remove any property // if a property with the same name but a different type is present, do *not* remove any property
// if *not* a valid pointer, abort // if *not* a valid pointer, abort and return failure (_property is 0)
if( prop == 0 ) if( _property == 0 )
return; return false;
// decrease number of request
--iter->second.numRequests_;
// check if property should *not* be removed yet. if so, return success (_property is a valid pointer)
if( iter->second.numRequests_ != 0 )
return true;
// free memory of property // free memory of property and reset pointer
delete prop; delete _property;
_property = 0;
// remove property // remove property map entry and return false because _property is 0
splatProperties_.erase( iter ); splatProperties_.erase( iter );
return false;
} }
...@@ -202,25 +227,34 @@ void SplatCloud::removeSplatProperty( const SplatCloud::PropertyHandleT<T> &_han ...@@ -202,25 +227,34 @@ void SplatCloud::removeSplatProperty( const SplatCloud::PropertyHandleT<T> &_han
template <typename T> template <typename T>
void SplatCloud::removeCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle ) bool SplatCloud::releaseCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle, SplatCloud::CloudPropertyT<T> *(&_property) )
{ {
// try to find property // try to find property map entry
CloudProperties::iterator iter = cloudProperties_.find( _handle ); CloudPropertyMap::iterator iter = cloudProperties_.find( _handle );
// set prop to 0 if *not* found or cast fails, otherwise to a valid pointer // set _property to 0 if *not* found or cast fails, otherwise to a valid pointer
CloudPropertyT<T> *prop = (iter == cloudProperties_.end()) ? 0 : dynamic_cast<CloudPropertyT<T> *>( iter->second ); _property = (iter == cloudProperties_.end()) ? 0 : dynamic_cast<CloudPropertyT<T> *>( iter->second.property_ );
// if a property with the same name but a different type is present, do *not* remove any property // if a property with the same name but a different type is present, do *not* remove any property
// if *not* a valid pointer, abort // if *not* a valid pointer, abort and return failure (_property is 0)
if( prop == 0 ) if( _property == 0 )
return; return false;
// decrease number of request
--iter->second.numRequests_;
// check if property should *not* be removed yet. if so, return success (_property is a valid pointer)
if( iter->second.numRequests_ != 0 )
return true;
// free memory of property // free memory of property and reset pointer
delete prop; delete _property;
_property = 0;
// remove property // remove property map entry and return false because _property is 0
cloudProperties_.erase( iter ); cloudProperties_.erase( iter );
return false;
} }
...@@ -230,11 +264,11 @@ void SplatCloud::removeCloudProperty( const SplatCloud::PropertyHandleT<T> &_han ...@@ -230,11 +264,11 @@ void SplatCloud::removeCloudProperty( const SplatCloud::PropertyHandleT<T> &_han
template <typename T> template <typename T>
void SplatCloud::getSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle, SplatCloud::SplatPropertyT<T> *(&_property) ) void SplatCloud::getSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle, SplatCloud::SplatPropertyT<T> *(&_property) )
{ {
// try to find property // try to find property map entry
SplatProperties::const_iterator iter = splatProperties_.find( _handle ); SplatPropertyMap::const_iterator iter = splatProperties_.find( _handle );
// set _property to 0 if *not* found or cast fails, otherwise to a valid pointer // set _property to 0 if *not* found or cast fails, otherwise to a valid pointer
_property = (iter == splatProperties_.end()) ? 0 : dynamic_cast<SplatPropertyT<T> *>( iter->second ); _property = (iter == splatProperties_.end()) ? 0 : dynamic_cast<SplatPropertyT<T> *>( iter->second.property_ );
} }
...@@ -244,11 +278,11 @@ void SplatCloud::getSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle ...@@ -244,11 +278,11 @@ void SplatCloud::getSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle
template <typename T> template <typename T>
void SplatCloud::getSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle, const SplatCloud::SplatPropertyT<T> *(&_property) ) const void SplatCloud::getSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle, const SplatCloud::SplatPropertyT<T> *(&_property) ) const
{ {
// try to find property // try to find property map entry
SplatProperties::const_iterator iter = splatProperties_.find( _handle ); SplatPropertyMap::const_iterator iter = splatProperties_.find( _handle );
// set _property to 0 if *not* found or cast fails, otherwise to a valid pointer // set _property to 0 if *not* found or cast fails, otherwise to a valid pointer
_property = (iter == splatProperties_.end()) ? 0 : dynamic_cast<const SplatPropertyT<T> *>( iter->second ); _property = (iter == splatProperties_.end()) ? 0 : dynamic_cast<const SplatPropertyT<T> *>( iter->second.property_ );
} }
...@@ -258,11 +292,11 @@ void SplatCloud::getSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle ...@@ -258,11 +292,11 @@ void SplatCloud::getSplatProperty( const SplatCloud::PropertyHandleT<T> &_handle
template <typename T> template <typename T>
void SplatCloud::getCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle, SplatCloud::CloudPropertyT<T> *(&_property) ) void SplatCloud::getCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle, SplatCloud::CloudPropertyT<T> *(&_property) )
{ {
// try to find property // try to find property map entry
CloudProperties::const_iterator iter = cloudProperties_.find( _handle ); CloudPropertyMap::const_iterator iter = cloudProperties_.find( _handle );
// set _property to 0 if *not* found or cast fails, otherwise to a valid pointer // set _property to 0 if *not* found or cast fails, otherwise to a valid pointer
_property = (iter == cloudProperties_.end()) ? 0 : dynamic_cast<CloudPropertyT<T> *>( iter->second ); _property = (iter == cloudProperties_.end()) ? 0 : dynamic_cast<CloudPropertyT<T> *>( iter->second.property_ );
} }
...@@ -272,9 +306,9 @@ void SplatCloud::getCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle ...@@ -272,9 +306,9 @@ void SplatCloud::getCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle
template <typename T> template <typename T>
void SplatCloud::getCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle, const SplatCloud::CloudPropertyT<T> *(&_property) ) const void SplatCloud::getCloudProperty( const SplatCloud::PropertyHandleT<T> &_handle, const SplatCloud::CloudPropertyT<T> *(&_property) ) const
{ {
// try to find property // try to find property map entry
CloudProperties::const_iterator iter = cloudProperties_.find( _handle ); CloudPropertyMap::const_iterator iter = cloudProperties_.find( _handle );
// set _property to 0 if *not* found or cast fails, otherwise to a valid pointer // set _property to 0 if *not* found or cast fails, otherwise to a valid pointer
_property = (iter == cloudProperties_.end()) ? 0 : dynamic_cast<const CloudPropertyT<T> *>( iter->second ); _property = (iter == cloudProperties_.end()) ? 0 : dynamic_cast<const CloudPropertyT<T> *>( iter->second.property_ );
} }
...@@ -267,7 +267,7 @@ void SplatCloudNode::draw( GLState &_state, const DrawModes::DrawMode &_drawMode ...@@ -267,7 +267,7 @@ void SplatCloudNode::draw( GLState &_state, const DrawModes::DrawMode &_drawMode
// enable "pointsize by program" depending on current rendermode // enable "pointsize by program" depending on current rendermode
if( rendermode == RENDERMODE_SPLATS || rendermode == RENDERMODE_DOTS ) if( rendermode == RENDERMODE_SPLATS || rendermode == RENDERMODE_DOTS )
ACG::GLState::enable( GL_VERTEX_PROGRAM_POINT_SIZE ); ACG::GLState::enable( GL_VERTEX_PROGRAM_POINT_SIZE );
else else
ACG::GLState::disable( GL_VERTEX_PROGRAM_POINT_SIZE ); ACG::GLState::disable( GL_VERTEX_PROGRAM_POINT_SIZE );
// draw as GLpoints // draw as GLpoints
......
...@@ -571,7 +571,7 @@ QString SplatCloudObject::getObjectinfo() ...@@ -571,7 +571,7 @@ QString SplatCloudObject::getObjectinfo()
} }
else else
{ {
SplatCloud::SplatProperties::const_iterator splatPropertyIter; SplatCloud::SplatPropertyMap::const_iterator splatPropertyIter;
for( splatPropertyIter = splatCloud_->splatProperties().begin(); splatPropertyIter != splatCloud_->splatProperties().end(); ++splatPropertyIter ) for( splatPropertyIter = splatCloud_->splatProperties().begin(); splatPropertyIter != splatCloud_->splatProperties().end(); ++splatPropertyIter )
output += QString( " " ) + splatPropertyIter->first.c_str(); output += QString( " " ) + splatPropertyIter->first.c_str();
} }
...@@ -583,7 +583,7 @@ QString SplatCloudObject::getObjectinfo() ...@@ -583,7 +583,7 @@ QString SplatCloudObject::getObjectinfo()
} }
else else
{ {
SplatCloud::CloudProperties::const_iterator cloudPropertyIter; SplatCloud::CloudPropertyMap::const_iterator cloudPropertyIter;
for( cloudPropertyIter = splatCloud_->cloudProperties().begin(); cloudPropertyIter != splatCloud_->cloudProperties().end(); ++cloudPropertyIter ) for( cloudPropertyIter = splatCloud_->cloudProperties().begin(); cloudPropertyIter != splatCloud_->cloudProperties().end(); ++cloudPropertyIter )
output += QString( " " ) + cloudPropertyIter->first.c_str(); output += QString( " " ) + cloudPropertyIter->first.c_str();
} }
...