本文整理汇总了C++中VMArray::GetIndexableField方法的典型用法代码示例。如果您正苦于以下问题:C++ VMArray::GetIndexableField方法的具体用法?C++ VMArray::GetIndexableField怎么用?C++ VMArray::GetIndexableField使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VMArray
的用法示例。
在下文中一共展示了VMArray::GetIndexableField方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InvokeOn_With_
void _Method::InvokeOn_With_(Interpreter* interp, VMFrame* frame) {
// REM: this is a clone with _Primitive::InvokeOn_With_
VMArray* args = static_cast<VMArray*>(frame->Pop());
vm_oop_t rcvr = static_cast<vm_oop_t>(frame->Pop());
VMMethod* mthd = static_cast<VMMethod*>(frame->Pop());
frame->Push(rcvr);
size_t num_args = args->GetNumberOfIndexableFields();
for (size_t i = 0; i < num_args; i++) {
vm_oop_t arg = args->GetIndexableField(i);
frame->Push(arg);
}
mthd->Invoke(interp, frame);
}
示例2: testCloneArray
void CloneObjectsTest::testCloneArray() {
VMArray* orig = GetUniverse()->NewArray(3);
orig->SetIndexableField(0, GetUniverse()->NewString("foobar42"));
orig->SetIndexableField(1, GetUniverse()->NewString("foobar43"));
orig->SetIndexableField(2, GetUniverse()->NewString("foobar44"));
VMArray* clone = orig->Clone();
CPPUNIT_ASSERT((intptr_t)orig != (intptr_t)clone);
CPPUNIT_ASSERT_EQUAL_MESSAGE("class differs!!", orig->clazz, clone->clazz);
CPPUNIT_ASSERT_EQUAL_MESSAGE("objectSize differs!!", orig->objectSize, clone->objectSize);
CPPUNIT_ASSERT_EQUAL_MESSAGE("numberOfFields differs!!", orig->numberOfFields, clone->numberOfFields);
CPPUNIT_ASSERT_EQUAL_MESSAGE("numberOfFields differs!!", orig->GetNumberOfIndexableFields(), clone->GetNumberOfIndexableFields());
CPPUNIT_ASSERT_EQUAL_MESSAGE("field 0 differs", orig->GetIndexableField(0),
clone->GetIndexableField(0));
CPPUNIT_ASSERT_EQUAL_MESSAGE("field 1 differs", orig->GetIndexableField(1),
clone->GetIndexableField(1));
CPPUNIT_ASSERT_EQUAL_MESSAGE("field 2 differs", orig->GetIndexableField(2),
clone->GetIndexableField(2));
}