moab
MeshTag.hpp
Go to the documentation of this file.
00001 
00006 #ifndef MESH_TAG_HPP
00007 #define MESH_TAG_HPP
00008 
00009 #include "TagInfo.hpp"
00010 
00011 namespace moab {
00012 
00019 class MeshTag : public TagInfo 
00020 {
00021 public:
00023   MeshTag( const char * name, 
00024            int size, 
00025            DataType type, 
00026            const void * default_value,
00027            int default_value_size);
00028   
00029   virtual ~MeshTag();
00030 
00031   virtual TagType get_storage_type() const;
00032 
00046   virtual ErrorCode release_all_data( SequenceManager* seqman, 
00047                                       Error* error_handler, 
00048                                       bool delete_pending );
00049   
00050 
00062   virtual
00063   ErrorCode get_data( const SequenceManager* seqman,
00064                       Error* error_handler, 
00065                       const EntityHandle* entities,
00066                       size_t num_entities,
00067                       void* data ) const;
00068   
00079   virtual
00080   ErrorCode get_data( const SequenceManager* seqman,
00081                       Error* error_handler, 
00082                       const Range& entities,
00083                       void* data ) const;
00084                       
00098   virtual
00099   ErrorCode get_data( const SequenceManager* seqman,
00100                       Error* error_handler, 
00101                       const EntityHandle* entities,
00102                       size_t num_entities,
00103                       const void** data_ptrs,
00104                       int* data_lengths ) const ;
00105                       
00106                       
00119   virtual
00120   ErrorCode get_data( const SequenceManager* seqman,
00121                       Error* error_handler, 
00122                       const Range& entities,
00123                       const void** data_ptrs,
00124                       int* data_lengths ) const;
00125   
00136   virtual
00137   ErrorCode set_data( SequenceManager* seqman,
00138                       Error* error_handler, 
00139                       const EntityHandle* entities,
00140                       size_t num_entities,
00141                       const void* data );
00142   
00152   virtual
00153   ErrorCode set_data( SequenceManager* seqman,
00154                       Error* error_handler, 
00155                       const Range& entities,
00156                       const void* data );
00157                       
00172   virtual
00173   ErrorCode set_data( SequenceManager* seqman,
00174                       Error* error_handler, 
00175                       const EntityHandle* entities,
00176                       size_t num_entities,
00177                       void const* const* data_ptrs,
00178                       const int* data_lengths );
00179                       
00180                       
00194   virtual
00195   ErrorCode set_data( SequenceManager* seqman,
00196                       Error* error_handler, 
00197                       const Range& entities,
00198                       void const* const* data_ptrs,
00199                       const int* data_lengths );
00200                       
00214   virtual
00215   ErrorCode clear_data( SequenceManager* seqman,
00216                         Error* error_handler, 
00217                         const EntityHandle* entities,
00218                         size_t num_entities,
00219                         const void* value_ptr,
00220                         int value_len = 0 );
00221                       
00234   virtual
00235   ErrorCode clear_data( SequenceManager* seqman,
00236                         Error* error_handler, 
00237                         const Range& entities,
00238                         const void* value_ptr,
00239                         int value_len = 0 );
00240 
00249   virtual ErrorCode remove_data( SequenceManager* seqman,
00250                                  Error* error_handler, 
00251                                  const EntityHandle* entities,
00252                                  size_t num_entities );
00253 
00261   virtual ErrorCode remove_data( SequenceManager* seqman,
00262                                  Error* error_handler, 
00263                                  const Range& entities );
00264 
00288   virtual
00289   ErrorCode tag_iterate( SequenceManager* seqman,
00290                          Error* error_handler, 
00291                          Range::iterator& iter,
00292                          const Range::iterator& end,
00293                          void*& data_ptr,
00294                          bool allocate = true);
00295 
00309   virtual
00310   ErrorCode get_tagged_entities( const SequenceManager* seqman,
00311                                  Range& output_entities,
00312                                  EntityType type = MBMAXTYPE,
00313                                  const Range* intersect = 0 ) const;
00314 
00328   virtual
00329   ErrorCode num_tagged_entities( const SequenceManager* seqman,
00330                                  size_t& output_count,
00331                                  EntityType type = MBMAXTYPE,
00332                                  const Range* intersect = 0 ) const;
00333   
00347   virtual
00348   ErrorCode find_entities_with_value( const SequenceManager* seqman,
00349                                       Error* error_handler, 
00350                                       Range& output_entities,
00351                                       const void* value,
00352                                       int value_bytes = 0,
00353                                       EntityType type = MBMAXTYPE,
00354                                       const Range* intersect_entities = 0 ) const;
00355   
00357   virtual bool is_tagged( const SequenceManager*, EntityHandle h ) const;
00358   
00362   virtual
00363   ErrorCode get_memory_use( const SequenceManager* seqman,
00364                             unsigned long& total,
00365                             unsigned long& per_entity ) const;
00366 
00367 private:
00368 
00369   MeshTag( const MeshTag& );
00370   MeshTag& operator=( const MeshTag& );
00371   std::vector<unsigned char> mValue;
00372 };
00373 
00374 } // namespace moab
00375 
00376 #endif // MESH_TAG_HPP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines