Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Copyright Notice
3 : : //
4 : : // Copyright (c) 1996
5 : : // by Malcolm J. Panthaki, DBA, and the University of New Mexico.
6 : : //-------------------------------------------------------------------------
7 : : //
8 : : //-------------------------------------------------------------------------
9 : : // Filename : SenseEntity.C
10 : : //
11 : : // Purpose : This file contains the implementation of the class
12 : : // SenseEntity.
13 : : //
14 : : // Special Notes :
15 : : //
16 : : // Creator : Xuechen Liu
17 : : //
18 : : // Creation Date : 07/11/96
19 : : //
20 : : // Owner : Malcolm J. Panthaki
21 : : //-------------------------------------------------------------------------
22 : :
23 : : // ********** BEGIN STANDARD INCLUDES **********
24 : : // ********** END STANDARD INCLUDES **********
25 : :
26 : : // ********** BEGIN MOTIF INCLUDES **********
27 : : // ********** END MOTIF INCLUDES **********
28 : :
29 : : // ********** BEGIN OPEN INVENTOR INCLUDES **********
30 : : // ********** END OPEN INVENTOR INCLUDES **********
31 : :
32 : : // ********** BEGIN CUBIT INCLUDES **********
33 : :
34 : : #include "CubitDefines.h"
35 : : #include "SenseEntity.hpp"
36 : : #include "GroupingEntity.hpp"
37 : : #include "BasicTopologyEntity.hpp"
38 : : #include "DLIList.hpp"
39 : : #include "ModelQueryEngine.hpp"
40 : : // ********** END CUBIT INCLUDES **********
41 : :
42 : : // ********** BEGIN STATIC DECLARATIONS **********
43 : : // ********** END STATIC DECLARATIONS **********
44 : :
45 : : // ********** BEGIN PUBLIC FUNCTIONS **********
46 : :
47 : : //-------------------------------------------------------------------------
48 : : // Purpose : Destructor
49 : : //
50 : : // Special Notes :
51 : : //
52 : : // Creator : Jason Kraftcheck
53 : : //
54 : : // Creation Date : 07/22/03
55 : : //-------------------------------------------------------------------------
56 [ + - ]: 195872 : SenseEntity::~SenseEntity()
57 : : {
58 [ - + ]: 97936 : if (myParent)
59 [ # # ]: 0 : myParent->remove_sense_entity(this);
60 [ - + ]: 97936 : if (myChild)
61 [ # # ]: 0 : myChild->remove_sense_entity(this);
62 [ + - ][ - + ]: 97936 : assert (!myParent && !myChild);
63 [ - + ]: 97936 : }
64 : :
65 : : //-------------------------------------------------------------------------
66 : : // Purpose : This function is used to attach a BasicTopologyEntity as a
67 : : // child of the current SenseEntity in the DAG.
68 : : //
69 : : // Special Notes : Complete reimplementation - jk, July 2003
70 : : //
71 : : // Creator : Xuechen Liu
72 : : //
73 : : // Creation Date : 07/28/96
74 : : //-------------------------------------------------------------------------
75 : 158862 : CubitStatus SenseEntity::attach_basic_topology_entity(
76 : : BasicTopologyEntity* basic_topology_entity_ptr)
77 : : {
78 : 158862 : return basic_topology_entity_ptr->add_sense_entity( this );
79 : : }
80 : :
81 : :
82 : :
83 : : //-------------------------------------------------------------------------
84 : : // Purpose : Change the BTE attached to this SenseEntity
85 : : //
86 : : // Special Notes : derived from attach_basic_topology_entity()
87 : : //
88 : : // Creator : Jason Kraftcheck
89 : : //
90 : : // Creation Date : 01/11/01
91 : : //-------------------------------------------------------------------------
92 : 0 : CubitStatus SenseEntity::switch_basic_topology_entity( BasicTopologyEntity* new_bte )
93 : : {
94 [ # # ][ # # ]: 0 : if (new_bte->dag_type().parent() != dag_type())
[ # # ]
95 : 0 : return CUBIT_FAILURE;
96 : :
97 [ # # ]: 0 : if (!myChild->remove_sense_entity(this))
98 : 0 : return CUBIT_FAILURE;
99 : :
100 [ # # ]: 0 : if (!new_bte->add_sense_entity(this))
101 : 0 : return CUBIT_FAILURE;
102 : :
103 : 0 : return CUBIT_SUCCESS;
104 : : }
105 : :
106 : :
107 : :
108 : :
109 : : //-------------------------------------------------------------------------
110 : : // Purpose : Reverse
111 : : //
112 : : // Special Notes :
113 : : //
114 : : // Creator : Jason Kraftcheck
115 : : //
116 : : // Creation Date : 03/27/01
117 : : //-------------------------------------------------------------------------
118 : 149 : void SenseEntity::reverse_sense()
119 : : {
120 [ + + - ]: 149 : switch (mySense)
121 : : {
122 : 74 : case CUBIT_FORWARD : mySense = CUBIT_REVERSED; break;
123 : 75 : case CUBIT_REVERSED: mySense = CUBIT_FORWARD ; break;
124 : 0 : default : mySense = CUBIT_UNKNOWN ; break;
125 : : }
126 : 149 : }
127 : :
128 : : // ********** END PUBLIC FUNCTIONS **********
129 : :
130 : : // ********** BEGIN PROTECTED FUNCTIONS **********
131 : :
132 : : //-------------------------------------------------------------------------
133 : : // Purpose : get parent grouping entity
134 : : //
135 : : // Special Notes :
136 : : //
137 : : // Creator : Jason Kraftcheck
138 : : //
139 : : // Creation Date : 07/22/03
140 : : //-------------------------------------------------------------------------
141 : 96688 : int SenseEntity::get_parents( DLIList<TopologyEntity*>* list ) const
142 : : {
143 [ + - ]: 96688 : if (!myParent)
144 : 96688 : return 0;
145 : :
146 [ # # ]: 0 : if (list)
147 [ # # ]: 0 : list->append(myParent);
148 : :
149 : 96688 : return 1;
150 : : }
151 : :
152 : : //-------------------------------------------------------------------------
153 : : // Purpose : get child basic topology entity
154 : : //
155 : : // Special Notes :
156 : : //
157 : : // Creator : Jason Kraftcheck
158 : : //
159 : : // Creation Date : 07/22/03
160 : : //-------------------------------------------------------------------------
161 : 0 : int SenseEntity::get_children( DLIList<TopologyEntity*>* list ) const
162 : : {
163 [ # # ]: 0 : if (!myChild)
164 : 0 : return 0;
165 : :
166 [ # # ]: 0 : if (list)
167 [ # # ]: 0 : list->append(myChild);
168 : :
169 : 0 : return 1;
170 : : }
171 : :
172 : : //-------------------------------------------------------------------------
173 : : // Purpose : Remove from child basic topology entity
174 : : //
175 : : // Special Notes :
176 : : //
177 : : // Creator : Jason Kraftcheck
178 : : //
179 : : // Creation Date : 07/22/03
180 : : //-------------------------------------------------------------------------
181 : 0 : CubitStatus SenseEntity::remove_child_link( TopologyEntity* entity_ptr )
182 : : {
183 [ # # ]: 0 : if (entity_ptr != myChild)
184 : 0 : return CUBIT_FAILURE;
185 : :
186 : 0 : BasicTopologyEntity* bte_ptr = static_cast<BasicTopologyEntity*>(entity_ptr);
187 : 0 : return bte_ptr->remove_sense_entity(this);
188 : : }
189 : :
190 : : //-------------------------------------------------------------------------
191 : : // Purpose : Get parent BasicTopologyEntity
192 : : //
193 : : // Special Notes :
194 : : //
195 : : // Creator : Jason Kraftcheck
196 : : //
197 : : // Creation Date : 07/22/03
198 : : //-------------------------------------------------------------------------
199 : 67922 : BasicTopologyEntity* SenseEntity::get_parent_basic_topology_entity_ptr()
200 : : {
201 [ + - ]: 67922 : return myParent ? myParent->get_basic_topology_entity_ptr() : 0;
202 : : }
203 : :
204 : : //-------------------------------------------------------------------------
205 : : // Purpose : Remove from parent GroupingEntity
206 : : //
207 : : // Special Notes :
208 : : //
209 : : // Creator : Jason Kraftcheck
210 : : //
211 : : // Creation Date : 07/22/03
212 : : //-------------------------------------------------------------------------
213 : 0 : CubitStatus SenseEntity::disconnect_all_parents( DLIList<TopologyEntity*>* list )
214 : : {
215 [ # # ]: 0 : if (!myParent)
216 : 0 : return CUBIT_SUCCESS;
217 : :
218 [ # # ]: 0 : if (list)
219 [ # # ]: 0 : list->append(myParent);
220 : :
221 : 0 : return myParent->remove_sense_entity(this);
222 : : }
223 : :
224 : : //-------------------------------------------------------------------------
225 : : // Purpose : Disconnect form child BasicTopologyEntity
226 : : //
227 : : // Special Notes :
228 : : //
229 : : // Creator : Jason Kraftcheck
230 : : //
231 : : // Creation Date : 07/22/03
232 : : //-------------------------------------------------------------------------
233 : 96688 : CubitStatus SenseEntity::disconnect_all_children( DLIList<TopologyEntity*>* list )
234 : : {
235 [ - + ]: 96688 : if (!myChild)
236 : 0 : return CUBIT_SUCCESS;
237 : :
238 [ + - ]: 96688 : if (list)
239 [ + - ]: 96688 : list->append(myChild);
240 : :
241 : 96688 : return myChild->remove_sense_entity(this);
242 : : }
243 : :
244 : : //-------------------------------------------------------------------------
245 : : // Purpose : Functions to support ModelQueryEngine
246 : : //
247 : : // Special Notes :
248 : : //
249 : : // Creator : Jason Kraftcheck
250 : : //
251 : : // Creation Date : 07/24/03
252 : : //-------------------------------------------------------------------------
253 : 165018 : CubitBoolean SenseEntity::query_append_parents( DLIList<TopologyEntity*>& list )
254 : : {
255 [ + - ][ + + ]: 165018 : if (myParent && !ModelQueryEngine::instance()->encountered(myParent))
[ + + ]
256 : : {
257 [ + - ]: 138944 : list.append(myParent);
258 : 138944 : return CUBIT_TRUE;
259 : : }
260 : :
261 : 165018 : return CUBIT_FALSE;
262 : : }
263 : 1809417 : CubitBoolean SenseEntity::query_append_children( DLIList<TopologyEntity*>& list )
264 : : {
265 [ + + ][ + + ]: 1809417 : if (myChild && !ModelQueryEngine::instance()->encountered(myChild))
[ + + ]
266 : : {
267 [ + - ]: 1151789 : list.append(myChild);
268 : 1151789 : return CUBIT_TRUE;
269 : : }
270 : :
271 : 1809417 : return CUBIT_FALSE;
272 [ + - ][ + - ]: 6540 : }
273 : :
274 : :
275 : : // ********** END PROTECTED FUNCTIONS **********
276 : :
277 : : // ********** BEGIN PRIVATE FUNCTIONS **********
278 : : // ********** END PRIVATE FUNCTIONS **********
279 : :
280 : : // ********** BEGIN HELPER CLASSES **********
281 : : // ********** END HELPER CLASSES **********
282 : :
283 : : // ********** BEGIN EXTERN FUNCTIONS **********
284 : : // ********** END EXTERN FUNCTIONS **********
285 : :
286 : : // ********** BEGIN STATIC FUNCTIONS **********
287 : : // ********** END STATIC FUNCTIONS **********
288 : :
|