vtf-logo

Node_VertSelfId.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00008 #if !defined(__geom_mesh_simplicial_Node_VertSelfId_h__)
00009 #define __geom_mesh_simplicial_Node_VertSelfId_h__
00010 
00011 #if defined(DEBUG_geom) && !defined(DEBUG_Node_VertSelfId)
00012 #define DEBUG_Node_VertSelfId
00013 #endif
00014 
00015 #include "../../defs.h"
00016 
00017 #include "../../../ads/array/FixedArray.h"
00018 
00019 BEGIN_NAMESPACE_GEOM
00020 
00022 
00028 template <class Mesh>
00029 class Node_VertSelfId
00030 {
00031   //
00032   // Enumerations.
00033   //
00034 
00035 public:
00036 
00038   enum { N = Mesh::N };
00039 
00040   //
00041   // Public types.
00042   //
00043 
00044 public:
00045 
00047   typedef Mesh mesh_type;
00048 
00050   typedef typename mesh_type::node_iterator node_iterator;
00052   typedef typename mesh_type::node_const_iterator node_const_iterator;
00053 
00055   typedef typename mesh_type::number_type number_type;
00057   typedef ads::FixedArray<N,number_type> vertex_type;
00058 
00059   //
00060   // Data
00061   //
00062       
00063 private:
00064       
00066   vertex_type _vertex;
00068   node_iterator _self;
00070   mutable int _identifier;
00071 
00072 public:
00073 
00074   //--------------------------------------------------------------------------
00077 
00079   Node_VertSelfId() :
00080     _vertex(),
00081     _self( 0 ),
00082     _identifier( -1 )
00083   {}
00084 
00086   Node_VertSelfId( const vertex_type& vertex, const int identifier = -1 ) :
00087     _vertex( vertex ),
00088     _self( 0 ),
00089     _identifier( identifier )
00090   {}
00091 
00093   void
00094   build( const vertex_type& vertex, const int identifier = -1,
00095          const node_iterator self = 0 )
00096   {
00097     _vertex = vertex;
00098     _self = self;
00099     _identifier = identifier;
00100   }
00101 
00103   Node_VertSelfId( const Node_VertSelfId& x ) :
00104     _vertex( x._vertex ),
00105     _self( x._self ),
00106     _identifier( x._identifier )
00107   {}
00108 
00110   ~Node_VertSelfId()
00111   {}
00112 
00114   //--------------------------------------------------------------------------
00117       
00119   Node_VertSelfId& 
00120   operator=( const Node_VertSelfId& x )
00121   {
00122     if ( &x != this ) {
00123       _vertex = x._vertex;
00124       _self = x._self;
00125       _identifier = x._identifier;
00126     }
00127     return *this;
00128   }
00129 
00131   //--------------------------------------------------------------------------
00134 
00136   const vertex_type&
00137   vertex() const
00138   { 
00139     return _vertex;
00140   }
00141 
00143   node_const_iterator
00144   self() const
00145   { 
00146     return _self;
00147   }
00148 
00150 
00154   int
00155   identifier() const
00156   {
00157     return _identifier;
00158   }
00159 
00161   //--------------------------------------------------------------------------
00164 
00166   void
00167   set_vertex( const vertex_type& vertex )
00168   { 
00169     _vertex = vertex;
00170   }
00171 
00173   node_iterator
00174   self()
00175   { 
00176     return _self;
00177   }
00178 
00180   void
00181   set_self( const node_iterator self )
00182   { 
00183     _self = self;
00184   }
00185 
00187 
00191   void
00192   set_identifier( const int identifier ) const
00193   { 
00194     _identifier = identifier;
00195   }
00196 
00198   template <typename CellIterator>
00199   void
00200   add_cell( const CellIterator c )
00201   {}
00202 
00204   //--------------------------------------------------------------------------
00207   
00209   bool
00210   operator==( const Node_VertSelfId& x ) const
00211   {
00212     return _self == x._self && _vertex == x._vertex && 
00213       _identifier == x._identifier;
00214   }
00215 
00217   bool
00218   operator!=( const Node_VertSelfId& x ) const
00219   {
00220     return ! operator==( x );
00221   }
00222 
00224   //--------------------------------------------------------------------------
00227 
00229   void
00230   put( std::ostream& out ) const
00231   {
00232     out << "Vertex = " << _vertex << " Id = " << identifier();
00233   }
00234 
00236 };
00237 
00238 END_NAMESPACE_GEOM
00239 
00240 #endif

Generated on Fri Aug 24 12:55:55 2007 for Computational Geometry Package by  doxygen 1.4.7