void get_selected_entities( const Selector & selector , const BucketVector & input_buckets , std::vector< Entity> & entities ) { size_t count = count_selected_entities(selector,input_buckets); entities.resize(count); const BucketVector::const_iterator ie = input_buckets.end(); BucketVector::const_iterator ik = input_buckets.begin(); for ( size_t j = 0 ; ik != ie ; ++ik ) { const Bucket & k = ** ik ; if ( selector( k ) ) { const size_t n = k.size(); for ( size_t i = 0; i < n; ++i, ++j ) { entities[j] = k[i] ; } } } if (input_buckets.size() > 0) { std::sort(entities.begin(), entities.end(), EntityLess(input_buckets[0]->mesh())); } }
void internal_check_no_null_buckets_invariant() const { #ifndef NDEBUG for (int i = 0, e = m_buckets.size(); i < e; ++i) { ThrowAssert(m_buckets[i] != NULL); } #endif }
void internal_check_size_invariant() const { #ifndef NDEBUG size_t sum = 0; for (size_t i = 0, e = m_buckets.size(); i < e; ++i) { sum += m_buckets[i]->size(); m_buckets[i]->check_size_invariant(); } ThrowAssertMsg(sum == m_size, "Inconsistent sizes, bucket sum is " << sum << ", m_size is " << m_size); #endif }