//----------------------------------------------------------------------------- // 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 configuration event handlers. */ #ifndef INCLUDED_DEVICESPECIFICCONFIGURATIONEVENTHANDLERTIE_H_5249532 #define INCLUDED_DEVICESPECIFICCONFIGURATIONEVENTHANDLERTIE_H_5249532 #include #include namespace Pylon { /*! \class CDeviceSpecificConfigurationEventHandlerTie \brief Implementation Detail: Adapter for device specific configuration event handlers. */ template class CDeviceSpecificConfigurationEventHandlerTie : public CConfigurationEventHandler { public: CDeviceSpecificConfigurationEventHandlerTie( InterfaceT* ptr, bool isCleanupDelete ) : m_ptr( ptr ) , m_isCleanupDelete( isCleanupDelete ) { } ~CDeviceSpecificConfigurationEventHandlerTie() { } void OnAttach( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnAttach( dynamic_cast(camera) ); } void OnAttached( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnAttached( dynamic_cast(camera) ); } void OnOpen( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnOpen( dynamic_cast(camera) ); } void OnOpened( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnOpened( dynamic_cast(camera) ); } void OnGrabStart( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnGrabStart( dynamic_cast(camera) ); } void OnGrabStarted( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnGrabStarted( dynamic_cast(camera) ); } void OnGrabStop( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnGrabStop( dynamic_cast(camera) ); } void OnGrabStopped( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnGrabStopped( dynamic_cast(camera) ); } void OnClose( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnClose( dynamic_cast(camera) ); } void OnClosed( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnClosed( dynamic_cast(camera) ); } void OnDestroy( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnDestroy( dynamic_cast(camera) ); } void OnDestroyed( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnDestroyed( dynamic_cast(camera) ); } void OnDetach( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnDetach( dynamic_cast(camera) ); } void OnDetached( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnDetached( dynamic_cast(camera) ); } void OnGrabError( CInstantCamera& camera, const char* errorMessage ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnGrabError( dynamic_cast(camera), errorMessage ); } void OnCameraDeviceRemoved( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnCameraDeviceRemoved( dynamic_cast(camera) ); } virtual void OnConfigurationRegistered( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnConfigurationRegistered( static_cast(camera) ); } virtual void OnConfigurationDeregistered( CInstantCamera& camera ) { PYLON_ASSERT2( dynamic_cast(&camera) != NULL, "Unexpected camera type passed." ); m_ptr->OnConfigurationDeregistered( static_cast(camera) ); } virtual void DestroyConfiguration() { try { // destroy only when demanded if (m_isCleanupDelete) { m_ptr->DestroyConfiguration(); } m_ptr = NULL; } catch (...) { delete this; m_ptr = NULL; throw; } delete this; } private: InterfaceT* m_ptr; bool m_isCleanupDelete; }; } #endif /* INCLUDED_DEVICESPECIFICCONFIGURATIONEVENTHANDLERTIE_H_5249532 */