Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
#include <SetIterator.hpp>
Public Member Functions | |
virtual ErrorCode | get_next_arr (std::vector< EntityHandle > &arr, bool &atend) |
get the next chunkSize entities Return the next chunkSize entities. | |
virtual ErrorCode | reset () |
reset the iterator to the beginning of the set | |
ErrorCode | decrement (int num) |
decrement the position by the specified number; returns MB_FAILURE if resulting index is < 0 | |
Protected Member Functions | |
VectorSetIterator (Core *core, EntityHandle eset, int chunk_sz, EntityType ent_tp, int ent_dim, bool check_valid=false) | |
Constructor. | |
Private Attributes | |
int | iterPos |
Current iterator position, 0 if at beginning. | |
Friends | |
class | Core |
Definition at line 153 of file SetIterator.hpp.
moab::VectorSetIterator::VectorSetIterator | ( | Core * | core, |
EntityHandle | eset, | ||
int | chunk_sz, | ||
EntityType | ent_tp, | ||
int | ent_dim, | ||
bool | check_valid = false |
||
) | [inline, protected] |
Constructor.
core | MOAB Core instance |
ent_set | EntitySet to which this iterator corresponds |
chunk_size | Chunk size of this iterator |
ent_type | Entity type for this iterator |
ent_dim | Entity dimension for this iterator |
Definition at line 179 of file SetIterator.hpp.
: SetIterator( core, eset, chunk_sz, ent_tp, ent_dim, check_valid ), iterPos( 0 ) { }
ErrorCode moab::VectorSetIterator::decrement | ( | int | num | ) | [inline] |
decrement the position by the specified number; returns MB_FAILURE if resulting index is < 0
Definition at line 194 of file SetIterator.hpp.
References iterPos, and MB_SUCCESS.
{ iterPos -= num; return ( iterPos < 0 ? MB_FAILURE : MB_SUCCESS ); }
ErrorCode moab::VectorSetIterator::get_next_arr | ( | std::vector< EntityHandle > & | arr, |
bool & | atend | ||
) | [virtual] |
get the next chunkSize entities Return the next chunkSize entities.
arr | Array of entities returned. |
atend | Returns true if iterator is at the end of iterable values, otherwise false |
Implements moab::SetIterator.
Definition at line 235 of file SetIterator.cpp.
References moab::SetIterator::checkValid, moab::SetIterator::chunkSize, moab::WriteUtilIface::CONTENTS, moab::CN::Dimension(), moab::SetIterator::entDimension, moab::SetIterator::entSet, moab::SetIterator::entType, ErrorCode, moab::WriteUtilIface::get_entity_list_pointers(), iface, moab::Core::is_valid(), iterPos, MB_SUCCESS, MBMAXTYPE, moab::SetIterator::myCore, moab::Interface::query_interface(), moab::Interface::release_interface(), and moab::TYPE_FROM_HANDLE().
{ int count; const EntityHandle* ptr; WriteUtilIface* iface; Interface* mbImpl = dynamic_cast< Interface* >( myCore ); ErrorCode rval = mbImpl->query_interface( iface ); if( MB_SUCCESS != rval ) return rval; rval = iface->get_entity_list_pointers( &entSet, 1, &ptr, WriteUtilIface::CONTENTS, &count ); if( MB_SUCCESS != rval ) return rval; mbImpl->release_interface( iface ); if( !count || iterPos >= count ) { atend = true; return MB_SUCCESS; } std::vector< EntityHandle > tmp_arr; std::vector< EntityHandle >* tmp_ptr = &arr; if( checkValid ) tmp_ptr = &tmp_arr; // just get the next chunkSize entities, or as many as you can int this_ct = 0; while( this_ct < (int)chunkSize && iterPos < count ) { if( ( MBMAXTYPE == entType || TYPE_FROM_HANDLE( ptr[iterPos] ) == entType ) && ( -1 == entDimension || CN::Dimension( TYPE_FROM_HANDLE( ptr[iterPos] ) ) == entDimension ) ) { arr.push_back( ptr[iterPos] ); this_ct++; } iterPos++; } atend = ( iterPos == count ); if( checkValid ) { for( std::vector< EntityHandle >::iterator vit = tmp_ptr->begin(); vit != tmp_ptr->end(); ++vit ) { if( myCore->is_valid( *vit ) ) arr.push_back( *vit ); } } // step along list, adding entities return MB_SUCCESS; }
ErrorCode moab::VectorSetIterator::reset | ( | ) | [virtual] |
reset the iterator to the beginning of the set
Implements moab::SetIterator.
Definition at line 285 of file SetIterator.cpp.
References iterPos, and MB_SUCCESS.
{ iterPos = 0; return MB_SUCCESS; }
friend class Core [friend] |
Reimplemented from moab::SetIterator.
Definition at line 156 of file SetIterator.hpp.
int moab::VectorSetIterator::iterPos [private] |
Current iterator position, 0 if at beginning.
Definition at line 191 of file SetIterator.hpp.
Referenced by decrement(), get_next_arr(), and reset().