Small cleanup.
authorCarl Hetherington <cth@carlh.net>
Tue, 12 Jan 2016 14:16:27 +0000 (14:16 +0000)
committerCarl Hetherington <cth@carlh.net>
Tue, 12 Jan 2016 14:16:27 +0000 (14:16 +0000)
src/reel_asset.h
src/reel_mono_picture_asset.h
src/reel_picture_asset.h
src/reel_sound_asset.h
src/reel_stereo_picture_asset.h
src/reel_subtitle_asset.h

index 9211fbd12788ab0de7f9cfc8c8f1fcf4cb5dd1da..4ad5b85bf656043d1345eea5530587fd78074a93 100644 (file)
@@ -85,6 +85,17 @@ public:
        }
 
 protected:
+
+       template <class T>
+       boost::shared_ptr<T> asset_of_type () const {
+               return boost::dynamic_pointer_cast<T> (_asset_ref.asset ());
+       }
+
+       template <class T>
+       boost::shared_ptr<T> asset_of_type () {
+               return boost::dynamic_pointer_cast<T> (_asset_ref.asset ());
+       }
+
        /** @return the node name that this asset uses in the CPL's &lt;Reel&gt; node
         *  e.g. MainPicture, MainSound etc.
         */
index da2eb087b0217b8e3fbd9d05861aefc21729cb2f..4acc82968c59be6f9331508c35926c181b4ae714 100644 (file)
@@ -43,12 +43,12 @@ public:
 
        /** @return the MonoPictureAsset that this object refers to */
        boost::shared_ptr<const MonoPictureAsset> mono_asset () const {
-               return boost::dynamic_pointer_cast<const MonoPictureAsset> (_asset_ref.asset ());
+               return asset_of_type<const MonoPictureAsset> ();
        }
 
        /** @return the MonoPictureAsset that this object refers to */
        boost::shared_ptr<MonoPictureAsset> mono_asset () {
-               return boost::dynamic_pointer_cast<MonoPictureAsset> (_asset_ref.asset ());
+               return asset_of_type<MonoPictureAsset> ();
        }
 
 private:
index 39ef3431bfa846ba506ceefc709f7f24fc4ea730..1611221fc32a777be7f0a174e91aa6a46aedeff0 100644 (file)
@@ -45,12 +45,12 @@ public:
 
        /** @return the PictureAsset that this object refers to */
        boost::shared_ptr<const PictureAsset> asset () const {
-               return boost::dynamic_pointer_cast<const PictureAsset> (_asset_ref.asset ());
+               return asset_of_type<const PictureAsset> ();
        }
 
        /** @return the PictureAsset that this object refers to */
        boost::shared_ptr<PictureAsset> asset () {
-               return boost::dynamic_pointer_cast<PictureAsset> (_asset_ref.asset ());
+               return asset_of_type<PictureAsset> ();
        }
 
        /** @return picture frame rate */
index 3158f8a06891b9c2ba8da665397e61619da9d243..fd1a63fe60046511015b041839d065fa37ac0268 100644 (file)
@@ -42,12 +42,12 @@ public:
 
        /** @return the SoundAsset that this object refers to */
        boost::shared_ptr<SoundAsset> asset () {
-               return boost::dynamic_pointer_cast<SoundAsset> (_asset_ref.asset ());
+               return asset_of_type<SoundAsset> ();
        }
 
        /** @return the SoundAsset that this object refers to */
        boost::shared_ptr<const SoundAsset> asset () const {
-               return boost::dynamic_pointer_cast<const SoundAsset> (_asset_ref.asset ());
+               return asset_of_type<const SoundAsset> ();
        }
 
 private:
index 3c68f8870cd0b1d0031619ad5722c1e5857a0f40..03bb6fd033fb5567f296e22a2c08af571969f158 100644 (file)
@@ -43,12 +43,12 @@ public:
 
        /** @return the StereoPictureAsset that this object refers to */
        boost::shared_ptr<const StereoPictureAsset> stereo_asset () const {
-               return boost::dynamic_pointer_cast<const StereoPictureAsset> (_asset_ref.asset ());
+               return asset_of_type<const StereoPictureAsset> ();
        }
 
        /** @return the StereoPictureAsset that this object refers to */
        boost::shared_ptr<StereoPictureAsset> stereo_asset () {
-               return boost::dynamic_pointer_cast<StereoPictureAsset> (_asset_ref.asset ());
+               return asset_of_type<StereoPictureAsset> ();
        }
 
 private:
index 272b18f54c6c4cf987872fe9d37fa50ee562ddf1..fa25bf9dbe9335d1f8aa0bc41a1e03a8723f240a 100644 (file)
@@ -41,7 +41,7 @@ public:
        ReelSubtitleAsset (boost::shared_ptr<const cxml::Node>);
 
        boost::shared_ptr<SubtitleAsset> asset () const {
-               return boost::dynamic_pointer_cast<SubtitleAsset> (_asset_ref.asset ());
+               return asset_of_type<SubtitleAsset> ();
        }
 
 private: