moab
|
00001 00006 #ifndef VAR_LEN_DENSE_TAG_HPP 00007 #define VAR_LEN_DENSE_TAG_HPP 00008 00009 #include "TagInfo.hpp" 00010 #include "VarLenTag.hpp" 00011 00012 namespace moab { 00013 00014 class VarLenTag; 00015 00020 class VarLenDenseTag : public TagInfo 00021 { 00022 private: 00023 int mySequenceArray; 00024 00025 VarLenTag meshValue; 00026 00027 VarLenDenseTag( int array_index, 00028 const char* name, 00029 DataType type, 00030 const void* default_value, 00031 int default_value_len ); 00032 00033 public: 00034 static 00035 VarLenDenseTag* create_tag( SequenceManager* seqman, 00036 Error* error_handler, 00037 const char* name, 00038 DataType type, 00039 const void* default_value, 00040 int default_value_len ); 00041 00042 virtual ~VarLenDenseTag(); 00043 00044 virtual TagType get_storage_type() const; 00045 00059 virtual ErrorCode release_all_data( SequenceManager* seqman, 00060 Error* error_handler, 00061 bool delete_pending ); 00062 00063 00075 virtual 00076 ErrorCode get_data( const SequenceManager* seqman, 00077 Error* error_handler, 00078 const EntityHandle* entities, 00079 size_t num_entities, 00080 void* data ) const; 00081 00092 virtual 00093 ErrorCode get_data( const SequenceManager* seqman, 00094 Error* error_handler, 00095 const Range& entities, 00096 void* data ) const; 00097 00111 virtual 00112 ErrorCode get_data( const SequenceManager* seqman, 00113 Error* error_handler, 00114 const EntityHandle* entities, 00115 size_t num_entities, 00116 const void** data_ptrs, 00117 int* data_lengths ) const ; 00118 00119 00132 virtual 00133 ErrorCode get_data( const SequenceManager* seqman, 00134 Error* error_handler, 00135 const Range& entities, 00136 const void** data_ptrs, 00137 int* data_lengths ) const; 00138 00149 virtual 00150 ErrorCode set_data( SequenceManager* seqman, 00151 Error* error_handler, 00152 const EntityHandle* entities, 00153 size_t num_entities, 00154 const void* data ); 00155 00165 virtual 00166 ErrorCode set_data( SequenceManager* seqman, 00167 Error* error_handler, 00168 const Range& entities, 00169 const void* data ); 00170 00185 virtual 00186 ErrorCode set_data( SequenceManager* seqman, 00187 Error* error_handler, 00188 const EntityHandle* entities, 00189 size_t num_entities, 00190 void const* const* data_ptrs, 00191 const int* data_lengths ); 00192 00193 00207 virtual 00208 ErrorCode set_data( SequenceManager* seqman, 00209 Error* error_handler, 00210 const Range& entities, 00211 void const* const* data_ptrs, 00212 const int* data_lengths ); 00213 00227 virtual 00228 ErrorCode clear_data( SequenceManager* seqman, 00229 Error* error_handler, 00230 const EntityHandle* entities, 00231 size_t num_entities, 00232 const void* value_ptr, 00233 int value_len = 0 ); 00234 00247 virtual 00248 ErrorCode clear_data( SequenceManager* seqman, 00249 Error* error_handler, 00250 const Range& entities, 00251 const void* value_ptr, 00252 int value_len = 0 ); 00253 00262 virtual ErrorCode remove_data( SequenceManager* seqman, 00263 Error* error_handler, 00264 const EntityHandle* entities, 00265 size_t num_entities ); 00266 00274 virtual ErrorCode remove_data( SequenceManager* seqman, 00275 Error* error_handler, 00276 const Range& entities ); 00277 00301 virtual 00302 ErrorCode tag_iterate( SequenceManager* seqman, 00303 Error* error_handler, 00304 Range::iterator& iter, 00305 const Range::iterator& end, 00306 void*& data_ptr, 00307 bool allocate); 00308 00322 virtual 00323 ErrorCode get_tagged_entities( const SequenceManager* seqman, 00324 Range& output_entities, 00325 EntityType type = MBMAXTYPE, 00326 const Range* intersect = 0 ) const; 00327 00341 virtual 00342 ErrorCode num_tagged_entities( const SequenceManager* seqman, 00343 size_t& output_count, 00344 EntityType type = MBMAXTYPE, 00345 const Range* intersect = 0 ) const; 00346 00360 virtual 00361 ErrorCode find_entities_with_value( const SequenceManager* seqman, 00362 Error* error, 00363 Range& output_entities, 00364 const void* value, 00365 int value_bytes = 0, 00366 EntityType type = MBMAXTYPE, 00367 const Range* intersect_entities = 0 ) const; 00368 00370 virtual bool is_tagged( const SequenceManager*, EntityHandle h ) const; 00371 00375 virtual 00376 ErrorCode get_memory_use( const SequenceManager* seqman, 00377 unsigned long& total, 00378 unsigned long& per_entity ) const; 00379 00380 private: 00381 00382 VarLenDenseTag( const VarLenDenseTag& ); 00383 VarLenDenseTag& operator=( const VarLenDenseTag& ); 00384 00401 inline 00402 ErrorCode get_array( SequenceManager* seqman, 00403 Error* error_handler, 00404 EntityHandle h, 00405 VarLenTag*& ptr, 00406 size_t& count, 00407 bool allocate ); 00408 00423 inline 00424 ErrorCode get_array( const SequenceManager* seqman, 00425 Error* error_handler, 00426 EntityHandle h, 00427 const VarLenTag*& ptr, 00428 size_t& count ) const; 00429 00437 inline 00438 ErrorCode set_data( SequenceManager* seqman, 00439 Error* error_handler, 00440 const EntityHandle* entities, 00441 size_t num_entities, 00442 bool one_value, 00443 void const* const* pointers, 00444 const int* lengths ); 00445 00453 inline 00454 ErrorCode set_data( SequenceManager* seqman, 00455 Error* error_handler, 00456 const Range& entities, 00457 bool one_value, 00458 void const* const* pointers, 00459 const int* lengths ); 00460 }; 00461 00462 00463 00464 } // namespace moab 00465 00466 #endif // VAR_LEN_DENSE_TAG_HPP