[longomatch] Refactor Registry to use generics more
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Refactor Registry to use generics more
- Date: Wed, 1 Apr 2015 23:43:25 +0000 (UTC)
commit 4f31cbd3956d53b40d6abfbb8810c2373ff4a68a
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Thu Apr 2 01:43:00 2015 +0200
Refactor Registry to use generics more
LongoMatch.Core/Common/Registry.cs | 9 +++--
LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs | 2 +-
.../Interfaces/Multimedia/IMultimediaToolkit.cs | 2 +-
LongoMatch.GUI/Gui/GUIToolkit.cs | 6 ++--
LongoMatch.Multimedia/Utils/MultimediaFactory.cs | 36 +++++++++----------
LongoMatch/Main.cs | 2 +-
6 files changed, 29 insertions(+), 28 deletions(-)
---
diff --git a/LongoMatch.Core/Common/Registry.cs b/LongoMatch.Core/Common/Registry.cs
index 9223340..45f24b4 100644
--- a/LongoMatch.Core/Common/Registry.cs
+++ b/LongoMatch.Core/Common/Registry.cs
@@ -44,16 +44,19 @@ namespace LongoMatch.Core.Common
elements = new Dictionary<Type, List<RegistryElement>> ();
}
- public void Register (int priority, Type interfac, Type elementType)
+ public void Register<I, C> (int priority)
{
+ Type interfac = typeof(I);
+ Type klass = typeof(C);
if (!elements.ContainsKey (interfac)) {
elements [interfac] = new List<RegistryElement> ();
}
- elements [interfac].Add (new RegistryElement (elementType, priority));
+ elements [interfac].Add (new RegistryElement (klass, priority));
}
- public T GetDefault<T> (Type interfac, params object[] args)
+ public T Retrieve<T> (params object[] args)
{
+ Type interfac = typeof(T);
Type elementType;
if (!elements.ContainsKey (interfac)) {
diff --git a/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs b/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
index a3394cd..7e80171 100644
--- a/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
@@ -32,7 +32,7 @@ namespace LongoMatch.Core.Interfaces.GUI
public interface IGUIToolkit
{
/* Plugable views */
- void Register (int priority, Type interfac, Type elementType);
+ void Register <I, C> (int priority);
IPlayerView GetPlayerView ();
diff --git a/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
b/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
index 60779cd..d7b4093 100644
--- a/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
+++ b/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
@@ -25,7 +25,7 @@ namespace LongoMatch.Core.Interfaces.Multimedia
{
public interface IMultimediaToolkit
{
- void Register (int priority, Type interfac, Type elementType);
+ void Register <I, C> (int priority);
IPlayer GetPlayer ();
diff --git a/LongoMatch.GUI/Gui/GUIToolkit.cs b/LongoMatch.GUI/Gui/GUIToolkit.cs
index a0d9d87..31b8bb4 100644
--- a/LongoMatch.GUI/Gui/GUIToolkit.cs
+++ b/LongoMatch.GUI/Gui/GUIToolkit.cs
@@ -83,14 +83,14 @@ namespace LongoMatch.Gui
set;
}
- public void Register (int priority, Type interfac, Type elementType)
+ public void Register <I, C> (int priority)
{
- registry.Register (priority, interfac, elementType);
+ registry.Register<I, C> (priority);
}
public IPlayerView GetPlayerView ()
{
- return registry.GetDefault<IPlayerView> (typeof(IPlayerView));
+ return registry.Retrieve<IPlayerView> ();
}
public void InfoMessage (string message, object parent = null)
diff --git a/LongoMatch.Multimedia/Utils/MultimediaFactory.cs
b/LongoMatch.Multimedia/Utils/MultimediaFactory.cs
index 85974bd..3081f01 100644
--- a/LongoMatch.Multimedia/Utils/MultimediaFactory.cs
+++ b/LongoMatch.Multimedia/Utils/MultimediaFactory.cs
@@ -42,60 +42,58 @@ namespace LongoMatch.Video
{
registry = new Registry ("Multimedia backend");
/* Register default elements */
- Register (0, typeof(IPlayer), typeof(GstPlayer));
- Register (0, typeof(IFramesCapturer), typeof(GstFramesCapturer));
- Register (0, typeof(IVideoConverter), typeof(GstVideoConverter));
- Register (0, typeof(IVideoEditor), typeof(GstVideoSplitter));
- Register (0, typeof(IRemuxer), typeof(GstRemuxer));
- Register (0, typeof(ICapturer), typeof(GstCameraCapturer));
- Register (0, typeof(IDiscoverer), typeof(GstDiscoverer));
+ Register<IPlayer, GstPlayer> (0);
+ Register<IFramesCapturer, GstFramesCapturer> (0);
+ Register<IVideoConverter, GstVideoConverter> (0);
+ Register<IVideoEditor, GstVideoSplitter> (0);
+ Register<IRemuxer, GstRemuxer> (0);
+ Register<ICapturer, GstCameraCapturer> (0);
+ Register<IDiscoverer, GstDiscoverer> (0);
}
- public void Register (int priority, Type interfac, Type elementType)
+ public void Register <I, C> (int priority)
{
- registry.Register (priority, interfac, elementType);
+ registry.Register<I, C> (priority);
}
public IPlayer GetPlayer ()
{
- return registry.GetDefault<IPlayer> (typeof(IPlayer));
+ return registry.Retrieve<IPlayer> ();
}
public IMultiPlayer GetMultiPlayer ()
{
- return registry.GetDefault<IMultiPlayer> (typeof(IMultiPlayer));
+ return registry.Retrieve<IMultiPlayer> ();
}
public IFramesCapturer GetFramesCapturer ()
{
- return registry.GetDefault<IFramesCapturer> (typeof(IFramesCapturer));
+ return registry.Retrieve<IFramesCapturer> ();
}
public IVideoEditor GetVideoEditor ()
{
- return registry.GetDefault<IVideoEditor> (typeof(IVideoEditor));
+ return registry.Retrieve<IVideoEditor> ();
}
public IVideoConverter GetVideoConverter (string filename)
{
- return registry.GetDefault<IVideoConverter> (typeof(IVideoConverter), filename);
+ return registry.Retrieve<IVideoConverter> (filename);
}
public IDiscoverer GetDiscoverer ()
{
- return registry.GetDefault<IDiscoverer> (typeof(IDiscoverer));
+ return registry.Retrieve<IDiscoverer> ();
}
public ICapturer GetCapturer ()
{
- return registry.GetDefault<ICapturer> (typeof(ICapturer), "test.avi");
+ return registry.Retrieve<ICapturer> ("test.avi");
}
public IRemuxer GetRemuxer (MediaFile inputFile, string outputFile, VideoMuxerType muxer)
{
- return registry.GetDefault<IRemuxer> (typeof(IRemuxer),
- inputFile.FilePath,
- outputFile, muxer);
+ return registry.Retrieve<IRemuxer> (inputFile.FilePath, outputFile, muxer);
}
public MediaFile DiscoverFile (string file, bool takeScreenshot = true)
diff --git a/LongoMatch/Main.cs b/LongoMatch/Main.cs
index 4de4997..bc18cf7 100644
--- a/LongoMatch/Main.cs
+++ b/LongoMatch/Main.cs
@@ -63,7 +63,7 @@ namespace LongoMatch
AddinsManager.LoadExportProjectAddins (Config.GUIToolkit.MainController);
AddinsManager.LoadMultimediaBackendsAddins (Config.MultimediaToolkit);
AddinsManager.LoadUIBackendsAddins (Config.GUIToolkit);
- Config.GUIToolkit.Register (0, typeof(IPlayerView), typeof(PlayerView));
+ Config.GUIToolkit.Register<IPlayerView, PlayerView> (0);
if (!haveCodecs) {
CodecsChoiceDialog ccd = new CodecsChoiceDialog ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]