MOAB: Mesh Oriented datABase  (version 5.5.0)
AssocPair.hpp
Go to the documentation of this file.
1 #ifndef ASSOCPAIR_HPP
2 #define ASSOCPAIR_HPP
3 
4 #include "iRel_Lasso.hpp"
5 #include "AssocPairSide.hpp"
6 
7 #include <sstream>
8 
9 class Lasso;
10 
11 class AssocPair
12 {
13  public:
14  friend class Lasso;
15 
17  iBase_Instance iface0,
18  iRel_RelationType ent_or_set0,
19  iRel_IfaceType type0,
20  iRel_RelationStatus status0,
21  iBase_Instance iface1,
22  iRel_RelationType ent_or_set1,
23  iRel_IfaceType type1,
24  iRel_RelationStatus status1 );
25 
26  ~AssocPair();
27 
28  iBase_Instance iface_instance( int iface_no ) const;
29  iRel_IfaceType iface_type( int iface_no ) const;
30  iRel_RelationType relation_type( int iface_no ) const;
31  iRel_RelationStatus relation_status( int iface_no ) const;
32 
33  int change_type( int iface_no, iRel_RelationType type );
34  int change_status( int iface_no, iRel_RelationStatus status );
35 
36  bool equivalent( iBase_Instance iface1, iBase_Instance iface2, bool* order_switched = NULL );
37  bool equivalent( iRel_IfaceType type1, iRel_IfaceType type2, bool* order_switched = NULL );
38 
40 
41  int get_all_entities( int iface_no,
42  int dimension,
44  int* entities_alloc,
45  int* entities_size );
46 
47  int get_all_sets( int iface_no, iBase_EntitySetHandle** sets, int* sets_alloc, int* sets_size );
48 
49  int get_entities( int iface_no,
50  int dimension,
51  iBase_EntitySetHandle set_handle,
53  int* entities_alloc,
54  int* entities_size );
55 
56  int get_ents_dims( int iface_no,
58  int entities_size,
59  int** ent_types,
60  int* ent_types_alloc,
61  int* ent_types_size );
62 
67 
68  int get_relation( int iface_no, iBase_EntityHandle* entities, int num_entities, iBase_EntityHandle* tag_values );
69  int get_relation( int iface_no, iBase_EntitySetHandle* sets, int num_sets, iBase_EntityHandle* tag_values );
70  int get_relation( int iface_no, iBase_EntityHandle* entities, int num_entities, iBase_EntitySetHandle* tag_values );
71  int get_relation( int iface_no, iBase_EntitySetHandle* sets, int num_sets, iBase_EntitySetHandle* tag_values );
72  int get_relation( int iface_no, iBase_EntityHandle* entities, int num_entities, iBase_EntityIterator* tag_values );
73  int get_relation( int iface_no, iBase_EntitySetHandle* sets, int num_sets, iBase_EntityIterator* tag_values );
74 
75  int rmv_relation( int iface_no, iBase_EntityHandle* entities, int num_entities );
76  int rmv_relation( int iface_no, iBase_EntitySetHandle* sets, int num_sets );
77 
78  int get_gids( int iface_no, iBase_EntityHandle* entities, int num_entities, int* tag_values );
79  int get_gids( int iface_no, iBase_EntitySetHandle* sets, int num_sets, int* tag_values );
80 
81  int get_dims( int iface_no, iBase_EntityHandle* entities, int num_entities, int* tag_values );
82  int get_dims( int iface_no, iBase_EntitySetHandle* sets, int num_sets, int* tag_values );
83 
84  private:
86 
87  int populate_recursive( int iface_no, iBase_EntitySetHandle set, iBase_EntityHandle related_ent );
88  int populate_recursive( int iface_no, iBase_EntitySetHandle set, iBase_EntitySetHandle related_set );
89 
90  int unpopulate_recursive( int iface_no, iBase_EntitySetHandle set );
91 
96  int pairId;
97 
98  static int currId;
99 };
100 
101 inline iBase_Instance AssocPair::iface_instance( int iface_no ) const
102 {
103  return relSides[iface_no]->instance();
104 }
105 
106 inline iRel_IfaceType AssocPair::iface_type( int iface_no ) const
107 {
108  return relSides[iface_no]->type();
109 }
110 
111 inline iRel_RelationType AssocPair::relation_type( int iface_no ) const
112 {
113  return entOrSet[iface_no];
114 }
115 
117 {
118  return relStatus[iface_no];
119 }
120 
122 {
123  return reinterpret_cast< AssocPair* >( pair );
124 }
125 #define ASSOCPAIRI assocpair_handle( pair )
126 
127 #endif