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