bool Kernel::has_superset( const Part & p ) const { const unsigned ordinal = p.mesh_meta_data_ordinal(); std::pair<const unsigned *, const unsigned *> part_ord = superset_part_ordinals(); part_ord.first = std::lower_bound( part_ord.first , part_ord.second , ordinal ); return part_ord.first < part_ord.second && ordinal == *part_ord.first ; }
void Bucket::supersets( OrdinalVector & ps ) const { std::pair<const unsigned *, const unsigned *> part_ord = superset_part_ordinals(); ps.resize( part_ord.second - part_ord.first ); for ( unsigned i = 0 ; part_ord.first < part_ord.second ; ++(part_ord.first) , ++i ) { ps[i] = *part_ord.first; } }
void Bucket::supersets( PartVector & ps ) const { const MetaData & mesh_meta_data = mesh().mesh_meta_data(); std::pair<const unsigned *, const unsigned *> part_ord = superset_part_ordinals(); ps.resize( part_ord.second - part_ord.first ); for ( unsigned i = 0 ; part_ord.first < part_ord.second ; ++(part_ord.first) , ++i ) { ps[i] = & mesh_meta_data.get_part( * part_ord.first ); } }
bool Kernel::has_superset( const PartSet & ps ) const { std::pair<const unsigned *, const unsigned *> part_ord = superset_part_ordinals(); bool result = ! ps.empty(); for ( PartSet::const_iterator i = ps.begin() ; result && i != ps.end() ; ++i ) { const unsigned ordinal = (*i)->mesh_meta_data_ordinal(); part_ord.first = std::lower_bound( part_ord.first , part_ord.second , ordinal ); result = part_ord.first < part_ord.second && ordinal == *part_ord.first ; } return result ; }