lasso
iRel.h File Reference
#include "iBase.h"
#include "iRel_protos.h"

Go to the source code of this file.

Defines

#define IREL_VERSION_MAJOR   1
 Compile time version number digits.
#define IREL_VERSION_MINOR   1
#define IREL_VERSION_PATCH   0
#define IREL_MAJOR_VERSION   IREL_VERSION_MAJOR
 Maintain backward compatibility with old version symbol names.
#define IREL_MINOR_VERSION   IREL_VERSION_MINOR
#define IREL_PATCH_VERSION   IREL_VERSION_PATCH
#define IREL_VERSION_GE(Maj, Min, Pat)   ITAPS_VERSION_GE(Maj,Min,Pat)
 Version Comparison.
#define IREL_VERSION_STRING   ITAPS_VERSION_STRING_(iRel)
 Compose string represention of the iRel version number.
#define IREL_VERSION_TAG   ITAPS_VERSION_TAG_(iRel)
 Compose a symbol name derived from the current iRel version number.
#define IREL_CREATE_NAME__(A, B, C)   A##_##B##_##C
 Define iRel_create symbol such that it depends on version number.
#define IREL_CREATE_NAME_(A, B, C)   IREL_CREATE_NAME__(A,B,C)
#define IREL_CREATE_NAME(A)   IREL_CREATE_NAME_(A,IREL_VERSION_MAJOR,IREL_VERSION_MINOR)

Typedefs

typedef void * iRel_Instance
typedef struct
iRel_PairHandle_Private * 
iRel_PairHandle

Enumerations

enum  iRel_IfaceType {
  iRel_IfaceType_MIN = 0, iRel_IGEOM_IFACE = iRel_IfaceType_MIN, iRel_IMESH_IFACE, iRel_IFIELD_IFACE,
  iRel_IREL_IFACE, iRel_FBIGEOM_IFACE, iRel_IfaceType_MAX = iRel_FBIGEOM_IFACE
}
enum  iRel_RelationType {
  iRel_RelationType_MIN = 0, iRel_ENTITY = iRel_RelationType_MIN, iRel_SET, iRel_BOTH,
  iRel_RelationType_MAX = iRel_BOTH
}
enum  iRel_RelationStatus {
  iRel_RelationStatus_MIN = 0, iRel_ACTIVE = iRel_RelationType_MIN, iRel_INACTIVE, iRel_NOTEXIST,
  iRel_RelationStatus_MAX = iRel_NOTEXIST
}

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 *options, 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 entset2, int *err)
 Set a relation between an entity and an entity set.
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.
void iRel_setSetSetRelation (iRel_Instance instance, iRel_PairHandle pair, iBase_EntitySetHandle entset1, iBase_EntitySetHandle entset2, 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_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].
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.
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.
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].
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 *entset2, int *err)
 Get entity set related to specified entity and relation handle.
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.
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.
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.
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 **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.
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.
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.
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 set, 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_1, int num_ent1, 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_1, int num_entset1, int switch_order, int *err)
 Remove a relation from an array of entity sets.
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 *pair, 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_set, int iface_no, int *err)
 Brief unavailable.
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 *entity_sets, int entities_size, int iface_no, int *err)
 Brief unavailable.

Define Documentation

Definition at line 57 of file iRel.h.

#define IREL_CREATE_NAME_ (   A,
  B,
 
)    IREL_CREATE_NAME__(A,B,C)

Definition at line 56 of file iRel.h.

#define IREL_CREATE_NAME__ (   A,
  B,
 
)    A##_##B##_##C

Define iRel_create symbol such that it depends on version number.

Note: We ran into problems with this as it influences or is influenced by fortran name mangling and so breaks fortran compilation. So, this is currently disabled.

Definition at line 55 of file iRel.h.

Maintain backward compatibility with old version symbol names.

Definition at line 22 of file iRel.h.

Definition at line 23 of file iRel.h.

Definition at line 24 of file iRel.h.

#define IREL_VERSION_GE (   Maj,
  Min,
  Pat 
)    ITAPS_VERSION_GE(Maj,Min,Pat)

Version Comparison.

Evaluates to true at CPP time if the version of iRel currently being compiled is greater than or equal to the version specified.

Definition at line 33 of file iRel.h.

#define IREL_VERSION_MAJOR   1

Compile time version number digits.

iRel maintains a major, minor and patch digit in its version number. Technically speaking, there is not much practical value in patch digit for an interface specification. A patch release is typically only used for bug fix releases. Although it is rare, sometimes a bug fix necessitates an API change. So, we define a patch digit for iRel.

Definition at line 14 of file iRel.h.

#define IREL_VERSION_MINOR   1

Definition at line 15 of file iRel.h.

#define IREL_VERSION_PATCH   0

Definition at line 16 of file iRel.h.

#define IREL_VERSION_STRING   ITAPS_VERSION_STRING_(iRel)

Compose string represention of the iRel version number.

Definition at line 39 of file iRel.h.

#define IREL_VERSION_TAG   ITAPS_VERSION_TAG_(iRel)

Compose a symbol name derived from the current iRel version number.

Definition at line 45 of file iRel.h.


Typedef Documentation

typedef void* iRel_Instance

Definition at line 70 of file iRel.h.

typedef struct iRel_PairHandle_Private* iRel_PairHandle

Definition at line 71 of file iRel.h.


Enumeration Type Documentation

Enumerator:
iRel_IfaceType_MIN 

facilitates iteration over all values

iRel_IGEOM_IFACE 

description unavailable

iRel_IMESH_IFACE 

description unavailable

iRel_IFIELD_IFACE 

description unavailable

iRel_IREL_IFACE 

description unavailable

iRel_FBIGEOM_IFACE 

description unavailable

iRel_IfaceType_MAX 

facilitates iteration over all values

Definition at line 81 of file iRel.h.

Enumerator:
iRel_RelationStatus_MIN 

facilitates iteration over all values

iRel_ACTIVE 

the relation on this side is active and up to date

iRel_INACTIVE 

the relation on this side is inactive, and may be out of date

iRel_NOTEXIST 

the relation on this side is not stored

iRel_RelationStatus_MAX 

facilitates iteration over all values

Definition at line 125 of file iRel.h.

Enumerator:
iRel_RelationType_MIN 

facilitates iteration over all values

iRel_ENTITY 

description unavailable

iRel_SET 

description unavailable

iRel_BOTH 

description unavailable

iRel_RelationType_MAX 

facilitates iteration over all values

Definition at line 104 of file iRel.h.


Function Documentation

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 138 of file iRel_Lasso.cpp.

{
  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 123 of file iRel_Lasso.cpp.

{
  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:
optionsconst Options for the implementation
[in]instanceiRel instance handle
[out]errReturned Error status (see iBase_ErrorType)
[in]options_lenLength of options string

Definition at line 48 of file iRel_Lasso.cpp.

{
  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 68 of file iRel_Lasso.cpp.

{
  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 62 of file iRel_Lasso.cpp.

{
  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 153 of file iRel_Lasso.cpp.

{
  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 163 of file iRel_Lasso.cpp.

{
  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.

{
  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 417 of file iRel_Lasso.cpp.

{
  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]entset_array_2Pointer to array of entity set handles returned from function
[in,out]entset_array_2_allocatedPointer to allocated size of entset_array_2
[out]entset_array_2_sizePointer to occupied size of entset_array_2
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 439 of file iRel_Lasso.cpp.

{
  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 505 of file iRel_Lasso.cpp.

{
  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 347 of file iRel_Lasso.cpp.

{
  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]entIterReturned entity iterator
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 403 of file iRel_Lasso.cpp.

{
  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]entset2Pointer to entity set related to ent1
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 361 of file iRel_Lasso.cpp.

{
  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.

{
  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 96 of file iRel_Lasso.cpp.

{
  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]entset_array_1Array of entity sets whose relations are being queried
[in]entset_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 461 of file iRel_Lasso.cpp.

{
  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]entset_array_1Array of entity sets whose relations are being queried
[in]entset_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]entset_array_2Pointer to array of entity handles returned from function
[in,out]entset_array_2_allocatedPointer to allocated size of entset_array_2
[out]entset_array_2_sizePointer to occupied size of entset_array_2
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 483 of file iRel_Lasso.cpp.

{
  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]entset1entity 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 375 of file iRel_Lasso.cpp.

{
  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]entset11st entity set of relation being queried
[in]switch_order1st entity is related to 1st interface (=0) or 2nd interface (=1) of relation pair
[out]entset2Pointer to entity set related to entset1
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 389 of file iRel_Lasso.cpp.

{
  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 744 of file iRel_Lasso.cpp.

{
  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
[in]pairRelation pair handle created by implementation
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 783 of file iRel_Lasso.cpp.

{
  ERROR(iBase_NOT_SUPPORTED, "Not currently supported.");
}
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 864 of file iRel_Lasso.cpp.

{
  iRel_inferArrRelations(instance, pair, entities, entities_size, false,
                         iface_no, 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 791 of file iRel_Lasso.cpp.

{
  iRel_inferEntArrRelations(instance, pair, &entity, 1, iface_no, 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]entity_setsdescription unknown
[in]entities_sizedescription unknown
[in]iface_nodescription unknown
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 876 of file iRel_Lasso.cpp.

{
  iRel_inferArrRelations(instance, pair, (iBase_EntityHandle*)entities,
                         entities_size, true, iface_no, 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]entity_setdescription unknown
[in]iface_nodescription unknown
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 801 of file iRel_Lasso.cpp.

{
  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_array_1Array of entities of relation being removed
[in]num_ent1Number 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 554 of file iRel_Lasso.cpp.

{
  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 528 of file iRel_Lasso.cpp.

{
  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_array_1Array of entity sets of relation being removed
[in]num_entset1Number 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 568 of file iRel_Lasso.cpp.

{
  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]setentity 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 541 of file iRel_Lasso.cpp.

{
  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_ent1Number of entities in 1st array
[in]ent_array_22nd array of entities of relation being set
[in]num_ent2Number of entities in 2nd array
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 227 of file iRel_Lasso.cpp.

{
  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_ent1Number of entities in 1st array
[in]entset_array_22nd array of entities of relation being set
[in]num_set2Number of entity sets in 2nd array
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 257 of file iRel_Lasso.cpp.

{
  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 183 of file iRel_Lasso.cpp.

{
  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]entset2entity set of relation being set
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 194 of file iRel_Lasso.cpp.

{
  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]entset_array_11st array of entities of relation being set
[in]num_set1Number of entity sets in 1st array
[in]ent_array_22nd array of entities of relation being set
[in]num_ent2Number of entities in 2nd array
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 287 of file iRel_Lasso.cpp.

{
  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]entset_array_11st array of entities of relation being set
[in]num_set1Number of entities in 1st array
[in]entset_array_22nd array of entities of relation being set
[in]num_set2Number of entities in 2nd array
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 317 of file iRel_Lasso.cpp.

{
  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]entset1entity set of relation being set
[in]ent2entity of relation being set
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 205 of file iRel_Lasso.cpp.

{
  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]entset11st entity set of relation being set
[in]entset22nd entity set of relation being set
[out]errReturned Error status (see iBase_ErrorType)

Definition at line 216 of file iRel_Lasso.cpp.

{
  CHK_PAIR();
  CHK_ERROR( ASSOCPAIRI->set_relation(set1, set2) );
}
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines