2 import flash.utils.getDefinitionByName;
3 import flash.utils.getQualifiedClassName;
4 import flash.utils.describeType;
5 import flash.utils.getQualifiedSuperclassName;
7 static public function toEnum(t : *) : Class {
9 if(!t.__isenum) return null;
17 static public function toClass(t : *) : Class {
19 if(!t.hasOwnProperty("prototype")) return null;
27 static public function getClass(o : *) : Class {
28 var cname : String = getQualifiedClassName(o);
29 if(cname == "null" || cname == "Object" || cname == "int" || cname == "Number" || cname == "Boolean") return null;
30 if(o.hasOwnProperty("prototype")) return null;
31 var c : * = getDefinitionByName(cname) as Class;
32 if(c.__isenum) return null;
35 static public function getEnum(o : *) : Class {
36 var cname : String = getQualifiedClassName(o);
37 if(cname == "null" || cname.substr(0,8) == "builtin.") return null;
38 if(o.hasOwnProperty("prototype")) return null;
39 var c : * = getDefinitionByName(cname) as Class;
40 if(!c.__isenum) return null;
43 static public function getSuperClass(c : Class) : Class {
44 var cname : String = getQualifiedSuperclassName(c);
45 if(cname == "Object") return null;
46 return getDefinitionByName(cname) as Class;
48 static public function getClassName(c : Class) : String {
49 if(c == null) return null;
50 var str : String = getQualifiedClassName(c);
51 return str.split("::").join(".");
53 static public function getEnumName(e : Class) : String {
54 var n : String = getQualifiedClassName(e);
57 static public function resolveClass(name : String) : Class {
61 cl = getDefinitionByName(name) as Class;
62 if(cl.__isenum) return null;
68 if(cl == null || cl.__name__ == null) return null;
73 static public function resolveEnum(name : String) : Class {
77 e = getDefinitionByName(name);
78 if(!e.__isenum) return null;
84 if(e == null || e.__ename__ == null) return null;
89 static public function createInstance(cl : Class,args : Array) : * {
90 return function() : * {
100 $r = new cl(args[0],args[1]);
103 $r = new cl(args[0],args[1],args[2]);
106 $r = new cl(args[0],args[1],args[2],args[3]);
109 $r = new cl(args[0],args[1],args[2],args[3],args[4]);
112 $r = function() : * {
114 throw "Too many arguments";
122 static public function getEnumConstructs(e : Class) : Array {
123 return e.__constructs__;
125 static public function enumEq(a : *,b : *) : Boolean {
126 if(a == b) return true;
128 if(a.tag != b.tag) return false;
130 var _g1 : int = 0, _g : int = a.params.length;
133 if(!enumEq(a.params[i],b.params[i])) return false;
142 static public function enumConstructor(e : *) : String {
145 static public function enumParameters(e : *) : Array {
146 return (e.params == null?[]:e.params);
148 static public function enumIndex(e : *) : int {