From cc6717f46b3f080d813f5c5c4916a9753caf558d Mon Sep 17 00:00:00 2001 From: shmyga Date: Fri, 26 Jan 2018 10:56:38 +0300 Subject: [PATCH] [provider] ObjectMap -> StringMap --- src/main/haxework/provider/Provider.hx | 34 +++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/haxework/provider/Provider.hx b/src/main/haxework/provider/Provider.hx index 061f440..fd71cc0 100755 --- a/src/main/haxework/provider/Provider.hx +++ b/src/main/haxework/provider/Provider.hx @@ -1,35 +1,36 @@ package haxework.provider; -import haxe.ds.ObjectMap; - class Provider { - private static var TAG(default, never):String = Type.getClassName(Provider).split('.').pop(); + private static function key(i:Class, ?type:Dynamic):String { + var result = Type.getClassName(i); + if (type != null) result += ':${type}'; + return result; + } - //private static var factories:ObjectMap> = new ObjectMap>(); - private static var factories:ObjectMap> = cast [ + //private static var factories:Map> = new Map(); + private static var factories:Map> = cast [ #if (!neko) - haxework.net.manage.LoaderManager => haxework.net.manage.ILoaderManager + key(haxework.net.manage.LoaderManager) => haxework.net.manage.ILoaderManager #end ]; - private static var args:ObjectMap> = new ObjectMap>(); - private static var instances:ObjectMap = new ObjectMap(); + private static var args:Map> = new Map(); + private static var instances:Map = new Map(); public static function setFactory(i:Class, clazz:Class, ?type:Dynamic, ?args:Array):Void { - var key:Dynamic = (type == null) ? i : i + type; - //L.d(TAG, 'setFactory(${key}, ${clazz})'); + var key = key(i, type); factories.set(key, clazz); - if (args != null) Provider.args.set(type == null ? i : i + type, args); + if (args != null) Provider.args.set(key, args); } public static function set(i:Class, instance:T, ?type:Dynamic):Void { - var key:Dynamic = (type == null) ? i : i + type; + var key = key(i, type); instances.set(key, instance); } public static function get(i:Class, ?type:Dynamic):T { - var key:Dynamic = (type == null) ? i : i + type; + var key = key(i, type); if (instances.exists(key)) { return instances.get(key); } else if (factories.exists(key)) { @@ -37,18 +38,17 @@ class Provider { instances.set(key, instance); return instance; } else { - throw "Factory for\" " + i + "\" not found"; + throw 'Factory for "${key}" not found'; } } public static function build(i:Class, ?type:Dynamic):T { - var key:Dynamic = (type == null) ? i : i + type; - //L.d(TAG, 'build(${key})'); + var key = key(i, type); if (factories.exists(key)) { var instance:T = Type.createInstance(factories.get(key), args.exists(key) ? args.get(key) : []); return instance; } else { - throw "Factory for\"" + key + "\" not found"; + throw 'Factory for "${key}" not found'; } }