Branch data Line data Source code
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 : :
16 : : AssocPair( iRel_Instance instance, iBase_Instance iface0, iRel_RelationType ent_or_set0, iRel_IfaceType type0,
17 : : iRel_RelationStatus status0, iBase_Instance iface1, iRel_RelationType ent_or_set1, iRel_IfaceType type1,
18 : : iRel_RelationStatus status1 );
19 : :
20 : : ~AssocPair();
21 : :
22 : : iBase_Instance iface_instance( int iface_no ) const;
23 : : iRel_IfaceType iface_type( int iface_no ) const;
24 : : iRel_RelationType relation_type( int iface_no ) const;
25 : : iRel_RelationStatus relation_status( int iface_no ) const;
26 : :
27 : : int change_type( int iface_no, iRel_RelationType type );
28 : : int change_status( int iface_no, iRel_RelationStatus status );
29 : :
30 : : bool equivalent( iBase_Instance iface1, iBase_Instance iface2, bool* order_switched = NULL );
31 : : bool equivalent( iRel_IfaceType type1, iRel_IfaceType type2, bool* order_switched = NULL );
32 : :
33 : : bool contains( iBase_Instance iface );
34 : :
35 : : int get_all_entities( int iface_no, int dimension, iBase_EntityHandle** entities, int* entities_alloc,
36 : : int* entities_size );
37 : :
38 : : int get_all_sets( int iface_no, iBase_EntitySetHandle** sets, int* sets_alloc, int* sets_size );
39 : :
40 : : int get_entities( int iface_no, int dimension, iBase_EntitySetHandle set_handle, iBase_EntityHandle** entities,
41 : : int* entities_alloc, int* entities_size );
42 : :
43 : : int get_ents_dims( int iface_no, iBase_EntityHandle* entities, int entities_size, int** ent_types,
44 : : int* ent_types_alloc, int* ent_types_size );
45 : :
46 : : int set_relation( iBase_EntityHandle ent1, iBase_EntityHandle ent2 );
47 : : int set_relation( iBase_EntitySetHandle set1, iBase_EntityHandle ent2 );
48 : : int set_relation( iBase_EntityHandle ent1, iBase_EntitySetHandle set2 );
49 : : int set_relation( iBase_EntitySetHandle set1, iBase_EntitySetHandle set2 );
50 : :
51 : : int get_relation( int iface_no, iBase_EntityHandle* entities, int num_entities, iBase_EntityHandle* tag_values );
52 : : int get_relation( int iface_no, iBase_EntitySetHandle* sets, int num_sets, iBase_EntityHandle* tag_values );
53 : : int get_relation( int iface_no, iBase_EntityHandle* entities, int num_entities, iBase_EntitySetHandle* tag_values );
54 : : int get_relation( int iface_no, iBase_EntitySetHandle* sets, int num_sets, iBase_EntitySetHandle* tag_values );
55 : : int get_relation( int iface_no, iBase_EntityHandle* entities, int num_entities, iBase_EntityIterator* tag_values );
56 : : int get_relation( int iface_no, iBase_EntitySetHandle* sets, int num_sets, iBase_EntityIterator* tag_values );
57 : :
58 : : int rmv_relation( int iface_no, iBase_EntityHandle* entities, int num_entities );
59 : : int rmv_relation( int iface_no, iBase_EntitySetHandle* sets, int num_sets );
60 : :
61 : : int get_gids( int iface_no, iBase_EntityHandle* entities, int num_entities, int* tag_values );
62 : : int get_gids( int iface_no, iBase_EntitySetHandle* sets, int num_sets, int* tag_values );
63 : :
64 : : int get_dims( int iface_no, iBase_EntityHandle* entities, int num_entities, int* tag_values );
65 : : int get_dims( int iface_no, iBase_EntitySetHandle* sets, int num_sets, int* tag_values );
66 : :
67 : : private:
68 : : AssocPair();
69 : :
70 : : int populate_recursive( int iface_no, iBase_EntitySetHandle set, iBase_EntityHandle related_ent );
71 : : int populate_recursive( int iface_no, iBase_EntitySetHandle set, iBase_EntitySetHandle related_set );
72 : :
73 : : int unpopulate_recursive( int iface_no, iBase_EntitySetHandle set );
74 : :
75 : : iRel_Instance instance;
76 : : AssocPairSide* relSides[2];
77 : : iRel_RelationType entOrSet[2];
78 : : iRel_RelationStatus relStatus[2];
79 : : int pairId;
80 : :
81 : : static int currId;
82 : : };
83 : :
84 : 6 : inline iBase_Instance AssocPair::iface_instance( int iface_no ) const
85 : : {
86 : 6 : return relSides[iface_no]->instance();
87 : : }
88 : :
89 : 6 : inline iRel_IfaceType AssocPair::iface_type( int iface_no ) const
90 : : {
91 : 6 : return relSides[iface_no]->type();
92 : : }
93 : :
94 : 42 : inline iRel_RelationType AssocPair::relation_type( int iface_no ) const
95 : : {
96 : 42 : return entOrSet[iface_no];
97 : : }
98 : :
99 : 6 : inline iRel_RelationStatus AssocPair::relation_status( int iface_no ) const
100 : : {
101 : 6 : return relStatus[iface_no];
102 : : }
103 : :
104 : 266 : static inline AssocPair* assocpair_handle( iRel_PairHandle pair )
105 : : {
106 : 266 : return reinterpret_cast< AssocPair* >( pair );
107 : : }
108 : : #define ASSOCPAIRI assocpair_handle( pair )
109 : :
110 : : #endif
|