moab
VarLenDenseTag.hpp
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines