298
298
case 6: __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5]);
299
299
case 7: __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6]);
300
300
case 8: __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7]);
301
case 9: __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8]);
302
case 10: __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9]);
303
case 11: __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10]);
304
case 12: __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11]);
305
case 13: __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12]);
306
case 14: __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12],args[13]);
301
307
default: throw "Too many arguments";
389
395
Create an instance of an enum by using a constructor name and parameters.
391
public static function createEnum( e : Enum, constr : String, ?params : Array<Dynamic> ) : Dynamic {
397
public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
393
399
if (untyped e.mConstructEnum != null)
394
400
return untyped e.mConstructEnum(constr,params);
416
Create an instance of an enum by using a constructor index and parameters.
418
public static function createEnumIndex<T>( e : Enum<T>, index : Int, ?params : Array<Dynamic> ) : T {
419
var c = Type.getEnumConstructs(e)[index];
420
if( c == null ) throw index+" is not a valid enum constructor index";
421
return createEnum(e,c,params);
410
425
static function describe( t : Dynamic, fact : Bool ) untyped {
411
426
var fields = new Array();
434
449
untyped __php__("
435
450
$rfl = $c->__rfl__();
436
451
if($rfl === null) return new _hx_array(array());
437
$ms = $rfl->getMethods();
438
$ps = $rfl->getProperties();
440
453
$internals = array('__construct', '__call', '__get', '__set', '__isset', '__unset', '__toString');
454
$ms = $rfl->getMethods();
455
while(list(, $m) = each($ms)) {
442
456
$n = $m->getName();
443
457
if(!$m->isStatic() && ! in_array($n, $internals)) $r[] = $n;
446
if(!$p->isStatic()) $r[] = $p->getName();
459
$ps = $rfl->getProperties();
460
while(list(, $p) = each($ps))
461
if(!$p->isStatic()) $r[] = $p->getName()");
448
462
return untyped __php__("new _hx_array(array_values(array_unique($r)))");
450
464
return untyped c.GetInstanceFields();
487
501
$rfl = $c->__rfl__();
488
502
if($rfl === null) return new _hx_array(array());
489
503
$ms = $rfl->getMethods();
490
$ps = $rfl->getProperties();
505
while(list(, $m) = each($ms))
493
506
if($m->isStatic()) $r[] = $m->getName();
507
$ps = $rfl->getProperties();
508
while(list(, $p) = each($ps))
495
509
if($p->isStatic()) $r[] = $p->getName();
497
511
return untyped __php__("new _hx_array($r)");
518
533
Returns all the available constructor names for an enum.
520
public static function getEnumConstructs( e : Enum ) : Array<String> untyped {
535
public static function getEnumConstructs( e : Enum<Dynamic> ) : Array<String> untyped {
522
537
if(__php__("$e->__tname__ == 'Bool'")) return ['true', 'false'];
523
538
if(__php__("$e->__tname__ == 'Void'")) return [];
524
539
var rfl = __php__("new ReflectionClass($e->__tname__)");
525
540
var sps : ArrayAccess<Dynamic> = rfl.getStaticProperties();
526
541
// var r : ArrayAccess<String> = __call__('array');
527
__php__("$r = array(); foreach($sps as $k => $v) $r[] = $k");
542
__php__("$r = array(); while(list($k) = each($sps)) $r[] = $k");
528
543
sps = rfl.getMethods();
529
__php__("foreach($sps as $m) { $n = $m->getName(); if($n != '__construct' && $n != '__toString') $r[] = $n; }");
544
__php__("while(list(, $m) = each($sps)) { $n = $m->getName(); if($n != '__construct' && $n != '__toString') $r[] = $n; }");
530
545
return __php__("new _hx_array($r)");
532
547
return untyped e.GetClassFields();