From: <man...@us...> - 2014-12-24 12:42:35
|
Revision: 4677 http://sourceforge.net/p/modplug/code/4677 Author: manxorist Date: 2014-12-24 12:42:16 +0000 (Wed, 24 Dec 2014) Log Message: ----------- [Ref] Add a ComponentHandle<ComponentType> wrapper around MPT_SHARED_PTR<ComponentType> which automaticlly does GetComponent<ComponentType>() on default initialization. Modified Paths: -------------- trunk/OpenMPT/common/ComponentManager.h trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/StreamEncoderMP3.cpp trunk/OpenMPT/mptrack/StreamEncoderMP3.h trunk/OpenMPT/mptrack/StreamEncoderOpus.cpp trunk/OpenMPT/mptrack/StreamEncoderOpus.h trunk/OpenMPT/mptrack/StreamEncoderVorbis.cpp trunk/OpenMPT/mptrack/StreamEncoderVorbis.h trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/soundlib/Load_mo3.cpp trunk/OpenMPT/soundlib/SampleFormats.cpp Modified: trunk/OpenMPT/common/ComponentManager.h =================================================================== --- trunk/OpenMPT/common/ComponentManager.h 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/common/ComponentManager.h 2014-12-24 12:42:16 UTC (rev 4677) @@ -324,10 +324,46 @@ #endif // MPT_COMPONENT_MANAGER +// Simple wrapper around MPT_SHARED_PTR<ComponentType> which automatically +// gets a reference to the component (or constructs it) on initialization. template <typename T> -bool IsComponentAvailable(MPT_SHARED_PTR<T> component) +class ComponentHandle { - return component && component->IsAvailable(); +private: + MPT_SHARED_PTR<T> component; +public: + ComponentHandle() + : component(GetComponent<T>()) + { + return; + } + ~ComponentHandle() + { + return; + } + bool IsAvailable() const + { + return component && component->IsAvailable(); + } + T *get() const + { + return component.get(); + } + T &operator*() const + { + return *component; + } + T *operator->() const + { + return &*component; + } +}; + + +template <typename T> +bool IsComponentAvailable(const ComponentHandle<T> &handle) +{ + return handle.IsAvailable(); } Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-12-24 12:42:16 UTC (rev 4677) @@ -1833,7 +1833,7 @@ if(pitch > 2.0f) return 2 + (2<<8); // Check whether the DLL file exists. - MPT_SHARED_PTR<ComponentSoundTouch> soundTouch = GetComponent<ComponentSoundTouch>(); + ComponentHandle<ComponentSoundTouch> soundTouch; if(!IsComponentAvailable(soundTouch)) { MsgBox(IDS_SOUNDTOUCH_LOADFAILURE); Modified: trunk/OpenMPT/mptrack/StreamEncoderMP3.cpp =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoderMP3.cpp 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/mptrack/StreamEncoderMP3.cpp 2014-12-24 12:42:16 UTC (rev 4677) @@ -1436,7 +1436,6 @@ #ifdef MPT_MP3ENCODER_LAME if(type == MP3EncoderDefault || type == MP3EncoderLame) { - m_Lame = GetComponent<ComponentLame>(); if(IsComponentAvailable(m_Lame)) { m_Type = MP3EncoderLame; @@ -1448,7 +1447,6 @@ #ifdef MPT_MP3ENCODER_BLADE if(type == MP3EncoderDefault || type == MP3EncoderBlade) { - m_Blade = GetComponent<ComponentBlade>(); if(IsComponentAvailable(m_Blade)) { m_Type = MP3EncoderBlade; @@ -1460,7 +1458,6 @@ #ifdef MPT_MP3ENCODER_ACM if(type == MP3EncoderDefault || type == MP3EncoderACM) { - m_Acm = GetComponent<ComponentAcmMP3>(); if(IsComponentAvailable(m_Acm)) { m_Type = MP3EncoderACM; Modified: trunk/OpenMPT/mptrack/StreamEncoderMP3.h =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoderMP3.h 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/mptrack/StreamEncoderMP3.h 2014-12-24 12:42:16 UTC (rev 4677) @@ -12,7 +12,9 @@ #include "StreamEncoder.h" +#include "../common/ComponentManager.h" + OPENMPT_NAMESPACE_BEGIN @@ -45,13 +47,13 @@ private: #ifdef MPT_MP3ENCODER_LAME - MPT_SHARED_PTR<ComponentLame> m_Lame; + ComponentHandle<ComponentLame> m_Lame; #endif #ifdef MPT_MP3ENCODER_BLADE - MPT_SHARED_PTR<ComponentBlade> m_Blade; + ComponentHandle<ComponentBlade> m_Blade; #endif #ifdef MPT_MP3ENCODER_ACM - MPT_SHARED_PTR<ComponentAcmMP3> m_Acm; + ComponentHandle<ComponentAcmMP3> m_Acm; #endif MP3EncoderType m_Type; Modified: trunk/OpenMPT/mptrack/StreamEncoderOpus.cpp =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoderOpus.cpp 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/mptrack/StreamEncoderOpus.cpp 2014-12-24 12:42:16 UTC (rev 4677) @@ -568,7 +568,6 @@ OggOpusEncoder::OggOpusEncoder() //------------------------------ { - m_Opus = GetComponent<ComponentOpus>(); if(IsComponentAvailable(m_Opus)) { SetTraits(m_Opus->BuildTraits()); Modified: trunk/OpenMPT/mptrack/StreamEncoderOpus.h =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoderOpus.h 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/mptrack/StreamEncoderOpus.h 2014-12-24 12:42:16 UTC (rev 4677) @@ -12,7 +12,9 @@ #include "StreamEncoder.h" +#include "../common/ComponentManager.h" + OPENMPT_NAMESPACE_BEGIN @@ -23,7 +25,7 @@ private: - MPT_SHARED_PTR<ComponentOpus> m_Opus; + ComponentHandle<ComponentOpus> m_Opus; public: Modified: trunk/OpenMPT/mptrack/StreamEncoderVorbis.cpp =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoderVorbis.cpp 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/mptrack/StreamEncoderVorbis.cpp 2014-12-24 12:42:16 UTC (rev 4677) @@ -399,7 +399,6 @@ VorbisEncoder::VorbisEncoder() //---------------------------- { - m_Vorbis = GetComponent<ComponentVorbis>(); if(IsComponentAvailable(m_Vorbis)) { SetTraits(m_Vorbis->BuildTraits()); Modified: trunk/OpenMPT/mptrack/StreamEncoderVorbis.h =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoderVorbis.h 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/mptrack/StreamEncoderVorbis.h 2014-12-24 12:42:16 UTC (rev 4677) @@ -12,7 +12,9 @@ #include "StreamEncoder.h" +#include "../common/ComponentManager.h" + OPENMPT_NAMESPACE_BEGIN @@ -23,7 +25,7 @@ private: - MPT_SHARED_PTR<ComponentVorbis> m_Vorbis; + ComponentHandle<ComponentVorbis> m_Vorbis; public: Modified: trunk/OpenMPT/mptrack/View_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/mptrack/View_gen.cpp 2014-12-24 12:42:16 UTC (rev 4677) @@ -1579,7 +1579,7 @@ { case CTLCOLOR_DLG: { - MPT_SHARED_PTR<ComponentUXTheme> uxtheme = GetComponent<ComponentUXTheme>(); + ComponentHandle<ComponentUXTheme> uxtheme; if(IsComponentAvailable(uxtheme)) { EnableThemeDialogTexture(*pWnd, ETDT_ENABLETAB); Modified: trunk/OpenMPT/soundlib/Load_mo3.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mo3.cpp 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/soundlib/Load_mo3.cpp 2014-12-24 12:42:16 UTC (rev 4677) @@ -96,7 +96,7 @@ #else // !NO_MO3 // Try to load unmo3 dynamically. - MPT_SHARED_PTR<ComponentUnMO3> unmo3 = GetComponent<ComponentUnMO3>(); + ComponentHandle<ComponentUnMO3> unmo3; if(!IsComponentAvailable(unmo3)) { // Didn't succeed. Modified: trunk/OpenMPT/soundlib/SampleFormats.cpp =================================================================== --- trunk/OpenMPT/soundlib/SampleFormats.cpp 2014-12-24 12:10:21 UTC (rev 4676) +++ trunk/OpenMPT/soundlib/SampleFormats.cpp 2014-12-24 12:42:16 UTC (rev 4677) @@ -2436,7 +2436,7 @@ } } - MPT_SHARED_PTR<ComponentMPG123> mpg123 = GetComponent<ComponentMPG123>(); + ComponentHandle<ComponentMPG123> mpg123; if(!IsComponentAvailable(mpg123)) { return false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |