On Tuesday 23 October 2007 12:32:21 Allison Randal wrote:
> You will need to bundle up the 'sub' argument in a hash (the low-level
> equivalent of named arguments like 'initial_sub'). So, using your
> existing init_pmc, it'll be something like:
>
> void init_pmc(PMC* sub) {
> PMC *classobj = Parrot_oo_get_class_str(INTERP,
> CONST_STRING(INTERP, "Parrot::Coroutine"));
>
> if (!PMC_IS_NULL(classobj)) {
> PMC *init_args = pmc_new(INTERP, enum_class_Hash);
> VTABLE_set_pmc_keyed_str(INTERP, init_args,
> CONST_STRING(INTERP, "initial_sub"), sub);
> PMC_pmc_val(SELF) = VTABLE_instantiate(INTERP,
> classobj, init_args);
> }
> else
> real_exception(INTERP, NULL, E_Exception,
> "Parrot::Coroutine not found");
>
> }
... except don't break CONST_STRING across lines, because apparently icc can't
count and won't compile.
One might assume that being able to count is less of a burden than handling
pointer math correctly, but I never took a compilers course so I could be
misisng something.
-- c