Skip to content

Commit 10abc40

Browse files
committed
Add missing 6model v-table forwarders.
With this we can use the normal nqp::atpos_* with CArray. This means NativeCall can be tweaked to build on JVM also without breaking it on Parrot.
1 parent 764b127 commit 10abc40

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

src/vm/parrot/pmc/sixmodelobject.pmc

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,62 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
773773
}
774774
}
775775

776+
VTABLE FLOATVAL get_number_keyed_int(INTVAL i) {
777+
PMC *decont = DECONT(interp, SELF);
778+
if (REPR(decont)->pos_funcs) {
779+
NativeValue nv;
780+
nv.type = NATIVE_VALUE_FLOAT;
781+
REPR(decont)->pos_funcs->at_pos_native(interp, STABLE(decont),
782+
OBJECT_BODY(decont), i, &nv);
783+
return nv.value.floatval;
784+
}
785+
else {
786+
return SUPER(i);
787+
}
788+
}
789+
790+
VTABLE void set_number_keyed_int(INTVAL i, FLOATVAL value) {
791+
PMC *decont = DECONT(interp, SELF);
792+
if (REPR(decont)->pos_funcs) {
793+
NativeValue nv;
794+
nv.type = NATIVE_VALUE_FLOAT;
795+
nv.value.floatval = value;
796+
REPR(decont)->pos_funcs->bind_pos_native(interp, STABLE(decont),
797+
OBJECT_BODY(decont), i, &nv);
798+
}
799+
else {
800+
SUPER(i, value);
801+
}
802+
}
803+
804+
VTABLE STRING * get_string_keyed_int(INTVAL i) {
805+
PMC *decont = DECONT(interp, SELF);
806+
if (REPR(decont)->pos_funcs) {
807+
NativeValue nv;
808+
nv.type = NATIVE_VALUE_STRING;
809+
REPR(decont)->pos_funcs->at_pos_native(interp, STABLE(decont),
810+
OBJECT_BODY(decont), i, &nv);
811+
return nv.value.stringval;
812+
}
813+
else {
814+
return SUPER(i);
815+
}
816+
}
817+
818+
VTABLE void set_string_keyed_int(INTVAL i, STRING *value) {
819+
PMC *decont = DECONT(interp, SELF);
820+
if (REPR(decont)->pos_funcs) {
821+
NativeValue nv;
822+
nv.type = NATIVE_VALUE_STRING;
823+
nv.value.stringval = value;
824+
REPR(decont)->pos_funcs->bind_pos_native(interp, STABLE(decont),
825+
OBJECT_BODY(decont), i, &nv);
826+
}
827+
else {
828+
SUPER(i, value);
829+
}
830+
}
831+
776832
VTABLE INTVAL elements() {
777833
PMC *decont = DECONT(interp, SELF);
778834
if (REPR(decont)->elems)

0 commit comments

Comments
 (0)