+ GEOMAPI_EXPORT virtual ~GeomAPI_Interface();
+
+ /// Returns the pointer to the impl
+ template<class T> inline T* implPtr()
+ {
+ return reinterpret_cast<T*>(myImpl.get());
+ }
+ /// Returns the pointer to the impl
+ template<class T> inline const T* implPtr() const
+ {
+ return reinterpret_cast<T*>(myImpl.get());
+ }
+ /// Returns the reference object of the impl
+ template<class T> inline const T& impl() const
+ {
+ return *(reinterpret_cast<T*>(myImpl.get()));
+ }
+ /// Updates the impl (deletes the old one)
+ template<class T> inline void setImpl(T* theImpl)
+ {
+ myImpl = std::shared_ptr<char>(reinterpret_cast<char*>(theImpl), GeomAPI_deleter<T>);
+ }