//----------------------------------------------------------------------------- // Basler pylon SDK // Copyright (c) 2010-2021 Basler AG // http://www.baslerweb.com // Author: Andreas Gau //----------------------------------------------------------------------------- /*! \file \brief Contains an adapter class for device specific camera event handlers. */ #ifndef INCLUDED_DEVICESPECIFICCAMERAEVENTHANDLERTIE_H_4759899 #define INCLUDED_DEVICESPECIFICCAMERAEVENTHANDLERTIE_H_4759899 #include #include namespace Pylon { /*! \class CDeviceSpecificCameraEventHandlerTie \brief Implementation Detail: Adapter for device specific camera event handlers. */ template class CDeviceSpecificCameraEventHandlerTie : public CCameraEventHandler { public: CDeviceSpecificCameraEventHandlerTie( InterfaceT* ptr, bool isCleanupDelete ) : m_ptr( ptr ) , m_isCleanupDelete( isCleanupDelete ) { } ~CDeviceSpecificCameraEventHandlerTie() { } virtual void OnCameraEvent( CInstantCamera& camera, intptr_t userProvidedId, GenApi::INode* pNode ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnCameraEvent( static_cast(camera), userProvidedId, pNode ); } virtual void OnCameraEventHandlerRegistered( CInstantCamera& camera, const String_t& nodeName, intptr_t userProvidedId ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnCameraEventHandlerRegistered( static_cast(camera), nodeName, userProvidedId ); } virtual void OnCameraEventHandlerDeregistered( CInstantCamera& camera, const String_t& nodeName, intptr_t userProvidedId ) { m_ptr->OnCameraEventHandlerDeregistered( static_cast(camera), nodeName, userProvidedId ); } virtual void DestroyCameraEventHandler() { try { // destroy only when demanded if (m_isCleanupDelete) { m_ptr->DestroyCameraEventHandler(); } m_ptr = NULL; } catch (...) { delete this; m_ptr = NULL; throw; } delete this; } private: InterfaceT* m_ptr; bool m_isCleanupDelete; }; } #endif /* INCLUDED_DEVICESPECIFICCAMERAEVENTHANDLERTIE_H_4759899 */