Salome HOME
Define guards are corrected according to the code style
[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() {return static_cast<T*>(myImpl);}
32   /// Returns the reference object of the impl
33   template<class T> inline const T& impl() {return *(static_cast<T*>(myImpl));}
34   /// Updates the impl (deletes the old one)
35   void setImpl(void* theImpl);
36 };
37
38 #endif