Branch data Line data Source code
1 : : #ifndef MESHKIT_MESH_OP_PROXY_HPP
2 : : #define MESHKIT_MESH_OP_PROXY_HPP
3 : :
4 : : #include "meshkit/Types.hpp"
5 : : #include "iBase.h"
6 : :
7 : : namespace MeshKit
8 : : {
9 : :
10 : : class MeshOp;
11 : : class MKCore;
12 : :
13 : : /**\brief Polymorphic behavior for MeshOp classes (as opposed to instances)
14 : : *
15 : : * Each registered MeshOp sub-class must register via an implementation
16 : : * of this interface. An implementation of this class provides the necessary
17 : : * information about the class as a whole.
18 : : */
19 : 1054 : class MeshOpProxy
20 : : {
21 : : public:
22 : : /**\brief Factory method */
23 : : virtual MeshOp* create( MKCore* core, const MEntVector &vec ) = 0;
24 : : /**\brief String name of MeshOp class */
25 : : virtual const char* name() const = 0;
26 : : /**\brief Get array of mesh entity types produced by MeshOp instances
27 : : *
28 : : * \return an array of \c MOAB::EntityType terminated by the
29 : : * \c MOAB::MBMAXTYPE value.
30 : : */
31 : : virtual const moab::EntityType* output_types() const = 0;
32 : : /**\brief Check if class can be used to mesh entites of the specified dimension */
33 : : virtual bool can_mesh( iBase_EntityType dimension ) const = 0;
34 : : /**\brief Check if class can be used to mesh passed entity */
35 : : virtual bool can_mesh( ModelEnt* entity ) const = 0;
36 : : };
37 : :
38 : : } // namespace MeshKit
39 : :
40 : : #endif // #ifdef MESHKIT_MESH_OP_PROXY
|