moab
|
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