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,
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,
37 : : bool *order_switched = NULL);
38 : : bool equivalent(iRel_IfaceType type1, iRel_IfaceType type2,
39 : : bool *order_switched = NULL);
40 : :
41 : : bool contains(iBase_Instance iface);
42 : :
43 : : int get_all_entities(int iface_no, int dimension,
44 : : iBase_EntityHandle **entities, int *entities_alloc,
45 : : int *entities_size);
46 : :
47 : : int get_all_sets(int iface_no, iBase_EntitySetHandle **sets, int *sets_alloc,
48 : : int *sets_size);
49 : :
50 : : int get_entities(int iface_no, int dimension,
51 : : iBase_EntitySetHandle set_handle,
52 : : iBase_EntityHandle **entities, int *entities_alloc,
53 : : int *entities_size);
54 : :
55 : : int get_ents_dims(int iface_no, iBase_EntityHandle *entities,
56 : : int entities_size, int **ent_types, int *ent_types_alloc,
57 : : int *ent_types_size);
58 : :
59 : : int set_relation(iBase_EntityHandle ent1, iBase_EntityHandle ent2);
60 : : int set_relation(iBase_EntitySetHandle set1, iBase_EntityHandle ent2);
61 : : int set_relation(iBase_EntityHandle ent1, iBase_EntitySetHandle set2);
62 : : int set_relation(iBase_EntitySetHandle set1, iBase_EntitySetHandle set2);
63 : :
64 : : int get_relation(int iface_no, iBase_EntityHandle *entities,
65 : : int num_entities, iBase_EntityHandle *tag_values);
66 : : int get_relation(int iface_no, iBase_EntitySetHandle *sets,
67 : : int num_sets, iBase_EntityHandle *tag_values);
68 : : int get_relation(int iface_no, iBase_EntityHandle *entities,
69 : : int num_entities, iBase_EntitySetHandle *tag_values);
70 : : int get_relation(int iface_no, iBase_EntitySetHandle *sets,
71 : : int num_sets, iBase_EntitySetHandle *tag_values);
72 : : int get_relation(int iface_no, iBase_EntityHandle *entities,
73 : : int num_entities, iBase_EntityIterator *tag_values);
74 : : int get_relation(int iface_no, iBase_EntitySetHandle *sets,
75 : : int num_sets, iBase_EntityIterator *tag_values);
76 : :
77 : : int rmv_relation(int iface_no, iBase_EntityHandle *entities,
78 : : int num_entities);
79 : : int rmv_relation(int iface_no, iBase_EntitySetHandle *sets, int num_sets);
80 : :
81 : : int get_gids(int iface_no, iBase_EntityHandle *entities, int num_entities,
82 : : int *tag_values);
83 : : int get_gids(int iface_no, iBase_EntitySetHandle *sets, int num_sets,
84 : : int *tag_values);
85 : :
86 : : int get_dims(int iface_no, iBase_EntityHandle *entities, int num_entities,
87 : : int *tag_values);
88 : : int get_dims(int iface_no, iBase_EntitySetHandle *sets, int num_sets,
89 : : int *tag_values);
90 : : private:
91 : : AssocPair();
92 : :
93 : : int populate_recursive(int iface_no, iBase_EntitySetHandle set,
94 : : iBase_EntityHandle related_ent);
95 : : int populate_recursive(int iface_no, iBase_EntitySetHandle set,
96 : : iBase_EntitySetHandle related_set);
97 : :
98 : : int unpopulate_recursive(int iface_no, iBase_EntitySetHandle set);
99 : :
100 : : iRel_Instance instance;
101 : : AssocPairSide *relSides[2];
102 : : iRel_RelationType entOrSet[2];
103 : : iRel_RelationStatus relStatus[2];
104 : : int pairId;
105 : :
106 : : static int currId;
107 : : };
108 : :
109 : 4 : inline iBase_Instance AssocPair::iface_instance(int iface_no) const
110 : : {
111 : 4 : return relSides[iface_no]->instance();
112 : : }
113 : :
114 : 4 : inline iRel_IfaceType AssocPair::iface_type(int iface_no) const
115 : : {
116 : 4 : return relSides[iface_no]->type();
117 : : }
118 : :
119 : 28 : inline iRel_RelationType AssocPair::relation_type(int iface_no) const
120 : : {
121 : 28 : return entOrSet[iface_no];
122 : : }
123 : :
124 : 4 : inline iRel_RelationStatus AssocPair::relation_status(int iface_no) const
125 : : {
126 : 4 : return relStatus[iface_no];
127 : : }
128 : :
129 : 226 : static inline AssocPair *assocpair_handle(iRel_PairHandle pair)
130 : : {
131 : 226 : return reinterpret_cast<AssocPair*>(pair);
132 : : }
133 : : #define ASSOCPAIRI assocpair_handle(pair)
134 : :
135 : :
136 : : #endif
|