// Class: openfl.utils._Dictionary.ClassMap

var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this

$global.Object.defineProperty(exports, "__esModule", {value: true});

var __map_reserved = {};

// Imports

var $hxClasses = require("./../../../hxClasses_stub").default;
var $import = require("./../../../import_stub").default;
function haxe_IMap() {return require("./../../../haxe/IMap");}
function Type() {return require("./../../../Type");}
function haxe_ds_StringMap() {return require("./../../../haxe/ds/StringMap");}

// Constructor

var ClassMap = function() {
	this.types = new (haxe_ds_StringMap().default)();
	this.values = new (haxe_ds_StringMap().default)();
}

// Meta

ClassMap.__name__ = ["openfl","utils","_Dictionary","ClassMap"];
ClassMap.__interfaces__ = [(haxe_IMap().default)];
ClassMap.prototype = {
	exists: function(key) {
		return this.types.exists((Type().default).getClassName(key));
	},
	get: function(key) {
		return this.values.get((Type().default).getClassName(key));
	},
	keys: function() {
		return this.types.iterator();
	},
	iterator: function() {
		return this.values.iterator();
	},
	remove: function(key) {
		var name = (Type().default).getClassName(key);
		if(!this.types.remove(name)) {
			return this.values.remove(name);
		} else {
			return true;
		}
	},
	set: function(key,value) {
		var name = (Type().default).getClassName(key);
		this.types.set(name,key);
		this.values.set(name,value);
	},
	toString: function() {
		return this.values.toString();
	}
};
ClassMap.prototype.__class__ = ClassMap.prototype.constructor = $hxClasses["openfl.utils._Dictionary.ClassMap"] = ClassMap;

// Init



// Statics




// Export

exports.default = ClassMap;