00001
00002
00008 #if !defined(__geom_mesh_simplicial_Node_OneIncCell_h__)
00009 #define __geom_mesh_simplicial_Node_OneIncCell_h__
00010
00011 #if defined(DEBUG_geom) && !defined(DEBUG_Node_OneIncCell)
00012 #define DEBUG_Node_OneIncCell
00013 #endif
00014
00015 #ifdef DEBUG_Node_OneIncCell
00016 #ifndef DEBUG_Node_VertSelfId
00017
00018 #define DEBUG_Node_VertSelfId
00019 #endif
00020 #endif
00021
00022 #include "Node_VertSelfId.h"
00023
00024 BEGIN_NAMESPACE_GEOM
00025
00027
00033 template <class Mesh>
00034 class Node_OneIncCell :
00035 public Node_VertSelfId<Mesh>
00036 {
00037
00038
00039
00040
00041 private:
00042
00043 typedef Node_VertSelfId<Mesh> base_type;
00044
00045
00046
00047
00048
00049 public:
00050
00052 enum { N = base_type::N };
00053
00054
00055
00056
00057
00058 public:
00059
00061 typedef Mesh mesh_type;
00062
00064 typedef typename mesh_type::cell_iterator cell_iterator;
00066 typedef typename mesh_type::cell_const_iterator cell_const_iterator;
00067
00069 typedef typename base_type::node_iterator node_iterator;
00071 typedef typename base_type::node_const_iterator node_const_iterator;
00072
00074 typedef typename base_type::number_type number_type;
00076 typedef typename base_type::vertex_type vertex_type;
00077
00078
00079
00080
00081
00082 private:
00083
00085 cell_iterator _cell;
00086
00087 public:
00088
00089
00092
00094 Node_OneIncCell() :
00095 base_type(),
00096 _cell( 0 )
00097 {}
00098
00100 Node_OneIncCell( const vertex_type& point, const int identifier = -1,
00101 const cell_iterator cell = 0 ) :
00102 base_type( point, identifier ),
00103 _cell( cell )
00104 {}
00105
00107 void
00108 build( const vertex_type& point, const int identifier = -1,
00109 const cell_iterator cell = 0 )
00110 {
00111 base_type::build( point, identifier );
00112 _cell = cell;
00113 }
00114
00116 Node_OneIncCell( const Node_OneIncCell& x ) :
00117 base_type( x ),
00118 _cell( x._cell )
00119 {}
00120
00122 ~Node_OneIncCell()
00123 {}
00124
00126
00129
00131 Node_OneIncCell&
00132 operator=( const Node_OneIncCell& x )
00133 {
00134 if ( &x != this ) {
00135 base_type::operator=( x );
00136 _cell = x._cell;
00137 }
00138 return *this;
00139 }
00140
00142
00145
00147 const vertex_type&
00148 vertex() const
00149 {
00150 return base_type::vertex();
00151 }
00152
00154
00158 int
00159 identifier() const
00160 {
00161 return base_type::identifier();
00162 }
00163
00165 node_const_iterator
00166 self() const
00167 {
00168 return base_type::self();
00169 }
00170
00172 cell_const_iterator
00173 cell() const
00174 {
00175 return _cell;
00176 }
00177
00179
00182
00184 void
00185 set_vertex( const vertex_type& vertex )
00186 {
00187 base_type::set_vertex( vertex );
00188 }
00189
00191
00195 void
00196 set_identifier( const int identifier ) const
00197 {
00198 base_type::set_identifier( identifier );
00199 }
00200
00202 node_iterator
00203 self()
00204 {
00205 return base_type::self();
00206 }
00207
00209 void
00210 set_self( const node_iterator v )
00211 {
00212 base_type::set_self( v );
00213 }
00214
00216 cell_iterator
00217 cell()
00218 {
00219 return _cell;
00220 }
00221
00223 void
00224 add_cell( const cell_iterator c )
00225 {
00226 _cell = c;
00227 }
00228
00230 void
00231 remove_cell( const cell_iterator c )
00232 {
00233
00234
00235 assert( false );
00236 }
00237
00239
00242
00244 bool
00245 operator==( const Node_OneIncCell& x ) const
00246 {
00247 return base_type::operator==( x ) && _cell == x._cell;
00248 }
00249
00251 bool
00252 operator!=( const Node_OneIncCell& x ) const
00253 {
00254 return ! operator==( x );
00255 }
00256
00258
00261
00263 void
00264 put( std::ostream& out ) const
00265 {
00266
00267 base_type::put( out );
00268
00269 out << " " << _cell->identifier();
00270 }
00271
00273 };
00274
00275 END_NAMESPACE_GEOM
00276
00277 #endif