François Perrad wrote: > the PMC equivalent of the following PIR : > $P0 = new 'Foo::Bar' > is like : > INTVAL type = pmc_type(INTERP, const_string(INTERP, "Foo::Bar")); > PMC *pmc = pmc_new(INTERP, type); > > Now, how rewrite > $P0 = new ['Foo'; 'Bar'] > > INTVAL type = pmc_type_p(INTERP, ??? any idea ???); > PMC *pmc = pmc_new(INTERP, type);
PMC *foo_part = key_new_cstring(INTERP, "Foo"); PMC *bar_part = key_new_cstring(INTERP, "Bar"); PMC *key = key_append(INTERP, foo_part, bar_part); PMC *class_object = Parrot_oo_get_class(INTERP, key); PMC *object = VTABLE_instantiate(INTERP, class_object, PMCNULL); 'Parrot_oo_get_class' will also take an array, so you can do that instead of a key, but this is the most direct translation of the PIR code. We should probably add a function that takes a C varargs list and does all this for you. Allison _______________________________________________ http://lists.parrot.org/mailman/listinfo/parrot-dev
