Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / GeomAPI / GeomAPI_Interface.h
1 // File:        GeomAPI_Interface.hxx
2 // Created:     23 Apr 2014
3 // Author:      Mikhail PONIKAROV
4
5 #ifndef GeomAPI_Interface_H_
6 #define GeomAPI_Interface_H_
7
8 #include <GeomAPI.h>
9
10 /**\class GeomAPI_Interface
11  * \ingroup DataModel
12  * \brief General base class for all interfaces in this package
13  */
14
15 class GEOMAPI_EXPORT GeomAPI_Interface
16 {
17  protected:
18   void* myImpl;  ///< pointer to the internal impl object
19
20  public:
21   /// None - constructor
22   GeomAPI_Interface();
23
24   /// Constructor by the impl pointer (used for internal needs)
25   GeomAPI_Interface(void* theImpl);
26
27   /// Destructor
28   virtual ~GeomAPI_Interface();
29
30   /// Returns the pointer to the impl
31   template<class T> inline T* implPtr()
32   {
33     return static_cast<T*>(myImpl);
34   }
35   /// Returns the reference object of the impl
36   template<class T> inline const T& impl()
37   {
38     return *(static_cast<T*>(myImpl));
39   }
40   /// Updates the impl (deletes the old one)
41   void setImpl(void* theImpl);
42 };
43
44 #endif