00001
00002
00008 #if !defined(__HDSFace_h__)
00009 #define __HDSFace_h__
00010
00011 #include "../defs.h"
00012
00013 #include "HDSNode.h"
00014
00015 BEGIN_NAMESPACE_ADS
00016
00018
00023 template <class HDS>
00024 class HDSFace :
00025 public HDSNode<HDS>
00026 {
00027 private:
00028
00029 typedef HDSNode<HDS> base_type;
00030 typedef typename HDS::Face_Halfedge_circulator Face_Halfedge_circulator;
00031 typedef typename HDS::Face_Halfedge_const_circulator
00032 Face_Halfedge_const_circulator;
00033
00034 public:
00035
00036
00037
00038
00039
00041 typedef typename base_type::Halfedge_handle Halfedge_handle;
00042
00044 typedef typename base_type::Halfedge_const_handle Halfedge_const_handle;
00045
00046 public:
00047
00048
00049
00050
00051
00053 HDSFace() :
00054 base_type()
00055 {}
00056
00058 HDSFace( Halfedge_handle h ) :
00059 base_type( h )
00060 {}
00061
00063 HDSFace( const HDSFace& x ) :
00064 base_type( x )
00065 {}
00066
00068 ~HDSFace()
00069 {}
00070
00071
00072
00073
00074
00076 Halfedge_const_handle
00077 halfedge() const
00078 {
00079 return base_type::halfedge();
00080 }
00081
00082
00083
00084
00085
00087 Halfedge_handle&
00088 halfedge()
00089 {
00090 return base_type::halfedge();
00091 }
00092
00093
00094
00095
00096
00098 HDSFace&
00099 operator=( const HDSFace& x )
00100 {
00101 base_type::operator=( x );
00102 return *this;
00103 }
00104
00105
00106
00107
00108
00110 Face_Halfedge_circulator
00111 halfedges_begin()
00112 {
00113 return Face_Halfedge_circulator( halfedge() );
00114 }
00115
00117 Face_Halfedge_const_circulator
00118 halfedges_begin() const
00119 {
00120 return Face_Halfedge_const_circulator( halfedge() );
00121 }
00122
00123 };
00124
00125 END_NAMESPACE_ADS
00126
00127 #endif