MOAB: Mesh Oriented datABase  (version 5.4.1)
iRel_Lasso.cpp File Reference
#include "iRel_Lasso.hpp"
#include "Lasso.hpp"
#include "AssocPair.hpp"
#include "ArrayManager.hpp"
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <iostream>
#include <map>
#include <vector>
+ Include dependency graph for iRel_Lasso.cpp:

Go to the source code of this file.

Functions

void iRel_getErrorType (iRel_Instance instance, int *error_type)
 Get the error type returned from the last iRel function.
void iRel_getDescription (iRel_Instance instance, char *descr, int descr_len)
 Get a description of the error returned from the last iRel function.
void iRel_create (const char *, iRel_Instance *instance, int *err, const int options_len)
 Create a new iRel instance.
void iRel_destroy (iRel_Instance instance, int *err)
 Destroy the interface object.
void iRel_createPair (iRel_Instance instance, iBase_Instance iface1, const int ent_or_set1, const int iface_type1, const int irel_status1, iBase_Instance iface2, const int ent_or_set2, const int iface_type2, const int irel_status2, iRel_PairHandle *pair, int *err)
 Create a relation pair between two interfaces.
void iRel_getPairInfo (iRel_Instance instance, iRel_PairHandle pair, iBase_Instance *iface1, int *ent_or_set1, int *iface_type1, int *irel_status1, iBase_Instance *iface2, int *ent_or_set2, int *iface_type2, int *irel_status2, int *err)
 Get information for this relation handle.
void iRel_changePairType (iRel_Instance instance, iRel_PairHandle pair, int ent_or_set1, int ent_or_set2, int *err)
 Change the relation type.
void iRel_changePairStatus (iRel_Instance instance, iRel_PairHandle pair, int irel_status1, int irel_status2, int *err)
 Change the relation status.
void iRel_destroyPair (iRel_Instance instance, iRel_PairHandle pair, int *err)
 Destroy a relation pair.
void iRel_findPairs (iRel_Instance instance, iBase_Instance iface, iRel_PairHandle **pairs, int *pairs_allocated, int *pairs_size, int *err)
 Get relations containing specified interface.
void iRel_setEntEntRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle ent1, iBase_EntityHandle ent2, int *err)
 Set a relation between two entities.
void iRel_setEntSetRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle ent1, iBase_EntitySetHandle set2, int *err)
 Set a relation between an entity and an entity set.
void iRel_setSetEntRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle set1, iBase_EntityHandle ent2, int *err)
 Set a relation between an entity set an an entity.
void iRel_setSetSetRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle set1, iBase_EntitySetHandle set2, int *err)
 Set a relation between two entity sets.
void iRel_setEntArrEntArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *ent_array_1, int num_entities1, iBase_EntityHandle *ent_array_2, int num_entities2, int *err)
 Set relations between arrays of entities pairwise, ent_array_1[i]<->ent_array_2[i].
void iRel_setEntArrSetArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *ent_array_1, int num_entities1, iBase_EntitySetHandle *set_array_2, int num_sets2, int *err)
 Set relations between arrays of entities and entity sets.
void iRel_setSetArrEntArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle *set_array_1, int num_sets1, iBase_EntityHandle *ent_array_2, int num_entities2, int *err)
 Set relations between arrays of entity sets and entities.
void iRel_setSetArrSetArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle *set_array_1, int num_sets1, iBase_EntitySetHandle *set_array_2, int num_sets2, int *err)
 Set relations between arrays of entity sets pairwise, ent_array_1[i]<->ent_array_2[i].
void iRel_getEntEntRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle ent1, int switch_order, iBase_EntityHandle *ent2, int *err)
 Get entity related to specified entity and relation handle.
void iRel_getEntSetRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle ent1, int switch_order, iBase_EntitySetHandle *set2, int *err)
 Get entity set related to specified entity and relation handle.
void iRel_getSetEntRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle set1, int switch_order, iBase_EntityHandle *ent2, int *err)
 Get entity related to specified entity set and relation handle.
void iRel_getSetSetRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle set1, int switch_order, iBase_EntitySetHandle *set2, int *err)
 Get entity set related to specified entity set and relation handle.
void iRel_getEntSetIterRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle ent1, int switch_order, iBase_EntityIterator *entset2, int *err)
 Get entity iterator related to specified entity set and relation handle.
void iRel_getEntArrEntArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *ent_array_1, int ent_array_1_size, int switch_order, iBase_EntityHandle **ent_array_2, int *ent_array_2_allocated, int *ent_array_2_size, int *err)
 Get entities related to those in specified array and relation, pairwise.
void iRel_getEntArrSetArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *ent_array_1, int ent_array_1_size, int switch_order, iBase_EntitySetHandle **set_array_2, int *set_array_2_allocated, int *set_array_2_size, int *err)
 Get entity sets related to entities in specified array and relation, pairwise.
void iRel_getSetArrEntArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle *set_array_1, int set_array_1_size, int switch_order, iBase_EntityHandle **ent_array_2, int *ent_array_2_allocated, int *ent_array_2_size, int *err)
 Get entities related to entity sets in specified array and relation, pairwise.
void iRel_getSetArrSetArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle *set_array_1, int set_array_1_size, int switch_order, iBase_EntitySetHandle **set_array_2, int *set_array_2_allocated, int *set_array_2_size, int *err)
 Get entity sets related to entity sets in specified array and relation, pairwise.
void iRel_getEntArrSetIterArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *ent_array_1, int ent_array_1_size, int switch_order, iBase_EntityIterator **entiter, int *entiter_allocated, int *entiter_size, int *err)
 Get entity iterators related to entity sets in specified array and relation.
void iRel_rmvEntRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle ent, int switch_order, int *err)
 Remove a relation from an entity.
void iRel_rmvSetRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle entset, int switch_order, int *err)
 Remove a relation from an entity set.
void iRel_rmvEntArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *ent_array, int num_ent, int switch_order, int *err)
 Remove a relation from an array of entities.
void iRel_rmvSetArrRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle *entset_array, int num_ent, int switch_order, int *err)
 Remove a relation from an array of entity sets.
static int get_gids_and_dims (iRel_PairHandle pair, int iface_no, iBase_EntityHandle *ents, int ents_size, int ent_or_set, std::vector< int > &ents_gids, std::vector< int > &ents_dims)
static void iRel_inferArrArrRelations (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *ents1, const int ents1_size, int ent_or_set1, iBase_EntityHandle *ents2, const int ents2_size, int ent_or_set2, int *err)
void iRel_inferEntArrEntArrRelations (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *ents1, const int ents1_size, iBase_EntityHandle *ents2, const int ents2_size, int *err)
void iRel_inferEntArrSetArrRelations (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *ents1, const int ents1_size, iBase_EntitySetHandle *ents2, const int ents2_size, int *err)
void iRel_inferSetArrEntArrRelations (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle *ents1, const int ents1_size, iBase_EntityHandle *ents2, const int ents2_size, int *err)
void iRel_inferSetArrSetArrRelations (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle *ents1, const int ents1_size, int, iBase_EntitySetHandle *ents2, const int ents2_size, int, int *err)
void iRel_inferAllRelations (iRel_Instance instance, iRel_PairHandle pair, int *err)
 Infer relations between entities in specified pair of interfaces.
void iRel_inferAllRelationsAndType (iRel_Instance instance, iRel_PairHandle *, int *err)
 Infer relations and relation type between entities in specified pair of interfaces.
void iRel_inferEntRelations (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle entity, int iface_no, int *err)
 Infer relations corresponding to specified entity and relation pair.
void iRel_inferSetRelations (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle entity, int iface_no, int *err)
 Brief unavailable.
static void iRel_inferArrRelations (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *entities, int entities_size, bool is_set, int iface_no, int *err)
void iRel_inferEntArrRelations (iRel_Instance instance, iRel_PairHandle pair, iBase_EntityHandle *entities, int entities_size, int iface_no, int *err)
 Infer relations corresponding to specified entities and relation pair.
void iRel_inferSetArrRelations (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle *entities, int entities_size, int iface_no, int *err)
 Brief unavailable.

Variables

const bool debug = false

Function Documentation

static int get_gids_and_dims ( iRel_PairHandle  pair,
int  iface_no,
iBase_EntityHandle ents,
int  ents_size,
int  ent_or_set,
std::vector< int > &  ents_gids,
std::vector< int > &  ents_dims 
) [static]

Definition at line 513 of file iRel_Lasso.cpp.

References ASSOCPAIRI, iBase_SUCCESS, iBase_TAG_NOT_FOUND, and iRel_ENTITY.

Referenced by iRel_inferArrArrRelations().

{
    int result;
    iBase_EntitySetHandle* sets = reinterpret_cast< iBase_EntitySetHandle* >( ents );

    ents_gids.resize( ents_size );
    if( ent_or_set == iRel_ENTITY )
        result = ASSOCPAIRI->get_gids( iface_no, ents, ents_size, &ents_gids[0] );
    else
        result = ASSOCPAIRI->get_gids( iface_no, sets, ents_size, &ents_gids[0] );

    if( iBase_SUCCESS != result && iBase_TAG_NOT_FOUND != result ) return result;

    ents_dims.resize( ents_size, -1 );
    if( ent_or_set == iRel_ENTITY )
    {
        int* ents_dims_ptr  = &ents_dims[0];
        int ents_dims_alloc = ents_dims.size(), ents_dims_size;
        result =
            ASSOCPAIRI->get_ents_dims( iface_no, ents, ents_size, &ents_dims_ptr, &ents_dims_alloc, &ents_dims_size );
    }
    else
    {
        result = ASSOCPAIRI->get_dims( iface_no, sets, ents_size, &ents_dims[0] );
    }

    if( iBase_SUCCESS != result && iBase_TAG_NOT_FOUND != result ) return result;

    return iBase_SUCCESS;
}
void iRel_changePairStatus ( iRel_Instance  instance,
iRel_PairHandle  pair,
int  irel_status1,
int  irel_status2,
int *  err 
)

Change the relation status.

Change the status of one or both sides of a relation. It is an error to change the status of both sides to iRel_NOTEXIST. If a side is changed to iRel_NOTEXIST, it will no longer be changeable back to iRel_ACTIVE or iRel_INACTIVE. Changing a side from iRel_INACTIVE to iRel_ACTIVE implies a traversal of all related entities on the other side, to recover the relations on the side being changed. Changing both sides from iRel_ACTIVE to something else is an error, since in that case neither will be able to be updated to iRel_ACTIVE.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being changed
[in]irel_status1The new status of side 1 of this relation pair
[in]irel_status2The new status of side 2 of this relation pair
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 122 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    CHK_ERROR( ASSOCPAIRI->change_status( 0, static_cast< iRel_RelationStatus >( irel_status1 ) ) );CHK_ERROR( ASSOCPAIRI->change_status( 1, static_cast< iRel_RelationStatus >( irel_status2 ) ) );
}
void iRel_changePairType ( iRel_Instance  instance,
iRel_PairHandle  pair,
int  ent_or_set1,
int  ent_or_set2,
int *  err 
)

Change the relation type.

Change the type of one or both sides of a relation. Only changes that result in no lost information are allowed, e.g. changing a type from SET to BOTH or vice versa.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being changed
[in]ent_or_set1The new type of side 1 of this relation pair
[in]ent_or_set2The new type of side 2 of this relation pair
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 115 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    CHK_ERROR( ASSOCPAIRI->change_type( 0, static_cast< iRel_RelationType >( ent_or_set1 ) ) );CHK_ERROR( ASSOCPAIRI->change_type( 1, static_cast< iRel_RelationType >( ent_or_set2 ) ) );
}
void iRel_create ( const char *  options,
iRel_Instance instance,
int *  err,
const int  options_len 
)

Create a new iRel instance.

Create a new iRel instance. Currently no options are implemented.

Parameters:
[in]instanceiRel instance handle
[out]errReturned Error status (see iBase_ErrorType)
[in]options_lenLength of options string

Definition at line 49 of file iRel_Lasso.cpp.

References iBase_NOT_SUPPORTED, and iBase_SUCCESS.

{
    if( 0 != options_len )
    {
        *instance = NULL;
        *err      = iBase_NOT_SUPPORTED;
    }

    *instance = new Lasso();
    *err      = iBase_SUCCESS;
}
void iRel_createPair ( iRel_Instance  instance,
iBase_Instance  iface1,
const int  ent_or_set1,
const int  iface_type1,
const int  irel_status1,
iBase_Instance  iface2,
const int  ent_or_set2,
const int  iface_type2,
const int  irel_status2,
iRel_PairHandle pair,
int *  err 
)

Create a relation pair between two interfaces.

Creates a relation pair between two interfaces, passing back a handle to the pair. It is an error to create a relation pair having both sides iRel_NOTEXIST. If a relation pair has a side with status iRel_NOTEXIST, the relation for that side is never stored, and the status cannot change over the life of the relation pair.

Parameters:
[in]instanceiRel instance handle
[in]iface11st interface object in the relation pair
[in]ent_or_set1This relation relates entities, sets, or both from 1st interface object
[in]iface_type1Type of 1st interface
[in]irel_status1The status of 1st side
[in]iface22nd interface object in the relation pair
[in]ent_or_set2This relation relates entities, sets, or both from 2nd interface object
[in]iface_type2Type of 2nd interface
[in]irel_status2The status of 2nd side
[out]pairPointer to relation pair handle, returned from function
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 67 of file iRel_Lasso.cpp.

References iBase_SUCCESS, LASSOI, and RETURN.

{
    AssocPair* assoc_pair = new AssocPair(
        instance, iface1, static_cast< iRel_RelationType >( ent_or_set1 ), static_cast< iRel_IfaceType >( iface_type1 ),
        static_cast< iRel_RelationStatus >( irel_status1 ), iface2, static_cast< iRel_RelationType >( ent_or_set2 ),
        static_cast< iRel_IfaceType >( iface_type2 ), static_cast< iRel_RelationStatus >( irel_status2 ) );
    LASSOI->insert_pair( assoc_pair );

    *pair = reinterpret_cast< iRel_PairHandle >( assoc_pair );
    RETURN( iBase_SUCCESS );
}
void iRel_destroy ( iRel_Instance  instance,
int *  err 
)

Destroy the interface object.

Calls destructor on interface object

Parameters:
[in]instanceiRel instance handle
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 61 of file iRel_Lasso.cpp.

References iBase_SUCCESS, and LASSOI.

{
    delete LASSOI;
    *err = iBase_SUCCESS;
}
void iRel_destroyPair ( iRel_Instance  instance,
iRel_PairHandle  pair,
int *  err 
)

Destroy a relation pair.

Destroy the relation pair corresponding to the handle input

Parameters:
[in]instanceiRel instance handle
[in]pairHandle of relation pair to destroy
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 129 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, CHK_PAIR, and LASSOI.

{
    CHK_PAIR();

    CHK_ERROR( LASSOI->erase_pair( ASSOCPAIRI ) );
}
void iRel_findPairs ( iRel_Instance  instance,
iBase_Instance  iface,
iRel_PairHandle **  pairs,
int *  pairs_allocated,
int *  pairs_size,
int *  err 
)

Get relations containing specified interface.

Get relations containing the specified interface

Parameters:
[in]instanceiRel instance handle
[in]ifaceSpecified interface
[in,out]pairsPointer to array holding returned relation pairs containing specified interface
[in,out]pairs_allocatedPointer to allocated size of relation pairs list
[out]pairs_sizePointer to occupied size of relation pairs list
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 136 of file iRel_Lasso.cpp.

References ALLOC_CHECK_ARRAY_NOFAIL, iBase_SUCCESS, LASSOI, and RETURN.

{
    std::vector< AssocPair* > tmp_pairs;
    LASSOI->find_pairs( iface, tmp_pairs );

    ALLOC_CHECK_ARRAY_NOFAIL( pairs, tmp_pairs.size() );
    for( size_t i = 0; i < tmp_pairs.size(); ++i )
    {
        ( *pairs )[i] = reinterpret_cast< iRel_PairHandle >( tmp_pairs[i] );
    }

    RETURN( iBase_SUCCESS );
}
void iRel_getDescription ( iRel_Instance  instance,
char *  descr,
int  descr_len 
)

Get a description of the error returned from the last iRel function.

Get a description of the error returned from the last iRel function

Parameters:
[in]instanceiRel instance handle
[in,out]descrPointer to a character string to be filled with a description of the error from the last iRel function
[in]descr_lenLength of the character string pointed to by descr

Definition at line 35 of file iRel_Lasso.cpp.

References LASSOI.

{
    if( instance == NULL )
    {
        strcpy( descr, "iRel_getDescription: Invalid instance" );
    }
    else
    {
        unsigned int len = std::min( strlen( LASSOI->lastErrorDescription ), static_cast< size_t >( descr_len ) );
        strncpy( descr, LASSOI->lastErrorDescription, len );
        descr[len] = '\0';
    }
}
void iRel_getEntArrEntArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle ent_array_1,
int  ent_array_1_size,
int  switch_order,
iBase_EntityHandle **  ent_array_2,
int *  ent_array_2_allocated,
int *  ent_array_2_size,
int *  err 
)

Get entities related to those in specified array and relation, pairwise.

Get entities related to those in specified array and relation, pairwise. Returns sets or entities, depending on relation type and entities in ent_array_1. It is an error to get a relation for a side with status iRel_NOTEXIST.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent_array_1Array of entities whose relations are being queried
[in]ent_array_1_sizeNumber of entities in ent_array_1
[in]switch_orderEntities in ent_array_1 are related with 1st (=0) or 2nd (=1) interface of this relation pair
[in,out]ent_array_2Pointer to array of entity handles returned from function
[in,out]ent_array_2_allocatedPointer to allocated size of ent_array_2
[out]ent_array_2_sizePointer to occupied size of ent_array_2
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 371 of file iRel_Lasso.cpp.

References ALLOC_CHECK_ARRAY, ASSOCPAIRI, CHK_ERROR, CHK_PAIR, iBase_SUCCESS, KEEP_ARRAY, and RETURN.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );
    ALLOC_CHECK_ARRAY( ent_array_2, ent_array_1_size );CHK_ERROR( ASSOCPAIRI->get_relation( iface_no, ent_array_1, ent_array_1_size, *ent_array_2 ) );

    KEEP_ARRAY( ent_array_2 );
    RETURN( iBase_SUCCESS );
}
void iRel_getEntArrSetArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle ent_array_1,
int  ent_array_1_size,
int  switch_order,
iBase_EntitySetHandle **  entset_array_2,
int *  entset_array_2_allocated,
int *  entset_array_2_size,
int *  err 
)

Get entity sets related to entities in specified array and relation, pairwise.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent_array_1Array of entities whose relations are being queried
[in]ent_array_1_sizeNumber of entities in ent_array_1
[in]switch_orderEntities in ent_array_1 are related with 1st (=0) or 2nd (=1) interface of this relation pair
[in,out]set_array_2Pointer to array of entity set handles returned from function
[in,out]set_array_2_allocatedPointer to allocated size of entset_array_2
[out]set_array_2_sizePointer to occupied size of entset_array_2
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 390 of file iRel_Lasso.cpp.

References ALLOC_CHECK_ARRAY, ASSOCPAIRI, CHK_ERROR, CHK_PAIR, iBase_SUCCESS, KEEP_ARRAY, and RETURN.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );
    ALLOC_CHECK_ARRAY( set_array_2, ent_array_1_size );CHK_ERROR( ASSOCPAIRI->get_relation( iface_no, ent_array_1, ent_array_1_size, *set_array_2 ) );

    KEEP_ARRAY( set_array_2 );
    RETURN( iBase_SUCCESS );
}
void iRel_getEntArrSetIterArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle ent_array_1,
int  ent_array_1_size,
int  switch_order,
iBase_EntityIterator **  entiter,
int *  entiter_allocated,
int *  entiter_size,
int *  err 
)

Get entity iterators related to entity sets in specified array and relation.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent_array_1Array of entities whose relations are being queried
[in]ent_array_1_sizeNumber of entities in ent_array_1
[in]switch_orderEntities in ent_array_1 are related with 1st (=0) or 2nd (=1) interface of this relation pair
[in,out]entiterPointer to array of entity iterator handles returned from function
[in,out]entiter_allocatedPointer to allocated size of entiter
[out]entiter_sizePointer to occupied size of entiter
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 447 of file iRel_Lasso.cpp.

References ALLOC_CHECK_ARRAY, ASSOCPAIRI, CHK_ERROR, CHK_PAIR, iBase_SUCCESS, KEEP_ARRAY, and RETURN.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );
    ;
    ALLOC_CHECK_ARRAY( entiter, ent_array_1_size );CHK_ERROR( ASSOCPAIRI->get_relation( iface_no, ent_array_1, ent_array_1_size, *entiter ) );

    KEEP_ARRAY( entiter );
    RETURN( iBase_SUCCESS );
}
void iRel_getEntEntRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle  ent1,
int  switch_order,
iBase_EntityHandle ent2,
int *  err 
)

Get entity related to specified entity and relation handle.

Get entity related to specified entity and relation handle. Also returns whether the related entity is an entity or a set. It is an error to get a relation for a side with status iRel_NOTEXIST.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent11st entity of relation being queried
[in]switch_order1st entity is related to 1st interface (=0) or 2nd interface (=1) of relation pair
[out]ent2Pointer to entity related to ent1
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 311 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );CHK_ERROR( ASSOCPAIRI->get_relation( iface_no, &ent1, 1, ent2 ) );
}
void iRel_getEntSetIterRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle  ent1,
int  switch_order,
iBase_EntityIterator entIter,
int *  err 
)

Get entity iterator related to specified entity set and relation handle.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent1ent1 1st entity set of relation being queried
[in]switch_order1st entity is related to 1st interface (=0) or 2nd interface (=1) of relation pair
[out]entset2Returned entity iterator
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 359 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );CHK_ERROR( ASSOCPAIRI->get_relation( iface_no, &ent1, 1, entset2 ) );
}
void iRel_getEntSetRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle  ent1,
int  switch_order,
iBase_EntitySetHandle entset2,
int *  err 
)

Get entity set related to specified entity and relation handle.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent1entity of relation being queried
[in]switch_order1st entity is related to 1st interface (=0) or 2nd interface (=1) of relation pair
[out]set2Pointer to entity set related to ent1
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 323 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );CHK_ERROR( ASSOCPAIRI->get_relation( iface_no, &ent1, 1, set2 ) );
}
void iRel_getErrorType ( iRel_Instance  instance,
int *  error_type 
)

Get the error type returned from the last iRel function.

Get the error type returned from the last iRel function. Value returned is a member of the iBase_ErrorType enumeration.

Parameters:
[in]instanceiRel instance handle
[out]error_typeError type returned from last iRel function

Definition at line 27 of file iRel_Lasso.cpp.

References iBase_FAILURE, and LASSOI.

{
    if( instance == NULL )
        *error_type = iBase_FAILURE;
    else
        *error_type = LASSOI->lastErrorType;
}
void iRel_getPairInfo ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_Instance iface1,
int *  ent_or_set1,
int *  iface_type1,
int *  irel_status1,
iBase_Instance iface2,
int *  ent_or_set2,
int *  iface_type2,
int *  irel_status2,
int *  err 
)

Get information for this relation handle.

Get information about the interfaces and relation type for this relation. Relation type for each side is passed back as integers, but values will be from RelationType enumeration.

Parameters:
[in]instanceiRel instance handle
[in]pairhandle of relation pair being queried
[out]iface1Side 1 instance for this relation
[out]ent_or_set1relation type for side 1 of this relation
[out]iface_type1Interface type for side 1 of this relation
[out]irel_status1The status of the first side of this relation
[out]iface2Side 2 instance for this relation
[out]ent_or_set2Relation type for side 2 of this relation
[out]iface_type2Interface type for side 2 of this relation
[out]irel_status2Status of the 2nd side of this relation
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 89 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_PAIR, iBase_SUCCESS, and RETURN.

{
    CHK_PAIR();

    *iface1       = ASSOCPAIRI->iface_instance( 0 );
    *ent_or_set1  = ASSOCPAIRI->relation_type( 0 );
    *iface_type1  = ASSOCPAIRI->iface_type( 0 );
    *irel_status1 = ASSOCPAIRI->relation_status( 0 );
    *iface2       = ASSOCPAIRI->iface_instance( 1 );
    *iface_type2  = ASSOCPAIRI->iface_type( 1 );
    *ent_or_set2  = ASSOCPAIRI->relation_type( 1 );
    *irel_status2 = ASSOCPAIRI->relation_status( 1 );

    RETURN( iBase_SUCCESS );
}
void iRel_getSetArrEntArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle entset_array_1,
int  entset_array_1_size,
int  switch_order,
iBase_EntityHandle **  ent_array_2,
int *  ent_array_2_allocated,
int *  ent_array_2_size,
int *  err 
)

Get entities related to entity sets in specified array and relation, pairwise.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]set_array_1Array of entity sets whose relations are being queried
[in]set_array_1_sizeNumber of entity sets in entset_array_1
[in]switch_orderEntities in ent_array_1 are related with 1st (=0) or 2nd (=1) interface of this relation pair
[in,out]ent_array_2Pointer to array of entity handles returned from function
[in,out]ent_array_2_allocatedPointer to allocated size of ent_array_2
[out]ent_array_2_sizePointer to occupied size of ent_array_2
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 409 of file iRel_Lasso.cpp.

References ALLOC_CHECK_ARRAY, ASSOCPAIRI, CHK_ERROR, CHK_PAIR, iBase_SUCCESS, KEEP_ARRAY, and RETURN.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );
    ALLOC_CHECK_ARRAY( ent_array_2, set_array_1_size );CHK_ERROR( ASSOCPAIRI->get_relation( iface_no, set_array_1, set_array_1_size, *ent_array_2 ) );

    KEEP_ARRAY( ent_array_2 );
    RETURN( iBase_SUCCESS );
}
void iRel_getSetArrSetArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle entset_array_1,
int  entset_array_1_size,
int  switch_order,
iBase_EntitySetHandle **  entset_array_2,
int *  entset_array_2_allocated,
int *  entset_array_2_size,
int *  err 
)

Get entity sets related to entity sets in specified array and relation, pairwise.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]set_array_1Array of entity sets whose relations are being queried
[in]set_array_1_sizeNumber of entity sets in entset_array_1
[in]switch_orderEntities in ent_array_1 are related with 1st (=0) or 2nd (=1) interface of this relation pair
[in,out]set_array_2Pointer to array of entity handles returned from function
[in,out]set_array_2_allocatedPointer to allocated size of entset_array_2
[out]set_array_2_sizePointer to occupied size of entset_array_2
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 428 of file iRel_Lasso.cpp.

References ALLOC_CHECK_ARRAY, ASSOCPAIRI, CHK_ERROR, CHK_PAIR, iBase_SUCCESS, KEEP_ARRAY, and RETURN.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );
    ALLOC_CHECK_ARRAY( set_array_2, set_array_1_size );CHK_ERROR( ASSOCPAIRI->get_relation( iface_no, set_array_1, set_array_1_size, *set_array_2 ) );

    KEEP_ARRAY( set_array_2 );
    RETURN( iBase_SUCCESS );
}
void iRel_getSetEntRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle  entset1,
int  switch_order,
iBase_EntityHandle ent2,
int *  err 
)

Get entity related to specified entity set and relation handle.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]set1entity set of relation being queried
[in]switch_order1st entity is related to 1st interface (=0) or 2nd interface (=1) of relation pair
[out]ent2Pointer to entity related to entset1
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 335 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );CHK_ERROR( ASSOCPAIRI->get_relation( iface_no, &set1, 1, ent2 ) );
}
void iRel_getSetSetRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle  entset1,
int  switch_order,
iBase_EntitySetHandle entset2,
int *  err 
)

Get entity set related to specified entity set and relation handle.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]set11st entity set of relation being queried
[in]switch_order1st entity is related to 1st interface (=0) or 2nd interface (=1) of relation pair
[out]set2Pointer to entity set related to entset1
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 347 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );CHK_ERROR( ASSOCPAIRI->get_relation( iface_no, &set1, 1, set2 ) );
}
void iRel_inferAllRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
int *  err 
)

Infer relations between entities in specified pair of interfaces.

Infer relations between entities in specified pair of interfaces. The criteria used to infer these relations depends on the interfaces in the pair, the iRel implementation, and the source of the data in those interfaces.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 660 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, CHK_PAIR, iRel_ENTITY, and iRel_inferArrArrRelations().

{
    CHK_PAIR();

    // get all entities in those interfaces
    int result;

    iBase_EntityHandle* ents1 = NULL;
    int ents1_alloc           = 0, ents1_size;
    if( ASSOCPAIRI->relation_type( 0 ) != iRel_ENTITY )
        result = ASSOCPAIRI->get_all_sets( 0, (iBase_EntitySetHandle**)&ents1, &ents1_alloc, &ents1_size );
    else
        result = ASSOCPAIRI->get_all_entities( 0, -1, &ents1, &ents1_alloc, &ents1_size );CHK_ERROR( result );

    iBase_EntityHandle* ents2 = NULL;
    int ents2_alloc           = 0, ents2_size;
    if( ASSOCPAIRI->relation_type( 1 ) != iRel_ENTITY )
        result = ASSOCPAIRI->get_all_sets( 1, (iBase_EntitySetHandle**)&ents2, &ents2_alloc, &ents2_size );
    else
        result = ASSOCPAIRI->get_all_entities( 1, -1, &ents2, &ents2_alloc, &ents2_size );CHK_ERROR( result );

    iRel_inferArrArrRelations( instance, pair, ents1, ents1_size, ASSOCPAIRI->relation_type( 0 ), ents2, ents2_size,
                               ASSOCPAIRI->relation_type( 1 ), &result );

    free( ents1 );
    free( ents2 );CHK_ERROR( result );
}
void iRel_inferAllRelationsAndType ( iRel_Instance  instance,
iRel_PairHandle pair,
int *  err 
)

Infer relations and relation type between entities in specified pair of interfaces.

Infer relations between entities in specified pair of interfaces, and the relation type used by this iRel implementation. The criteria used to infer these relations depends on the interfaces in the pair, the iRel implementation, and the source of the data in those interfaces.

Parameters:
[in]instanceiRel instance handle
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 688 of file iRel_Lasso.cpp.

References ERROR, and iBase_NOT_SUPPORTED.

{
    ERROR( iBase_NOT_SUPPORTED, "Not currently supported." );
}
static void iRel_inferArrArrRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle ents1,
const int  ents1_size,
int  ent_or_set1,
iBase_EntityHandle ents2,
const int  ents2_size,
int  ent_or_set2,
int *  err 
) [static]

Definition at line 550 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, dim, get_gids_and_dims(), iBase_SUCCESS, iRel_ENTITY, and RETURN.

Referenced by iRel_inferAllRelations(), iRel_inferArrRelations(), iRel_inferEntArrEntArrRelations(), iRel_inferEntArrSetArrRelations(), iRel_inferSetArrEntArrRelations(), and iRel_inferSetArrSetArrRelations().

{
    int result;

    std::vector< int > ents_gids, ents_dims;
    std::map< const int, iBase_EntityHandle > ents_gid_map[4];

    get_gids_and_dims( pair, 0, ents1, ents1_size, ent_or_set1, ents_gids, ents_dims );
    for( int i = 0; i < ents1_size; i++ )
    {
        int dim = ents_dims[i];
        if( 0 <= dim && 3 >= dim ) ents_gid_map[dim][ents_gids[i]] = ents1[i];
    }

    get_gids_and_dims( pair, 1, ents2, ents2_size, ent_or_set2, ents_gids, ents_dims );
    for( int i = 0; i < ents2_size; i++ )
    {
        int dim = ents_dims[i];

        // only check entities for which the dimension entry is in a reasonable
        // range
        if( 0 > dim || 3 < dim ) continue;

        // there's a match if there's an entity with that dimension with matching id
        std::map< const int, iBase_EntityHandle >::iterator iter = ents_gid_map[dim].find( ents_gids[i] );

        // if it matches, set the relation tags for those entities
        if( iter != ents_gid_map[dim].end() )
        {
            if( ent_or_set1 == iRel_ENTITY && ent_or_set2 == iRel_ENTITY )
            {
                result = ASSOCPAIRI->set_relation( ( *iter ).second, ents2[i] );
            }
            else if( ent_or_set1 != iRel_ENTITY && ent_or_set2 == iRel_ENTITY )
            {
                result = ASSOCPAIRI->set_relation( (iBase_EntitySetHandle)( *iter ).second, ents2[i] );
            }
            else if( ent_or_set1 == iRel_ENTITY && ent_or_set2 != iRel_ENTITY )
            {
                result = ASSOCPAIRI->set_relation( ( *iter ).second, (iBase_EntitySetHandle)ents2[i] );
            }
            else
            {  // ent_or_set1 != iRel_ENTITY && ent_or_set2 != iRel_ENTITY
                result = ASSOCPAIRI->set_relation( (iBase_EntitySetHandle)( *iter ).second,
                                                   (iBase_EntitySetHandle)ents2[i] );
            }

            CHK_ERROR( result );
        }
    }

    RETURN( iBase_SUCCESS );
}
static void iRel_inferArrRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle entities,
int  entities_size,
bool  is_set,
int  iface_no,
int *  err 
) [static]

Definition at line 711 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, CHK_PAIR, entities, ERROR, iBase_INVALID_ARGUMENT, iRel_ENTITY, iRel_inferArrArrRelations(), and swap().

Referenced by iRel_inferEntArrRelations(), and iRel_inferSetArrRelations().

{
    CHK_PAIR();

    if( 0 > iface_no || 1 < iface_no )
    {
        ERROR( iBase_INVALID_ARGUMENT, "Interface number must be 0 or 1" );
    }
    else if( ( is_set && ASSOCPAIRI->relation_type( iface_no ) == iRel_ENTITY ) ||
             ( !is_set && ASSOCPAIRI->relation_type( iface_no ) != iRel_ENTITY ) )
    {
        ERROR( iBase_INVALID_ARGUMENT, "is_set must match entOrSet in call to "
                                       "inferArrRelations" );
    }

    // get all entities in iface2
    int result;
    iBase_EntityHandle* ents1 = entities;
    int ents1_size            = entities_size;
    iBase_EntityHandle* ents2 = NULL;
    int ents2_alloc           = 0, ents2_size;
    if( ASSOCPAIRI->relation_type( 1 - iface_no ) != iRel_ENTITY )
        result = ASSOCPAIRI->get_all_sets( !iface_no, (iBase_EntitySetHandle**)&ents2, &ents2_alloc, &ents2_size );
    else
        result = ASSOCPAIRI->get_all_entities( !iface_no, -1, &ents2, &ents2_alloc, &ents2_size );CHK_ERROR( result );

    // switch so that entity lists always go into inferArrArrRelations in
    // forward order wrt pair
    if( 1 == iface_no )
    {
        std::swap( ents1, ents2 );
        std::swap( ents1_size, ents2_size );
    }

    iRel_inferArrArrRelations( instance, pair, ents1, ents1_size, ASSOCPAIRI->relation_type( 0 ), ents2, ents2_size,
                               ASSOCPAIRI->relation_type( 1 ), &result );

    free( 1 == iface_no ? ents1 : ents2 );

    CHK_ERROR( result );
}
void iRel_inferEntArrEntArrRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle ents1,
const int  ents1_size,
iBase_EntityHandle ents2,
const int  ents2_size,
int *  err 
)

Definition at line 612 of file iRel_Lasso.cpp.

References iRel_inferArrArrRelations().

{
    iRel_inferArrArrRelations( instance, pair, ents1, ents1_size, 0, ents2, ents2_size, 0, err );
}
void iRel_inferEntArrRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle entities,
int  entities_size,
int  iface_no,
int *  err 
)

Infer relations corresponding to specified entities and relation pair.

Infer relations corresponding to specified entities and relation pair. The criteria used to infer these relations depends on the interfaces in the pair, the iRel implementation, and the source of the data in those interfaces.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]entitiesArray of entities whose relation are being inferred
[in]entities_sizeNumber of entities in array
[in]iface_noEntities correspond to 1st (=0) or 2nd (=1) interface in relation pair
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 759 of file iRel_Lasso.cpp.

References iRel_inferArrRelations().

{
    iRel_inferArrRelations( instance, pair, entities, entities_size, false, iface_no, err );
}
void iRel_inferEntArrSetArrRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle ents1,
const int  ents1_size,
iBase_EntitySetHandle ents2,
const int  ents2_size,
int *  err 
)

Definition at line 623 of file iRel_Lasso.cpp.

References iRel_inferArrArrRelations().

{
    iRel_inferArrArrRelations( instance, pair, ents1, ents1_size, 0, (iBase_EntityHandle*)ents2, ents2_size, 1, err );
}
void iRel_inferEntRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle  entity,
int  iface_no,
int *  err 
)

Infer relations corresponding to specified entity and relation pair.

Infer relations corresponding to specified entity and relation pair. The criteria used to infer these relations depends on the interfaces in the pair, the iRel implementation, and the source of the data in those interfaces.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]entityEntity whose relations are being inferred
[in]iface_noEntity corresponds to 1st (=0) or 2nd (=1) interface in relation pair
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 693 of file iRel_Lasso.cpp.

References iRel_inferEntArrRelations.

{
    iRel_inferEntArrRelations( instance, pair, &entity, 1, iface_no, err );
}
void iRel_inferSetArrEntArrRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle ents1,
const int  ents1_size,
iBase_EntityHandle ents2,
const int  ents2_size,
int *  err 
)

Definition at line 634 of file iRel_Lasso.cpp.

References iRel_inferArrArrRelations().

{
    iRel_inferArrArrRelations( instance, pair, (iBase_EntityHandle*)ents1, ents1_size, 1, ents2, ents2_size, 0, err );
}
void iRel_inferSetArrRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle entity_sets,
int  entities_size,
int  iface_no,
int *  err 
)

Brief unavailable.

Description unavailable

Parameters:
[in]instanceiRel instance handle
[in]pairdescription unknown
[in]entitiesdescription unknown
[in]entities_sizedescription unknown
[in]iface_nodescription unknown
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 769 of file iRel_Lasso.cpp.

References iRel_inferArrRelations().

{
    iRel_inferArrRelations( instance, pair, (iBase_EntityHandle*)entities, entities_size, true, iface_no, err );
}
void iRel_inferSetArrSetArrRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle ents1,
const int  ents1_size,
int  ,
iBase_EntitySetHandle ents2,
const int  ents2_size,
int  ,
int *  err 
)

Definition at line 645 of file iRel_Lasso.cpp.

References iRel_inferArrArrRelations().

{
    iRel_inferArrArrRelations( instance, pair, (iBase_EntityHandle*)ents1, ents1_size, 1, (iBase_EntityHandle*)ents2,
                               ents2_size, 1, err );
}
void iRel_inferSetRelations ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle  entity_set,
int  iface_no,
int *  err 
)

Brief unavailable.

Description unavailable

Parameters:
[in]instanceiRel instance handle
[in]pairdescription unknown
[in]entitydescription unknown
[in]iface_nodescription unknown
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 702 of file iRel_Lasso.cpp.

References iRel_inferSetArrRelations.

{
    iRel_inferSetArrRelations( instance, pair, &entity, 1, iface_no, err );
}
void iRel_rmvEntArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle ent_array_1,
int  num_ent1,
int  switch_order,
int *  err 
)

Remove a relation from an array of entities.

Remove a relation from an array of entities

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent_arrayArray of entities of relation being removed
[in]num_entNumber of entities in array
[in]switch_orderentities are related to 1st interface (=0) or 2nd interface (=1) of relation pair
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 489 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );CHK_ERROR( ASSOCPAIRI->rmv_relation( iface_no, ent_array, num_ent ) );
}
void iRel_rmvEntRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle  ent,
int  switch_order,
int *  err 
)

Remove a relation from an entity.

Remove a relation from an entity

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ententity of relation being removed
[in]switch_orderentity is related to 1st interface (=0) or 2nd interface (=1) of relation pair
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 467 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );CHK_ERROR( ASSOCPAIRI->rmv_relation( iface_no, &ent, 1 ) );
}
void iRel_rmvSetArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle entset_array_1,
int  num_entset1,
int  switch_order,
int *  err 
)

Remove a relation from an array of entity sets.

Remove a relation from an array of entity sets

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]entset_arrayArray of entity sets of relation being removed
[in]num_entNumber of entity sets in array
[in]switch_orderentity sets are related to 1st interface (=0) or 2nd interface (=1) of relation pair
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 501 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );CHK_ERROR( ASSOCPAIRI->rmv_relation( iface_no, entset_array, num_ent ) );
}
void iRel_rmvSetRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle  set,
int  switch_order,
int *  err 
)

Remove a relation from an entity set.

Remove a relation from an entity set

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]entsetentity set of relation being removed
[in]switch_orderentity set is related to 1st interface (=0) or 2nd interface (=1) of relation pair
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 478 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();

    int iface_no = ( switch_order ? 1 : 0 );CHK_ERROR( ASSOCPAIRI->rmv_relation( iface_no, &entset, 1 ) );
}
void iRel_setEntArrEntArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle ent_array_1,
int  num_ent1,
iBase_EntityHandle ent_array_2,
int  num_ent2,
int *  err 
)

Set relations between arrays of entities pairwise, ent_array_1[i]<->ent_array_2[i].

Set relations between arrays of entities pairwise, ent_array_1[i]<->ent_array_2[i]. If either array contains sets and that side of the relation is 'both'-type, set relations for individual entities in those sets too. It is an error to set a relation on a pair with both sides not iRel_ACTIVE.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent_array_11st array of entities of relation being set
[in]num_entities1Number of entities in 1st array
[in]ent_array_22nd array of entities of relation being set
[in]num_entities2Number of entities in 2nd array
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 191 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_PAIR, ERROR, iBase_INVALID_ENTITY_COUNT, iBase_SUCCESS, iRel_getDescription, and RETURN.

{
    CHK_PAIR();

    if( num_entities1 != num_entities2 )
        ERROR( iBase_INVALID_ENTITY_COUNT, "setEntArrEntArrRelation doesn't support "
                                           "different #'s of entities." );

    int result = iBase_SUCCESS;
    char descr[200];
    for( int i = 0; i < num_entities1; i++ )
    {
        int tmp_result = ASSOCPAIRI->set_relation( ent_array_1[i], ent_array_2[i] );
        if( result == iBase_SUCCESS && tmp_result != iBase_SUCCESS )
        {
            result = tmp_result;
            iRel_getDescription( instance, descr, sizeof( descr ) );
        }
    }

    if( result != iBase_SUCCESS ) ERROR( result, descr );
    RETURN( iBase_SUCCESS );
}
void iRel_setEntArrSetArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle ent_array_1,
int  num_ent1,
iBase_EntitySetHandle entset_array_2,
int  num_set2,
int *  err 
)

Set relations between arrays of entities and entity sets.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent_array_11st array of entities of relation being set
[in]num_entities1Number of entities in 1st array
[in]set_array_22nd array of entities of relation being set
[in]num_sets2Number of entity sets in 2nd array
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 221 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_PAIR, ERROR, iBase_INVALID_ENTITY_COUNT, iBase_SUCCESS, iRel_getDescription, and RETURN.

{
    CHK_PAIR();

    if( num_entities1 != num_sets2 )
        ERROR( iBase_INVALID_ENTITY_COUNT, "setEntArrSetArrRelation doesn't support "
                                           "different #'s of entities." );

    int result = iBase_SUCCESS;
    char descr[200];
    for( int i = 0; i < num_entities1; i++ )
    {
        int tmp_result = ASSOCPAIRI->set_relation( ent_array_1[i], set_array_2[i] );
        if( result == iBase_SUCCESS && tmp_result != iBase_SUCCESS )
        {
            result = tmp_result;
            iRel_getDescription( instance, descr, sizeof( descr ) );
        }
    }

    if( result != iBase_SUCCESS ) ERROR( result, descr );
    RETURN( iBase_SUCCESS );
}
void iRel_setEntEntRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle  ent1,
iBase_EntityHandle  ent2,
int *  err 
)

Set a relation between two entities.

Set a relation between an entity and several entities. It is an error to set a relation on a pair with both sides not iRel_ACTIVE.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent11st entity of relation being set
[in]ent22nd entity of relation being set
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 155 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();CHK_ERROR( ASSOCPAIRI->set_relation( ent1, ent2 ) );
}
void iRel_setEntSetRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntityHandle  ent1,
iBase_EntitySetHandle  entset2,
int *  err 
)

Set a relation between an entity and an entity set.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]ent1entity of relation being set
[in]set2entity set of relation being set
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 164 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();CHK_ERROR( ASSOCPAIRI->set_relation( ent1, set2 ) );
}
void iRel_setSetArrEntArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle entset_array_1,
int  num_set1,
iBase_EntityHandle ent_array_2,
int  num_ent2,
int *  err 
)

Set relations between arrays of entity sets and entities.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]set_array_11st array of entities of relation being set
[in]num_sets1Number of entity sets in 1st array
[in]ent_array_22nd array of entities of relation being set
[in]num_entities2Number of entities in 2nd array
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 251 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_PAIR, ERROR, iBase_INVALID_ENTITY_COUNT, iBase_SUCCESS, iRel_getDescription, and RETURN.

{
    CHK_PAIR();

    if( num_sets1 != num_entities2 )
        ERROR( iBase_INVALID_ENTITY_COUNT, "setSetArrEntArrRelation doesn't support "
                                           "different #'s of entities." );

    int result = iBase_SUCCESS;
    char descr[200];
    for( int i = 0; i < num_sets1; i++ )
    {
        int tmp_result = ASSOCPAIRI->set_relation( set_array_1[i], ent_array_2[i] );
        if( result == iBase_SUCCESS && tmp_result != iBase_SUCCESS )
        {
            result = tmp_result;
            iRel_getDescription( instance, descr, sizeof( descr ) );
        }
    }

    if( result != iBase_SUCCESS ) ERROR( result, descr );
    RETURN( iBase_SUCCESS );
}
void iRel_setSetArrSetArrRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle entset_array_1,
int  num_set1,
iBase_EntitySetHandle entset_array_2,
int  num_set2,
int *  err 
)

Set relations between arrays of entity sets pairwise, ent_array_1[i]<->ent_array_2[i].

Set relations between arrays of entities pairwise, ent_array_1[i]<->ent_array_2[i]. If either array contains sets and that side of the relation is 'both'-type, set relations for individual entities in those sets too. It is an error to set a relation on a pair with both sides not iRel_ACTIVE.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]set_array_11st array of entities of relation being set
[in]num_sets1Number of entities in 1st array
[in]set_array_22nd array of entities of relation being set
[in]num_sets2Number of entities in 2nd array
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 281 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_PAIR, ERROR, iBase_INVALID_ENTITY_COUNT, iBase_SUCCESS, iRel_getDescription, and RETURN.

{
    CHK_PAIR();

    if( num_sets1 != num_sets2 )
        ERROR( iBase_INVALID_ENTITY_COUNT, "setSetArrSetArrRelation doesn't support "
                                           "different #'s of entities." );

    int result = iBase_SUCCESS;
    char descr[200];
    for( int i = 0; i < num_sets1; i++ )
    {
        int tmp_result = ASSOCPAIRI->set_relation( set_array_1[i], set_array_2[i] );
        if( result == iBase_SUCCESS && tmp_result != iBase_SUCCESS )
        {
            result = tmp_result;
            iRel_getDescription( instance, descr, sizeof( descr ) );
        }
    }

    if( result != iBase_SUCCESS ) ERROR( result, descr );
    RETURN( iBase_SUCCESS );
}
void iRel_setSetEntRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle  entset1,
iBase_EntityHandle  ent2,
int *  err 
)

Set a relation between an entity set an an entity.

Description unavailable.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]set1entity set of relation being set
[in]ent2entity of relation being set
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 173 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();CHK_ERROR( ASSOCPAIRI->set_relation( set1, ent2 ) );
}
void iRel_setSetSetRelation ( iRel_Instance  instance,
iRel_PairHandle  pair,
iBase_EntitySetHandle  entset1,
iBase_EntitySetHandle  entset2,
int *  err 
)

Set a relation between two entity sets.

Description unavailable. Set a relation between an entity and several entities. It is an error to set a relation on a pair with both sides not iRel_ACTIVE.

Parameters:
[in]instanceiRel instance handle
[in]pairRelation pair handle being queried
[in]set11st entity set of relation being set
[in]set22nd entity set of relation being set
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 182 of file iRel_Lasso.cpp.

References ASSOCPAIRI, CHK_ERROR, and CHK_PAIR.

{
    CHK_PAIR();CHK_ERROR( ASSOCPAIRI->set_relation( set1, set2 ) );
}

Variable Documentation

const bool debug = false

Copyright 2006 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Coroporation, the U.S. Government retains certain rights in this software.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

Definition at line 25 of file iRel_Lasso.cpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines