Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : CompositeLoop.hpp
3 : : //
4 : : // Purpose : LoopSM used by composite geometry
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : Jason Kraftcheck
9 : : //
10 : : // Creation Date : 01/11/02
11 : : //-------------------------------------------------------------------------
12 : :
13 : : #ifndef COMPOSITE_LOOP_HPP
14 : : #define COMPOSITE_LOOP_HPP
15 : :
16 : : #include "LoopSM.hpp"
17 : : #include "CompositeCoEdge.hpp"
18 : :
19 : : class CompositeSurface;
20 : :
21 : : class CompositeLoop : public LoopSM
22 : : {
23 : : friend class CompositeSurface;
24 : : public:
25 : :
26 : : CompositeLoop();
27 : : virtual ~CompositeLoop();
28 : :
29 : : CompositeSurface* get_surface() const;
30 : : CompositeLoop* next_loop() const;
31 : :
32 : : CompositeCoEdge* first_coedge( ) const;
33 : : CompositeCoEdge* next_coedge( CompositeCoEdge* after_this ) const;
34 : : CompositeCoEdge* prev_coedge( CompositeCoEdge* before_this ) const;
35 : : int num_coedges() const;
36 : :
37 : : CubitStatus insert_after( CompositeCoEdge* coedge, CompositeCoEdge* after );
38 : : CubitStatus insert_before( CompositeCoEdge* coedge, CompositeCoEdge* before );
39 : : CubitStatus remove( CompositeCoEdge* coedge );
40 : : CubitStatus remove_all_coedges( DLIList<CompositeCoEdge*>* removed = 0);
41 : :
42 : : void get_parents_virt( DLIList<TopologyBridge*>& parents );
43 : : void get_children_virt( DLIList<TopologyBridge*>& children );
44 : : GeometryQueryEngine* get_geometry_query_engine() const;
45 : 0 : int layer() const { return COMPOSITE_LAYER; }
46 : :
47 : : virtual LoopType loop_type() ;
48 : : virtual CubitBoolean is_external() ;
49 : : //R CubitBoolean
50 : : //R- CUBIT_TRUE/CUBIT_FALSE
51 : : //- Returns CUBIT_TRUE if the Loop is an external Loop and CUBIT_FALSE
52 : : //- otherwise.
53 : :
54 : : void append_simple_attribute_virt( const CubitSimpleAttrib& );
55 : : void remove_simple_attribute_virt( const CubitSimpleAttrib& );
56 : : void remove_all_simple_attribute_virt();
57 : : CubitStatus get_simple_attribute( DLIList<CubitSimpleAttrib>& );
58 : : CubitStatus get_simple_attribute( const CubitString& name,
59 : : DLIList<CubitSimpleAttrib>& attrib_list );
60 : :
61 : : // reverse the direction of the loop
62 : : // if b_reverse_coedges is true, the function will also reverse the coedges
63 : : // but if b_reverse_coedges is false, the caller needs to make sure coedges
64 : : // get reversed properly
65 : : void reverse(bool b_reverse_coedges);
66 : :
67 : : void print_debug_info( const char* line_prefix = 0 );
68 : :
69 : : private:
70 : :
71 : : CompositeSurface* mySurface;
72 : : CompositeCoEdge* myCoedge;
73 : : CompositeLoop* loopNext;
74 : : int numCoedges;
75 : : };
76 : :
77 : 0 : inline CompositeSurface* CompositeLoop::get_surface() const
78 : 0 : { return mySurface; }
79 : :
80 : 0 : inline CompositeLoop* CompositeLoop::next_loop() const
81 : 0 : { return loopNext; }
82 : :
83 : 0 : inline CompositeCoEdge* CompositeLoop::first_coedge( ) const
84 : 0 : { return myCoedge; }
85 : :
86 : 0 : inline int CompositeLoop::num_coedges() const
87 : 0 : { return numCoedges; }
88 : :
89 : 0 : inline CompositeCoEdge* CompositeLoop::next_coedge( CompositeCoEdge* prev ) const
90 [ # # ]: 0 : { return prev->myLoop == this ? prev->nextCoedge : 0; }
91 : :
92 : 0 : inline CompositeCoEdge* CompositeLoop::prev_coedge( CompositeCoEdge* next ) const
93 [ # # ]: 0 : { return next->myLoop == this ? next->prevCoedge : 0; }
94 : :
95 : :
96 : : #endif
|