MCPcopy Create free account
hub / github.com/HaxeFoundation/hxcpp / runObject

Method runObject

src/hx/cppia/Cppia.cpp:2647–2694  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2645 }
2646
2647 hx::Object *runObject(CppiaCtx *ctx) HXCPP_OVERRIDE
2648 {
2649 hx::Object *obj = object ? object->runObject(ctx) : staticClass.mPtr ? staticClass.mPtr : ctx->getThis(false);
2650 BCR_CHECK;
2651 CPPIA_CHECK(obj);
2652
2653 if (crement==coNone && assign==aoNone)
2654 return Dynamic(obj->__Field(name,HX_PROP_DYNAMIC)).mPtr;
2655
2656 if (crement!=coNone)
2657 {
2658 Dynamic val0 = obj->__Field(name,HX_PROP_DYNAMIC);
2659 BCR_CHECK;
2660 Dynamic val1 = val0 + (crement<=coPostInc ? 1 : -1);
2661 obj->__SetField(name, val1,HX_PROP_DYNAMIC);
2662 BCR_CHECK;
2663 return crement & coPostInc ? val0.mPtr : val1.mPtr;
2664 }
2665 if (assign == aoSet)
2666 {
2667 hx::Object *val = value->runObject(ctx);
2668 BCR_CHECK;
2669 return Dynamic(obj->__SetField(name,val,HX_PROP_DYNAMIC)).mPtr;
2670 }
2671
2672 Dynamic val0 = obj->__Field(name,HX_PROP_DYNAMIC);
2673 BCR_CHECK;
2674 Dynamic val1;
2675
2676 switch(assign)
2677 {
2678 case aoAdd: val1 = val0 + Dynamic(value->runObject(ctx)); break;
2679 case aoMult: val1 = val0 * value->runFloat(ctx); break;
2680 case aoDiv: val1 = val0 / value->runFloat(ctx); break;
2681 case aoSub: val1 = val0 - value->runFloat(ctx); break;
2682 case aoAnd: val1 = (int)val0 & value->runInt(ctx); break;
2683 case aoOr: val1 = (int)val0 | value->runInt(ctx); break;
2684 case aoXOr: val1 = (int)val0 ^ value->runInt(ctx); break;
2685 case aoShl: val1 = (int)val0 << value->runInt(ctx); break;
2686 case aoShr: val1 = (int)val0 >> value->runInt(ctx); break;
2687 case aoUShr: val1 = hx::UShr((int)val0,value->runInt(ctx)); break;
2688 case aoMod: val1 = hx::Mod(val0 ,value->runFloat(ctx)); break;
2689 default: ;
2690 }
2691 BCR_CHECK;
2692 obj->__SetField(name,val1,HX_PROP_DYNAMIC);
2693 return val1.mPtr;
2694 }
2695
2696 #ifdef CPPIA_JIT
2697 static int SLJIT_CALL getInt( hx::Object *inSrc, String *inName )

Callers

nothing calls this directly

Calls 9

UShrFunction · 0.85
ModFunction · 0.85
DynamicClass · 0.50
runObjectMethod · 0.45
getThisMethod · 0.45
__FieldMethod · 0.45
__SetFieldMethod · 0.45
runFloatMethod · 0.45
runIntMethod · 0.45

Tested by

no test coverage detected