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

Method runObject

src/hx/cppia/Cppia.cpp:5365–5412  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5363 return this;
5364 }
5365 hx::Object *runObject(CppiaCtx *ctx) HXCPP_OVERRIDE
5366 {
5367 hx::Object *obj = object->runObject(ctx);
5368 BCR_CHECK;
5369 CPPIA_CHECK(obj);
5370 int i = index->runInt(ctx);
5371 BCR_CHECK;
5372 if (crement==coNone && assign==aoNone)
5373 {
5374 return obj->__GetItem(i).mPtr;
5375 }
5376
5377 if (crement!=coNone)
5378 {
5379 Dynamic val0 = obj->__GetItem(i);
5380 Dynamic val1 = val0 + (crement<=coPostInc ? 1 : -1);
5381 obj->__SetItem(i, val1);
5382 return crement & coPostInc ? val0.mPtr : val1.mPtr;
5383 }
5384 if (assign == aoSet)
5385 {
5386 hx::Object *val = value->runObject(ctx);
5387 BCR_CHECK;
5388 return obj->__SetItem(i, val).mPtr;
5389 }
5390
5391 Dynamic val0 = obj->__GetItem(i);
5392 Dynamic val1;
5393
5394 switch(assign)
5395 {
5396 case aoAdd: val1 = val0 + Dynamic(value->runObject(ctx)); break;
5397 case aoMult: val1 = val0 * value->runFloat(ctx); break;
5398 case aoDiv: val1 = val0 / value->runFloat(ctx); break;
5399 case aoSub: val1 = val0 - value->runFloat(ctx); break;
5400 case aoAnd: val1 = (int)val0 & value->runInt(ctx); break;
5401 case aoOr: val1 = (int)val0 | value->runInt(ctx); break;
5402 case aoXOr: val1 = (int)val0 ^ value->runInt(ctx); break;
5403 case aoShl: val1 = (int)val0 << value->runInt(ctx); break;
5404 case aoShr: val1 = (int)val0 >> value->runInt(ctx); break;
5405 case aoUShr: val1 = hx::UShr((int)val0,value->runInt(ctx)); break;
5406 case aoMod: val1 = hx::Mod(val0 ,value->runFloat(ctx)); break;
5407 default: ;
5408 }
5409 BCR_CHECK;
5410 obj->__SetItem(i,val1);
5411 return val1.mPtr;
5412 }
5413 CppiaExpr *makeSetter(AssignOp op,CppiaExpr *inValue) HXCPP_OVERRIDE
5414 {
5415 assign = op;

Callers

nothing calls this directly

Calls 8

UShrFunction · 0.85
ModFunction · 0.85
DynamicClass · 0.50
runObjectMethod · 0.45
runIntMethod · 0.45
__GetItemMethod · 0.45
__SetItemMethod · 0.45
runFloatMethod · 0.45

Tested by

no test coverage detected