moab
Interface.hpp
Go to the documentation of this file.
00001 
00037 #ifndef MOAB_INTERFACE_HPP
00038 #define MOAB_INTERFACE_HPP
00039 
00040 #define MOAB_API_VERSION 1.01
00041 #define MOAB_API_VERSION_STRING "1.01"
00042 
00043 #include "moab/Forward.hpp"
00044 #include "moab/Range.hpp"
00045 #include "moab/Compiler.hpp"
00046 
00047 // include files
00048 #include <string>
00049 #include <functional>
00050 #include <typeinfo>
00051 
00053 #ifdef XPCOM_MB
00054 
00055 #ifndef __gen_nsISupports_h__
00056 #include "nsISupports.h"
00057 #endif
00058 
00059 #ifndef NS_NO_VTABLE
00060 #define NS_NO_VTABLE
00061 #endif
00062 
00063 #define MBINTERFACE_IID_STR "f728830e-1dd1-11b2-9598-fb9f414f2465"
00064 
00065 {0xf728830e, 0x1dd1, 0x11b2, \
00066   { 0x95, 0x98, 0xfb, 0x9f, 0x4
00067 #define MBINTERFACE_IID \1, 0x4f, 0x24, 0x65 }}
00068 
00069 #endif
00070 
00071 
00072 #include "moab/UnknownInterface.hpp"
00073 #define MB_INTERFACE_VERSION "2.0.0"
00074 namespace moab {
00075 
00076 static const MBuuid IDD_MBCore = MBuuid( 0x8956e0a, 0xc300, 0x4005,
00077                                          0xbd, 0xf6, 0xc3, 0x4e, 0xf7, 0x1f, 0x5a, 0x52 );
00078 
00079 
00080 
00086 #if defined(XPCOM_MB)
00087 class NS_NO_VTABLE Interface : public nsISupports {
00088 #else
00089 class MB_DLL_EXPORT Interface : public UnknownInterface {
00090 #endif
00091 
00092 public:
00093 
00094 #ifdef XPCOM_MB
00095   NS_DEFINE_STATIC_IID_ACCESSOR(MBINTERFACE_IID)
00096 #endif
00097 
00102 
00103   Interface() {}
00104 
00106   virtual ~Interface() {}
00107 
00109   virtual EntityHandle get_root_set()=0;
00110   
00113   virtual ErrorCode query_interface_type( const std::type_info& iface_type, void*& iface ) = 0;
00114   
00117   template <class IFace> ErrorCode query_interface(IFace*& ptr)
00118     { 
00119       void* tmp_ptr;
00120       ErrorCode result = query_interface_type(typeid(IFace), tmp_ptr);
00121       ptr = reinterpret_cast<IFace*>(tmp_ptr);
00122       return result;
00123     }
00124  
00126   virtual ErrorCode release_interface_type( const std::type_info& iface_type, void* iface ) = 0;
00127   
00128   template <class IFace> ErrorCode release_interface(IFace* interface)
00129     { return release_interface_type( typeid(IFace), interface ); }
00130  
00132 
00134 
00138   virtual float api_version(std::string *version_string = NULL);
00139     
00141 
00145   virtual float impl_version(std::string *version_string = NULL)=0;
00146 
00153 
00154 
00162   virtual EntityType type_from_handle(const EntityHandle handle) const = 0;
00163  
00165 
00171   virtual EntityID id_from_handle(const EntityHandle handle) const =0;
00172 
00174 
00182   virtual int dimension_from_handle(const EntityHandle handle) const = 0;
00183 
00185 
00197   virtual ErrorCode handle_from_id(const EntityType type, 
00198                                      const EntityID, 
00199                                      EntityHandle& handle) const =0;
00200 
00207 
00208 
00227   virtual ErrorCode load_mesh(const char *file_name,
00228                                 const int *active_block_id_list = NULL,
00229                                 const int num_blocks = 0)=0;
00230 
00266   virtual ErrorCode load_file( const char* file_name,
00267                                  const EntityHandle* file_set = 0,
00268                                  const char* options = 0,
00269                                  const char* set_tag_name = 0,
00270                                  const int* set_tag_values = 0,
00271                                  int num_set_tag_values = 0 ) = 0;
00272 
00274 
00285   virtual ErrorCode write_mesh(const char *file_name,
00286                                  const EntityHandle *output_list = NULL,
00287                                  const int num_sets = 0) = 0;
00288 
00314   virtual ErrorCode write_file( const char* file_name,
00315                                   const char* file_type = 0,
00316                                   const char* options = 0,
00317                                   const EntityHandle* output_sets = 0,
00318                                   int num_output_sets = 0,
00319                                   const Tag* tag_list = 0,
00320                                   int num_tags = 0 ) = 0;
00321 
00346   virtual ErrorCode write_file( const char* file_name,
00347                                   const char* file_type,
00348                                   const char* options,
00349                                   const Range& output_sets,
00350                                   const Tag* tag_list = 0,
00351                                   int num_tags = 0 ) = 0;
00352 
00354   virtual ErrorCode delete_mesh()=0;
00355 
00362 
00363 
00371   virtual ErrorCode get_vertex_coordinates(std::vector<double> &coords) const =0;
00372 
00374 
00379   virtual ErrorCode coords_iterate(Range::const_iterator iter,
00381                                    Range::const_iterator end,
00383                                    double*& xcoords_ptr,
00385                                    double*& ycoords_ptr,
00387                                    double*& zcoords_ptr,
00389                                    int& count
00391                                    ) = 0;
00392 
00394 
00405   virtual ErrorCode  get_coords(const Range& entity_handles, 
00406                                   double *coords) const =0;
00407     
00409 
00412   virtual ErrorCode  get_coords(const EntityHandle* entity_handles, 
00413                                   const int num_entities, 
00414                                   double *coords) const =0;
00415   
00429   virtual ErrorCode get_coords( const Range& entity_handles,
00430                                   double* x_coords,
00431                                   double* y_coords,
00432                                   double* z_coords ) const = 0;
00433   
00434   
00436 
00445   virtual ErrorCode  set_coords(const EntityHandle *entity_handles, 
00446                                   const int num_entities,
00447                                   const double *coords)=0;
00448 
00450 
00459   virtual ErrorCode  set_coords(Range entity_handles,
00460                                   const double *coords)=0;
00461 
00463   virtual ErrorCode get_dimension(int &dim) const =0;
00464 
00466 
00469   virtual ErrorCode set_dimension(const int dim)=0;
00470 
00477 
00478 
00486   virtual ErrorCode connect_iterate(Range::const_iterator iter,
00488                                     Range::const_iterator end,
00490                                     EntityHandle *&connect,
00492                                     int &verts_per_entity,
00494                                     int& count
00496                                     ) = 0;
00497   
00499 
00503   virtual ErrorCode get_connectivity_by_type(const EntityType type, 
00504                                                std::vector<EntityHandle> &connect) const =0;
00505 
00507 
00509   virtual ErrorCode  get_connectivity(const EntityHandle *entity_handles, 
00510                                         const int num_handles,
00511                                         Range &connectivity, 
00512                                         bool corners_only = false) const =0;
00513 
00515 
00517   virtual ErrorCode get_connectivity( const Range& entity_handles, 
00518                                         Range &connectivity, 
00519                                         bool corners_only = false) const =0;
00520  
00522 
00534   virtual ErrorCode  get_connectivity(const EntityHandle *entity_handles, 
00535                                       const int num_handles,
00536                                       std::vector<EntityHandle> &connectivity, 
00537                                       bool corners_only = false,
00538                                       std::vector<int> *offsets = NULL) const =0;
00539  
00541 
00573   virtual ErrorCode  get_connectivity(const EntityHandle entity_handle, 
00574                                         const EntityHandle *&connectivity, 
00575                                         int &num_nodes, 
00576                                         bool corners_only = false,
00577                                         std::vector<EntityHandle>* storage = 0
00578                                         ) const =0;
00579 
00581 
00590   virtual ErrorCode  set_connectivity(const EntityHandle entity_handle, 
00591                                         EntityHandle *connect,
00592                                         const int num_connect)=0;
00593 
00600 
00601 
00622   virtual ErrorCode get_adjacencies(const EntityHandle *from_entities,
00623                                       const int num_entities,
00624                                       const int to_dimension,
00625                                       const bool create_if_missing,
00626                                       std::vector<EntityHandle>& adj_entities,
00627                                       const int operation_type = Interface::INTERSECT) = 0;
00628 
00630 
00633   virtual ErrorCode get_adjacencies(const EntityHandle *from_entities,
00634                                       const int num_entities,
00635                                       const int to_dimension,
00636                                       const bool create_if_missing,
00637                                       Range &adj_entities,
00638                                       const int operation_type = Interface::INTERSECT) = 0;
00639 
00641 
00644   virtual ErrorCode get_adjacencies(const Range &from_entities,
00645                                       const int to_dimension,
00646                                       const bool create_if_missing,
00647                                       Range &adj_entities,
00648                                       const int operation_type = Interface::INTERSECT) = 0;
00649 
00651 
00657   virtual ErrorCode add_adjacencies(const EntityHandle from_handle, 
00658                                       const EntityHandle *to_handles,
00659                                       const int num_handles,
00660                                       bool both_ways) = 0;
00661 
00663   virtual ErrorCode add_adjacencies(const EntityHandle from_handle, 
00664                                       Range &adjacencies,
00665                                       bool both_ways) = 0;
00666 
00668 
00673   virtual ErrorCode remove_adjacencies(const EntityHandle from_handle, 
00674                                          const EntityHandle *to_handles,
00675                                          const int num_handles) = 0;
00676 
00690   virtual ErrorCode adjacencies_iterate(Range::const_iterator iter,
00691                                         Range::const_iterator end,
00692                                         const std::vector<EntityHandle> **& adjs_ptr,
00693                                         int& count) = 0;
00696 
00697   enum {INTERSECT, UNION};
00698 
00703 
00704 
00717   virtual ErrorCode get_entities_by_dimension(const EntityHandle meshset,
00718                                                 const int dimension, 
00719                                                 Range &entities,
00720                                                 const bool recursive = false)  const = 0;
00721 
00722   virtual ErrorCode get_entities_by_dimension(const EntityHandle meshset,
00723                                                 const int dimension, 
00724                                                 std::vector<EntityHandle> &entities,
00725                                                 const bool recursive = false)  const = 0;
00726 
00728 
00743   virtual ErrorCode get_entities_by_type(const EntityHandle meshset,
00744                                            const EntityType type, 
00745                                            Range &entities,
00746                                            const bool recursive = false) const = 0;
00747 
00748   virtual ErrorCode get_entities_by_type(const EntityHandle meshset,
00749                                            const EntityType type, 
00750                                            std::vector<EntityHandle> &entities,
00751                                            const bool recursive = false) const = 0;
00752 
00755 
00784   virtual ErrorCode get_entities_by_type_and_tag(const EntityHandle meshset,
00785                                                    const EntityType type,
00786                                                    const Tag *tag_handles,
00787                                                    const void* const* values,
00788                                                    const int num_tags,
00789                                                    Range &entities,
00790                                                    const int condition = Interface::INTERSECT,
00791                                                    const bool recursive = false) const = 0;
00792 
00794 
00806   virtual ErrorCode get_entities_by_handle(const EntityHandle meshset,
00807                                              Range &entities,
00808                                              const bool recursive = false) const = 0;
00809 
00811 
00823   virtual ErrorCode get_entities_by_handle(const EntityHandle meshset,
00824                                              std::vector<EntityHandle> &entities,
00825                                              const bool recursive = false) const = 0;
00826 
00828 
00834   virtual ErrorCode get_number_entities_by_dimension(const EntityHandle meshset,
00835                                                        const int dimension, 
00836                                                        int &num_entities,
00837                                                        const bool recursive = false) const = 0;
00838 
00840 
00849   virtual ErrorCode get_number_entities_by_type(const EntityHandle meshset,
00850                                                   const EntityType type, 
00851                                                   int &num_entities,
00852                                                   const bool recursive = false) const = 0;
00853 
00856 
00868   virtual ErrorCode get_number_entities_by_type_and_tag(const EntityHandle meshset,
00869                                                           const EntityType type,
00870                                                           const Tag *tag_handles,
00871                                                           const void* const* values,
00872                                                           const int num_tags,
00873                                                           int &num_entities,
00874                                                           const int condition = Interface::INTERSECT,
00875                                                           const bool recursive = false) const = 0;
00876 
00878 
00884   virtual ErrorCode get_number_entities_by_handle(const EntityHandle meshset,
00885                                                     int &num_entities,
00886                                                     const bool recursive = false) const = 0;
00887 
00894 
00895 
00909   virtual ErrorCode create_element(const EntityType type, 
00910                                      const EntityHandle *connectivity,
00911                                      const int num_vertices, 
00912                                      EntityHandle &element_handle) = 0;
00913 
00915 
00924   virtual ErrorCode create_vertex(const double coordinates[3], 
00925                                     EntityHandle &entity_handle ) = 0;
00926 
00928 
00933   virtual ErrorCode create_vertices(const double *coordinates, 
00934                                       const int nverts,
00935                                       Range &entity_handles ) = 0;
00936 
00938 
00946   virtual ErrorCode merge_entities(EntityHandle entity_to_keep, 
00947                                      EntityHandle entity_to_remove,
00948                                      bool auto_merge,
00949                                      bool delete_removed_entity) = 0;
00950 
00952 
00958   virtual ErrorCode delete_entities(const EntityHandle *entities,
00959                                       const int num_entities) = 0;
00960 
00962 
00967   virtual ErrorCode delete_entities(const Range &entities) = 0;
00968 
00975 
00976 
00980   virtual ErrorCode list_entities(const Range &entities) const = 0;
00981   
00983 
00990   virtual ErrorCode list_entities(const EntityHandle *entities,
00991                                     const int num_entities) const = 0;
00992 
00994 
00999   virtual ErrorCode list_entity(const EntityHandle entity) const = 0;
01000 
01002 
01004   virtual ErrorCode get_last_error(std::string& info) const = 0;
01005 
01007 
01009   virtual std::string get_error_string(const ErrorCode code) const = 0;
01010 
01044   virtual void estimated_memory_use( const EntityHandle* ent_array = 0,
01045                              unsigned long  num_ents = 0,
01046                              unsigned long* total_storage = 0,
01047                              unsigned long* total_amortized_storage = 0,
01048                              unsigned long* entity_storage = 0,
01049                              unsigned long* amortized_entity_storage = 0,
01050                              unsigned long* adjacency_storage = 0,
01051                              unsigned long* amortized_adjacency_storage = 0,
01052                              const Tag*   tag_array = 0,
01053                              unsigned       num_tags = 0,
01054                              unsigned long* tag_storage = 0,
01055                              unsigned long* amortized_tag_storage = 0 ) = 0;
01056 
01084   virtual void estimated_memory_use( const Range& ents,
01085                              unsigned long* total_storage = 0,
01086                              unsigned long* total_amortized_storage = 0,
01087                              unsigned long* entity_storage = 0,
01088                              unsigned long* amortized_entity_storage = 0,
01089                              unsigned long* adjacency_storage = 0,
01090                              unsigned long* amortized_adjacency_storage = 0,
01091                              const Tag*   tag_array = 0,
01092                              unsigned       num_tags = 0,
01093                              unsigned long* tag_storage = 0,
01094                              unsigned long* amortized_tag_storage = 0 ) = 0;
01101 
01102   class HONodeAddedRemoved
01103   {
01104   public:
01106     HONodeAddedRemoved(){}
01107  
01109     virtual ~HONodeAddedRemoved(){}
01110 
01113 
01117     virtual void node_added(EntityHandle node, EntityHandle element) = 0;
01118 
01121 
01124     virtual void node_removed(EntityHandle node) = 0;
01125   };
01126   
01128 
01140   virtual ErrorCode convert_entities(const EntityHandle meshset, 
01141                                        const bool mid_edge,
01142                                        const bool mid_face, 
01143                                        const bool mid_region, 
01144                                        HONodeAddedRemoved* function_object = 0) = 0;
01145 
01147 
01161   virtual ErrorCode side_number(const EntityHandle parent,
01162                                   const EntityHandle child,
01163                                   int &side_number,
01164                                   int &sense,
01165                                   int &offset) const = 0;
01166 
01168 
01177   virtual ErrorCode high_order_node(const EntityHandle parent_handle,
01178                                       const EntityHandle *subfacet_conn,
01179                                       const EntityType subfacet_type,
01180                                       EntityHandle &high_order_node) const = 0;
01181 
01183 
01191   virtual ErrorCode side_element(const EntityHandle source_entity,
01192                                    const int dim, 
01193                                    const int side_number,
01194                                    EntityHandle &target_entity) const = 0;
01195 
01272   virtual ErrorCode tag_get_handle( const char* name,
01273                                     int size,
01274                                     DataType type,
01275                                     Tag& tag_handle,
01276                                     unsigned flags = 0,
01277                                     const void* default_value = 0,
01278                                     bool* created = 0 ) = 0;
01279   
01281   virtual ErrorCode tag_get_handle( const char* name,
01282                                     int size,
01283                                     DataType type,
01284                                     Tag& tag_handle,
01285                                     unsigned flags = 0,
01286                                     const void* default_value = 0 ) const = 0;
01287 
01289 
01292   virtual ErrorCode  tag_get_name(const Tag tag_handle, 
01293                                     std::string& tag_name) const = 0;
01294 
01301   virtual ErrorCode tag_get_handle( const char *tag_name, 
01302                                     Tag &tag_handle ) const = 0;
01303 
01305 
01313   virtual ErrorCode tag_get_bytes(const Tag tag, int& bytes_per_tag) const = 0;
01314 
01316 
01326   virtual ErrorCode tag_get_length(const Tag tag, int &length) const = 0;
01327 
01329 
01333   virtual ErrorCode tag_get_type(const Tag tag, TagType &tag_type) const = 0;
01334 
01344    virtual ErrorCode tag_get_data_type(const Tag tag, DataType& type) const = 0;
01345 
01347 
01355   virtual ErrorCode tag_get_default_value(const Tag tag, void *def_val) const = 0;
01356   virtual ErrorCode tag_get_default_value( Tag tag, const void*& def_val, int& size) const = 0;
01357 
01359 
01362   virtual ErrorCode tag_get_tags(std::vector<Tag> &tag_handles) const = 0;
01363 
01365 
01370   virtual ErrorCode tag_get_tags_on_entity(const EntityHandle entity,
01371                                              std::vector<Tag> &tag_handles) const = 0;
01372 
01374 
01385   virtual ErrorCode  tag_get_data(const Tag tag_handle, 
01386                                   const EntityHandle* entity_handles, 
01387                                   int num_entities, 
01388                                   void *tag_data) const = 0;
01389 
01391 
01396   virtual ErrorCode  tag_get_data(const Tag tag_handle, 
01397                                     const Range& entity_handles, 
01398                                     void *tag_data) const = 0;
01399 
01401 
01411   virtual ErrorCode  tag_set_data( Tag tag_handle, 
01412                                    const EntityHandle* entity_handles, 
01413                                    int num_entities,
01414                                    const void *tag_data ) = 0;
01415   
01417 
01422   virtual ErrorCode  tag_set_data( Tag tag_handle, 
01423                                     const Range& entity_handles,
01424                                     const void *tag_data ) = 0;
01425 
01440   virtual ErrorCode  tag_get_by_ptr(const Tag tag_handle, 
01441                                   const EntityHandle* entity_handles, 
01442                                   int num_entities, 
01443                                   const void** tag_data,
01444                                   int* tag_sizes = 0 ) const = 0;
01445 
01458   virtual ErrorCode  tag_get_by_ptr(const Tag tag_handle, 
01459                                     const Range& entity_handles, 
01460                                     const void** tag_data,
01461                                     int* tag_sizes = 0 ) const = 0;
01462 
01477   virtual ErrorCode  tag_set_by_ptr( Tag tag_handle, 
01478                                    const EntityHandle* entity_handles, 
01479                                    int num_entities,
01480                                    void const* const* tag_data,
01481                                    const int* tag_sizes = 0 ) = 0;
01482   
01495   virtual ErrorCode  tag_set_by_ptr( Tag tag_handle, 
01496                                     const Range& entity_handles,
01497                                     void const* const* tag_data,
01498                                     const int* tag_sizes = 0 ) = 0;
01499 
01512   virtual ErrorCode tag_clear_data( Tag tag_handle,
01513                                     const Range& entity_handles,
01514                                     const void* value,
01515                                     int value_size = 0 ) = 0;
01516 
01529   virtual ErrorCode tag_clear_data( Tag tag_handle,
01530                                     const EntityHandle* entity_handles,
01531                                     int num_entity_handles,
01532                                     const void* value,
01533                                     int value_size = 0 ) = 0;
01534 
01536 
01542   virtual ErrorCode  tag_delete_data( Tag tag_handle, 
01543                                       const EntityHandle *entity_handles,
01544                                       int num_handles) = 0;
01545 
01547 
01552   virtual ErrorCode  tag_delete_data( Tag tag_handle, 
01553                                       const Range &entity_range) = 0;
01554 
01601   virtual ErrorCode tag_iterate( Tag tag_handle,
01602                                  Range::const_iterator begin,
01603                                  Range::const_iterator end,
01604                                  int& count,
01605                                  void*& data_ptr,
01606                                  bool allocate = true) = 0;
01607 
01609 
01611   virtual ErrorCode  tag_delete(Tag tag_handle) = 0;
01612 
01619 
01620 
01627   virtual ErrorCode create_meshset(const unsigned int options, 
01628                                      EntityHandle &ms_handle,
01629                                      int start_id = 0) = 0;
01630 
01632 
01636   virtual ErrorCode clear_meshset( const EntityHandle *ms_handles, 
01637                                      const int num_meshsets) = 0;
01638 
01640 
01643   virtual ErrorCode clear_meshset( const Range &ms_handles) = 0;
01644 
01646 
01650   virtual ErrorCode get_meshset_options(const EntityHandle ms_handle, 
01651                                           unsigned int& options) const = 0;
01652 
01654 
01658   virtual ErrorCode set_meshset_options(const EntityHandle ms_handle, 
01659                                           const unsigned int options) = 0;
01660 
01662 
01666   virtual ErrorCode subtract_meshset(EntityHandle meshset1, 
01667                                        const EntityHandle meshset2) = 0;
01668 
01670 
01674   virtual ErrorCode intersect_meshset(EntityHandle meshset1, 
01675                                         const EntityHandle meshset2) = 0;
01676     
01678 
01682   virtual ErrorCode unite_meshset(EntityHandle meshset1, 
01683                                     const EntityHandle meshset2) = 0;
01684 
01686 
01691   virtual ErrorCode add_entities(EntityHandle meshset, 
01692                                    const Range &entities) = 0;
01693 
01695 
01701   virtual ErrorCode add_entities(EntityHandle meshset, 
01702                                    const EntityHandle *entities,
01703                                    const int num_entities) = 0;
01704   
01706 
01711   virtual ErrorCode remove_entities(EntityHandle meshset, 
01712                                       const Range &entities) = 0;
01713 
01715 
01721   virtual ErrorCode remove_entities(EntityHandle meshset, 
01722                                       const EntityHandle *entities,
01723                                       const int num_entities) = 0;
01724 
01726 
01733   virtual bool contains_entities(EntityHandle meshset, 
01734                                  const EntityHandle *entities,
01735                                  int num_entities,
01736                                  const int operation_type = Interface::INTERSECT) = 0;
01737 
01739 
01763   virtual ErrorCode replace_entities(EntityHandle meshset, 
01764                                        const EntityHandle *old_entities,
01765                                        const EntityHandle *new_entities,
01766                                        int num_entities) = 0;
01773 
01774 
01781   virtual ErrorCode get_parent_meshsets(const EntityHandle meshset,
01782                                           std::vector<EntityHandle> &parents, 
01783                                           const int num_hops = 1) const = 0;
01784 
01786 
01793   virtual ErrorCode get_parent_meshsets(const EntityHandle meshset,
01794                                           Range &parents,
01795                                           const int num_hops = 1) const = 0;
01796 
01798 
01805   virtual ErrorCode get_child_meshsets(const EntityHandle meshset, 
01806                                          std::vector<EntityHandle> &children, 
01807                                          const int num_hops = 1) const = 0;
01808 
01810 
01817   virtual ErrorCode get_child_meshsets(const EntityHandle meshset, 
01818                                          Range &children, 
01819                                          const int num_hops = 1) const = 0;
01820 
01832   virtual ErrorCode get_contained_meshsets(const EntityHandle meshset, 
01833                                          std::vector<EntityHandle> &contained, 
01834                                          const int num_hops = 1) const = 0;
01835 
01847   virtual ErrorCode get_contained_meshsets(const EntityHandle meshset, 
01848                                              Range &contained, 
01849                                              const int num_hops = 1) const = 0;
01850 
01852 
01856   virtual ErrorCode num_parent_meshsets(const EntityHandle meshset,  
01857                                           int *number,
01858                                           const int num_hops = 1) const = 0;
01859 
01861 
01865   virtual ErrorCode num_child_meshsets(const EntityHandle meshset, 
01866                                          int *number,
01867                                          const int num_hops = 1) const = 0;
01868 
01877   virtual ErrorCode num_contained_meshsets(const EntityHandle meshset, 
01878                                              int *number,
01879                                              const int num_hops = 1) const = 0;
01880 
01882 
01887   virtual ErrorCode add_parent_meshset(EntityHandle child_meshset, 
01888                                          const EntityHandle parent_meshset) = 0;
01889 
01891 
01896   virtual ErrorCode add_parent_meshsets(EntityHandle child_meshset, 
01897                                           const EntityHandle* parent_meshsets,
01898                                           int num_parent_meshsets ) = 0;
01899 
01901 
01906   virtual ErrorCode add_child_meshset(EntityHandle parent_meshset, 
01907                                         const EntityHandle child_meshset) = 0;
01908 
01910 
01915   virtual ErrorCode add_child_meshsets(EntityHandle parent_meshset, 
01916                                          const EntityHandle* child_meshsets,
01917                                          int num_child_meshsets ) = 0;
01918 
01920 
01924   virtual ErrorCode add_parent_child( EntityHandle parent, 
01925                                         EntityHandle child ) = 0;
01926 
01928 
01932   virtual ErrorCode remove_parent_child( EntityHandle parent, 
01933                                            EntityHandle child ) = 0;
01934 
01936 
01941   virtual ErrorCode remove_parent_meshset(EntityHandle child_meshset, 
01942                                             const EntityHandle parent_meshset) = 0;
01943   
01945 
01950   virtual ErrorCode remove_child_meshset(EntityHandle parent_meshset, 
01951                                            const EntityHandle child_meshset) = 0;
01952 
01976   virtual ErrorCode create_set_iterator(EntityHandle meshset,
01977                                         EntityType ent_type,
01978                                         int ent_dim,
01979                                         int chunk_size,
01980                                         bool check_valid,
01981                                         SetIterator *&set_iter) = 0;
01984 };
01985 
01990 class type_equals : public std::unary_function<EntityHandle, bool>
01991 {
01992 public:
01994   Interface* meshDB;
01995 
01997   const EntityType test_type;
01998 
02000   type_equals(Interface* mdb, const EntityType type) : meshDB(mdb), test_type(type){}
02001 
02003   bool operator()(EntityHandle handle) const
02004     { 
02005       return (meshDB->type_from_handle(handle) ==  test_type); 
02006     } 
02007 };
02008 
02013 class type_not_equals : public std::unary_function<EntityHandle, bool>
02014 {
02015 public:
02016 
02018   Interface* meshDB;
02019 
02021   const EntityType test_type;
02022 
02024   type_not_equals(Interface* mdb, const EntityType type) : meshDB(mdb), test_type(type){}
02025 
02027   bool operator()(EntityHandle handle) const
02028     { 
02029       return (meshDB->type_from_handle(handle) !=  test_type); 
02030     } 
02031 };
02032 
02033 inline float Interface::api_version(std::string *version_string) 
02034 {
02035   if (NULL != version_string)
02036     *version_string = std::string("MOAB API version ") + std::string(MOAB_API_VERSION_STRING);
02037   return MOAB_API_VERSION;
02038 }
02039 
02040 } // namespace moab 
02041 
02042 #endif   // MB_INTERFACE_HPP
02043 
02044   
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines