27 fprintf(stderr,
"[Warning]: No variable-length dense tag %s value for %s %lu\n",
32 fprintf(stderr,
"[Warning]: No variable-length dense tag %s value for root set\n", name.c_str());
41 const void* default_value,
42 int default_value_size )
51 const void* default_value,
52 int default_value_size )
104 ptr =
reinterpret_cast< const VarLenTag*
>( mem );
136 if( !mem && allocate )
147 ptr =
reinterpret_cast< VarLenTag*
>( mem );
172 const void** pointers,
181 const EntityHandle*
const end = entities + num_entities;
185 for(
const EntityHandle* i = entities; i != end; ++i, ++pointers, ++lengths )
189 if( ptr && ptr->
size() )
191 *pointers = ptr->
data();
192 *lengths = ptr->
size();
212 const Range& entities,
213 const void** pointers,
227 while( start <= p->second )
231 const size_t count = std::min< size_t >( p->second - start + 1, avail );
244 const VarLenTag* end_data = array + count;
245 while( array != end_data )
249 *pointers = array->
data();
250 *lengths = array->
size();
289 void const*
const* pointers,
294 const EntityHandle*
const end = entities + num_entities;
297 const size_t step = one_value ? 0 : 1;
303 array->
set( *pointers, *lengths );
313 const Range& entities,
315 void const*
const* pointers,
322 const size_t step = one_value ? 0 : 1;
327 while( start <= p->second )
331 const EntityHandle end = std::min< EntityHandle >( p->second + 1, start + avail );
332 while( start != end )
334 array->
set( *pointers, *lengths );
350 void const*
const* pointers,
353 return set_data( seqman, NULL, entities, num_entities,
false, pointers, lengths );
358 const Range& entities,
359 void const*
const* pointers,
362 return set_data( seqman, NULL, entities,
false, pointers, lengths );
369 const void* value_ptr,
372 if( !value_ptr || !value_len )
373 return remove_data( seqman, NULL, entities, num_entities );
375 return set_data( seqman, NULL, entities, num_entities,
true, &value_ptr, &value_len );
380 const Range& entities,
381 const void* value_ptr,
384 if( !value_ptr || !value_len )
387 return set_data( seqman, NULL, entities,
true, &value_ptr, &value_len );
393 size_t num_entities )
395 const EntityHandle*
const end = entities + num_entities;
403 if( array ) array->
clear();
417 while( start <= p->second )
421 const EntityHandle end = std::min< EntityHandle >( p->second + 1, start + avail );
424 while( start != end )
451 template <
class Container >
455 Container& entities )
457 typename Container::iterator hint = entities.begin();
458 std::pair< EntityType, EntityType > range =
type_range( type );
461 for( EntityType t = range.first; t != range.second; ++t )
464 for( i = map.
begin(); i != map.
end(); ++i )
466 data =
reinterpret_cast< const VarLenTag*
>( ( *i )->data()->get_tag_data( mySequenceArray ) );
467 if( !data )
continue;
468 end = data + ( *i )->end_handle() - ( *i )->
data()->start_handle() + 1;
469 iter = data + ( *i )->start_handle() - ( *i )->
data()->start_handle();
471 for( ; iter != end; ++iter, ++handle )
472 if( iter->
size() ) hint = entities.insert( hint, handle );
479 template <
class Container >
484 Container& entities )
486 typename Container::iterator hint = entities.begin();
493 if( !data )
continue;
497 for(
size_t i = 0; i < count; ++i )
498 if( data[i].size() ) hint = entities.insert( hint, iter.
get_start_handle() + i );
502 if( MB_FAILURE != rval )
508 template <
class Container >
516 return get_tagged< Container >( seqman, mySequenceArray, type, entities );
518 return get_tagged< Container >( seqman, mySequenceArray,
intersect->begin(),
intersect->end(), entities );
521 std::pair< Range::iterator, Range::iterator > r =
intersect->equal_range( type );
522 return get_tagged< Container >( seqman, mySequenceArray, r.first, r.second, entities );
535 size_t& output_count,
541 output_count = counter.
end();
547 Range& output_entities,
551 const Range* intersect_entities )
const
553 if( !intersect_entities )
555 std::pair< EntityType, EntityType > range =
type_range( type );
557 for( EntityType t = range.first; t != range.second; ++t )
560 for( i = map.
begin(); i != map.
end(); ++i )
567 start += ( *i )->start_handle() - ( *i )->
data()->start_handle();
589 while( start <= p->second )
593 if( p->second - start < count - 1 ) count = p->second - start + 1;
617 unsigned long& total,
618 unsigned long& per_entity )
const
633 if( ( *i )->data() != prev_data )
635 total += ( *i )->data()->size();
636 prev_data = ( *i )->data();
639 count += ( *i )->
size();
641 for(
int j = 0; j < ( *i )->size(); ++j )
642 per_entity += array[j].mem();
648 if( count ) per_entity /= count;