29 if( instance == NULL )
32 *error_type =
LASSOI->lastErrorType;
37 if( instance == NULL )
39 strcpy( descr,
"iRel_getDescription: Invalid instance" );
43 unsigned int len = std::min( strlen(
LASSOI->lastErrorDescription ),
static_cast< size_t >( descr_len ) );
44 strncpy( descr,
LASSOI->lastErrorDescription, len );
51 if( 0 != options_len )
57 *instance =
new Lasso();
69 const int ent_or_set1,
70 const int iface_type1,
71 const int irel_status1,
73 const int ent_or_set2,
74 const int iface_type2,
75 const int irel_status2,
83 LASSOI->insert_pair( assoc_pair );
104 *ent_or_set1 =
ASSOCPAIRI->relation_type( 0 );
106 *irel_status1 =
ASSOCPAIRI->relation_status( 0 );
109 *ent_or_set2 =
ASSOCPAIRI->relation_type( 1 );
110 *irel_status2 =
ASSOCPAIRI->relation_status( 1 );
139 int* pairs_allocated,
143 std::vector< AssocPair* > tmp_pairs;
147 for(
size_t i = 0; i < tmp_pairs.size(); ++i )
201 if( num_entities1 != num_entities2 )
203 "different #'s of entities." );
207 for(
int i = 0; i < num_entities1; i++ )
209 int tmp_result =
ASSOCPAIRI->set_relation( ent_array_1[i], ent_array_2[i] );
231 if( num_entities1 != num_sets2 )
233 "different #'s of entities." );
237 for(
int i = 0; i < num_entities1; i++ )
239 int tmp_result =
ASSOCPAIRI->set_relation( ent_array_1[i], set_array_2[i] );
261 if( num_sets1 != num_entities2 )
263 "different #'s of entities." );
267 for(
int i = 0; i < num_sets1; i++ )
269 int tmp_result =
ASSOCPAIRI->set_relation( set_array_1[i], ent_array_2[i] );
291 if( num_sets1 != num_sets2 )
293 "different #'s of entities." );
297 for(
int i = 0; i < num_sets1; i++ )
299 int tmp_result =
ASSOCPAIRI->set_relation( set_array_1[i], set_array_2[i] );
320 int iface_no = ( switch_order ? 1 : 0 );
CHK_ERROR(
ASSOCPAIRI->get_relation( iface_no, &ent1, 1, ent2 ) );
332 int iface_no = ( switch_order ? 1 : 0 );
CHK_ERROR(
ASSOCPAIRI->get_relation( iface_no, &ent1, 1, set2 ) );
344 int iface_no = ( switch_order ? 1 : 0 );
CHK_ERROR(
ASSOCPAIRI->get_relation( iface_no, &set1, 1, ent2 ) );
356 int iface_no = ( switch_order ? 1 : 0 );
CHK_ERROR(
ASSOCPAIRI->get_relation( iface_no, &set1, 1, set2 ) );
368 int iface_no = ( switch_order ? 1 : 0 );
CHK_ERROR(
ASSOCPAIRI->get_relation( iface_no, &ent1, 1, entset2 ) );
374 int ent_array_1_size,
377 int* ent_array_2_allocated,
378 int* ent_array_2_size,
383 int iface_no = ( switch_order ? 1 : 0 );
393 int ent_array_1_size,
396 int* set_array_2_allocated,
397 int* set_array_2_size,
402 int iface_no = ( switch_order ? 1 : 0 );
412 int set_array_1_size,
415 int* ent_array_2_allocated,
416 int* ent_array_2_size,
421 int iface_no = ( switch_order ? 1 : 0 );
431 int set_array_1_size,
434 int* set_array_2_allocated,
435 int* set_array_2_size,
440 int iface_no = ( switch_order ? 1 : 0 );
450 int ent_array_1_size,
453 int* entiter_allocated,
459 int iface_no = ( switch_order ? 1 : 0 );
475 int iface_no = ( switch_order ? 1 : 0 );
CHK_ERROR(
ASSOCPAIRI->rmv_relation( iface_no, &ent, 1 ) );
486 int iface_no = ( switch_order ? 1 : 0 );
CHK_ERROR(
ASSOCPAIRI->rmv_relation( iface_no, &entset, 1 ) );
498 int iface_no = ( switch_order ? 1 : 0 );
CHK_ERROR(
ASSOCPAIRI->rmv_relation( iface_no, ent_array, num_ent ) );
510 int iface_no = ( switch_order ? 1 : 0 );
CHK_ERROR(
ASSOCPAIRI->rmv_relation( iface_no, entset_array, num_ent ) );
518 std::vector< int >& ents_gids,
519 std::vector< int >& ents_dims )
524 ents_gids.resize( ents_size );
526 result =
ASSOCPAIRI->get_gids( iface_no, ents, ents_size, &ents_gids[0] );
528 result =
ASSOCPAIRI->get_gids( iface_no, sets, ents_size, &ents_gids[0] );
532 ents_dims.resize( ents_size, -1 );
535 int* ents_dims_ptr = &ents_dims[0];
536 int ents_dims_alloc = ents_dims.size(), ents_dims_size;
538 ASSOCPAIRI->get_ents_dims( iface_no, ents, ents_size, &ents_dims_ptr, &ents_dims_alloc, &ents_dims_size );
542 result =
ASSOCPAIRI->get_dims( iface_no, sets, ents_size, &ents_dims[0] );
553 const int ents1_size,
556 const int ents2_size,
562 std::vector< int > ents_gids, ents_dims;
563 std::map< const int, iBase_EntityHandle > ents_gid_map[4];
565 get_gids_and_dims( pair, 0, ents1, ents1_size, ent_or_set1, ents_gids, ents_dims );
566 for(
int i = 0; i < ents1_size; i++ )
568 int dim = ents_dims[i];
569 if( 0 <=
dim && 3 >=
dim ) ents_gid_map[
dim][ents_gids[i]] = ents1[i];
572 get_gids_and_dims( pair, 1, ents2, ents2_size, ent_or_set2, ents_gids, ents_dims );
573 for(
int i = 0; i < ents2_size; i++ )
575 int dim = ents_dims[i];
579 if( 0 >
dim || 3 <
dim )
continue;
582 std::map< const int, iBase_EntityHandle >::iterator iter = ents_gid_map[
dim].find( ents_gids[i] );
585 if( iter != ents_gid_map[
dim].end() )
589 result =
ASSOCPAIRI->set_relation( ( *iter ).second, ents2[i] );
615 const int ents1_size,
617 const int ents2_size,
626 const int ents1_size,
628 const int ents2_size,
637 const int ents1_size,
639 const int ents2_size,
648 const int ents1_size,
651 const int ents2_size,
657 ents2_size, 1, err );
668 int ents1_alloc = 0, ents1_size;
672 result =
ASSOCPAIRI->get_all_entities( 0, -1, &ents1, &ents1_alloc, &ents1_size );
CHK_ERROR( result );
675 int ents2_alloc = 0, ents2_size;
679 result =
ASSOCPAIRI->get_all_entities( 1, -1, &ents2, &ents2_alloc, &ents2_size );
CHK_ERROR( result );
721 if( 0 > iface_no || 1 < iface_no )
729 "inferArrRelations" );
735 int ents1_size = entities_size;
737 int ents2_alloc = 0, ents2_size;
741 result =
ASSOCPAIRI->get_all_entities( !iface_no, -1, &ents2, &ents2_alloc, &ents2_size );
CHK_ERROR( result );
754 free( 1 == iface_no ? ents1 : ents2 );