Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : TopologyEntity.hpp
3 : : //
4 : : // Purpose : This file contains the declarations of the class
5 : : // TopologyEntity.
6 : : // This class is the base class of all the topological
7 : : // entities in the Virtual Geometry Interface subsystem.
8 : : //
9 : : // Special Notes : This is a pure virtual class.
10 : : //
11 : : // Creator : Malcolm Panthaki
12 : : //
13 : : // Creation Date : 07/11/96
14 : : //
15 : : // Owner : Malcolm J. Panthaki
16 : : //-------------------------------------------------------------------------
17 : :
18 : : #ifndef TOPOLOGY_ENTITY_HPP
19 : : #define TOPOLOGY_ENTITY_HPP
20 : :
21 : : // ********** BEGIN STANDARD INCLUDES **********
22 : : // ********** END STANDARD INCLUDES **********
23 : :
24 : : // ********** BEGIN CUBIT INCLUDES **********
25 : : #include "BridgeManager.hpp"
26 : : #include "DagType.hpp"
27 : : // ********** END CUBIT INCLUDES **********
28 : :
29 : : // ********** BEGIN FORWARD DECLARATIONS **********
30 : : class RefEntity ;
31 : : template <class X> class DLIList ;
32 : : class RefVolume ;
33 : : class RefFace ;
34 : : class RefEdge ;
35 : : class RefVertex ;
36 : : class Shell;
37 : : class Loop;
38 : : class Chain;
39 : : class CoVolume;
40 : : class CoFace;
41 : : class CoEdge;
42 : : class CoVertex;
43 : : class GeometryQueryEngine ;
44 : : class RefVertex;
45 : : class RefEdge;
46 : : class RefFace;
47 : : class RefVolume;
48 : : class Body;
49 : : class RefGroup;
50 : :
51 : : // ********** END FORWARD DECLARATIONS **********
52 : :
53 : : // ********** BEGIN MACROS DEFINITIONS **********
54 : : // ********** END MACROS DEFINITIONS **********
55 : :
56 : : class CUBIT_GEOM_EXPORT TopologyEntity
57 : : {
58 : : public :
59 : :
60 : : TopologyEntity() ;
61 : : //- The default constructor
62 : :
63 : : virtual ~TopologyEntity();
64 : : //- A pure virtual destructor - this ensures that the class is
65 : : //- non-instantiable.
66 : :
67 : 0 : static const char* get_class_name()
68 : 0 : { return "TopologyEntity"; }
69 : :
70 : 0 : virtual const char* class_name() const
71 : 0 : { return get_class_name(); }
72 : :
73 : : GeometryQueryEngine* get_geometry_query_engine() const;
74 : : //R GeometryQueryEngine*
75 : : //R- A pointer to the geometry query engine associated with
76 : : //R- the object.
77 : : //- This function returns a pointer to the geometry query engine
78 : : //- associated with the object. If this TE has been merged, the
79 : : //- merged TEs may have different GQEs. In that case, the GQE used
80 : : //- for evaluations is returned.
81 : :
82 : : CubitBoolean is_directly_related( TopologyEntity* entity );
83 : : //- Return TRUE if entity is this or a direct parent or child of this.
84 : :
85 : : CubitStatus bodies(DLIList<Body*>& body_list);
86 : : CubitStatus shells(DLIList<Shell*>& shell_list);
87 : : CubitStatus loops( DLIList<Loop*>& loop_list );
88 : : CubitStatus chains(DLIList<Chain*>& chain_list);
89 : : CubitStatus ref_volumes(DLIList<RefVolume*>& ref_volume_list);
90 : : CubitStatus ref_faces(DLIList<RefFace*>& ref_face_list);
91 : : CubitStatus ref_edges(DLIList<RefEdge*>& ref_edge_list);
92 : : CubitStatus ref_vertices(DLIList<RefVertex*>& ref_vertex_list);
93 : : CubitStatus co_volumes(DLIList<CoVolume*>& co_volume_list);
94 : : CubitStatus co_faces(DLIList<CoFace*>& co_face_list);
95 : : CubitStatus co_edges(DLIList<CoEdge*>& co_edge_list);
96 : : CubitStatus co_vertices(DLIList<CoVertex*>& co_vertex_list);
97 : :
98 : : RefVertex *ref_vertex();
99 : : RefEdge *ref_edge();
100 : : RefFace *ref_face();
101 : : RefVolume *ref_volume();
102 : : Body *body();
103 : : //R CubitStatus
104 : : //R- CUBIT_SUCCESS/FAILURE
105 : : //O body/ref_volume/ref_face/ref_edge/ref_vertex/shell/loop/chain/covolume/
106 : : //O coface/coedge/covertex _list
107 : : //O- List of Bodies/RefVolumes/RefFaces/RefEdges/RefVertex'es/Loops/
108 : : //O- Shells/Chains/CoVolumes/CoFaces/CoEdge/CoVertices
109 : : //- Append the appropriate list of TopologyEntities associated with
110 : : //- this TopologyEntity.
111 : : //- There are 2 types of queries involved:
112 : : //- a) Return all "owned" entities such as all the RefFaces owned by
113 : : //- a RefVolume.
114 : : //- b) Return all "owning" entities such as all the Refvolumes that
115 : : //- own this RefFace
116 : : //- CUBIT_FAILURE is returned if this entity has the same type as
117 : : //- the requested list - e.g., if ref_edges is called on a RefEdge
118 : : //- object.
119 : : //-
120 : :
121 : : CoEdge *co_edge();
122 : : int num_loops();
123 : : int num_ref_volumes();
124 : : int num_ref_faces();
125 : : int num_ref_edges();
126 : : int num_ref_vertices();
127 : :
128 : 608196 : const BridgeManager* bridge_manager() const
129 : 608196 : { return &bridgeMan; }
130 : 673228 : BridgeManager* bridge_manager()
131 : 673228 : { return &bridgeMan; }
132 : : /*
133 : : virtual EntityType get_topology_bridge_type() const
134 : : { return TopologyBridge_TYPE; }
135 : : // Returns the generic TB type associated with this TE.
136 : : */
137 : 0 : virtual void reverse_topology() {}
138 : : // This method is used by owned BridgeManagers to
139 : : // notify their owning TopologyEntity when the sense
140 : : // of the geometry has changed (due to a different
141 : : // TopologyBridge being used as the primary rep.)
142 : :
143 : : virtual int get_children( DLIList<TopologyEntity*>* list = 0 ) const = 0;
144 : : virtual int get_parents ( DLIList<TopologyEntity*>* list = 0 ) const = 0;
145 : : //- Returns number of parents/children.
146 : : //- If a list is passed, pointers to parents/children will
147 : : //- be appended to the passed list.
148 : :
149 : : virtual DagType dag_type() const = 0;
150 : :
151 : : void deactivated(CubitBoolean flag) ;
152 : : CubitBoolean deactivated() const ;
153 : : //- Get and set funtions for the deactivation flag.
154 : :
155 : : CubitStatus remove_from_DAG(CubitBoolean recursive_flag = CUBIT_FALSE);
156 : : void disconnect_from_DAG();
157 : : virtual CubitStatus remove_child_link( TopologyEntity* child_ptr ) = 0;
158 : :
159 : : virtual CubitStatus
160 : : disconnect_all_children( DLIList<TopologyEntity*>* children = 0 ) = 0;
161 : : virtual CubitStatus
162 : : disconnect_all_parents( DLIList<TopologyEntity*>* parents = 0 ) = 0;
163 : :
164 : : protected:
165 : :
166 : : CubitStatus set_topology_bridge(TopologyBridge* TB_ptr);
167 : : // Sets the TB for this TE to be TB_ptr ONLY (removes other TBs).
168 : :
169 : : friend class ModelQueryEngine ;
170 : : //friend class GroupingEntity;
171 : :
172 : : virtual CubitBoolean query_append_parents( DLIList<TopologyEntity*>& list ) = 0;
173 : : virtual CubitBoolean query_append_children(DLIList<TopologyEntity*>& list ) = 0;
174 : :
175 : : cBit deactivatedStatus_ : 1;
176 : : //- The deactivated flag
177 : :
178 : : cBit encountered_ : 1;
179 : : // Indicates if it has already been found in
180 : : // in a DAG query.
181 : :
182 : :
183 : : private:
184 : : BridgeManager bridgeMan;
185 : :
186 : : TopologyEntity( const TopologyEntity& );
187 : : void operator=( const TopologyEntity& );
188 : : };
189 : :
190 : : // ********** BEGIN INLINE FUNCTIONS **********
191 : : // ********** END INLINE FUNCTIONS **********
192 : :
193 : : // ********** BEGIN FRIEND FUNCTIONS **********
194 : : // ********** END FRIEND FUNCTIONS **********
195 : :
196 : : // ********** BEGIN EXTERN FUNCTIONS **********
197 : : // ********** END EXTERN FUNCTIONS **********
198 : :
199 : : // ********** BEGIN HELPER CLASSES **********
200 : : // ********** END HELPER CLASSES **********
201 : :
202 : : #endif
203 : :
|