00001
00002
00008 #if !defined(__HDSHalfedge_h__)
00009 #define __HDSHalfedge_h__
00010
00011 #include "../defs.h"
00012
00013 BEGIN_NAMESPACE_ADS
00014
00016
00021 template <class HDS>
00022 class HDSHalfedge
00023 {
00024 public:
00025
00026
00027
00028
00029
00031 typedef typename HDS::Vertex_handle Vertex_handle;
00033 typedef typename HDS::Vertex_const_handle Vertex_const_handle;
00034
00036 typedef typename HDS::Halfedge_handle Halfedge_handle;
00038 typedef typename HDS::Halfedge_const_handle Halfedge_const_handle;
00039
00041 typedef typename HDS::Face_handle Face_handle;
00043 typedef typename HDS::Face_const_handle Face_const_handle;
00044
00045 private:
00046
00047
00048
00049
00050
00051 Halfedge_handle _opposite, _prev, _next;
00052 Vertex_handle _vertex;
00053 Face_handle _face;
00054
00055 public:
00056
00057
00058
00059
00060
00062 HDSHalfedge()
00063 {}
00064
00066 HDSHalfedge( const HDSHalfedge& x ) :
00067 _opposite( x._opposite ),
00068 _prev( x._prev ),
00069 _next( x._next ),
00070 _vertex( x._vertex ),
00071 _face( x._face )
00072 {}
00073
00075 ~HDSHalfedge()
00076 {}
00077
00078
00079
00080
00081
00083 HDSHalfedge&
00084 operator=( const HDSHalfedge& x )
00085 {
00086 if ( &x != this ) {
00087 _opposite = x._opposite;
00088 _prev = x._prev;
00089 _next = x._next;
00090 _vertex = x._vertex;
00091 _face = x._face;
00092 }
00093 return *this;
00094 }
00095
00096
00097
00098
00099
00101 Halfedge_const_handle
00102 opposite() const
00103 {
00104 return _opposite;
00105 }
00106
00108 Halfedge_const_handle
00109 prev() const
00110 {
00111 return _prev;
00112 }
00113
00115 Halfedge_const_handle
00116 next() const
00117 {
00118 return _next;
00119 }
00120
00122 Vertex_const_handle
00123 vertex() const
00124 {
00125 return _vertex;
00126 }
00127
00129 Face_const_handle
00130 face() const
00131 {
00132 return _face;
00133 }
00134
00135
00136
00137
00138
00140 Halfedge_handle&
00141 opposite()
00142 {
00143 return _opposite;
00144 }
00145
00147 Halfedge_handle&
00148 prev()
00149 {
00150 return _prev;
00151 }
00152
00154 Halfedge_handle&
00155 next()
00156 {
00157 return _next;
00158 }
00159
00161 Vertex_handle&
00162 vertex()
00163 {
00164 return _vertex;
00165 }
00166
00168 Face_handle&
00169 face()
00170 {
00171 return _face;
00172 }
00173
00174 };
00175
00176
00177
00178
00179
00180
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00195
00196
00197
00198
00199
00200
00201
00202
00203 END_NAMESPACE_ADS
00204
00205 #endif