ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Coro/State.xs
(Generate patch)

Comparing Coro/Coro/State.xs (file contents):
Revision 1.242 by root, Thu Aug 14 12:48:20 2008 UTC vs.
Revision 1.243 by root, Sat Aug 30 03:07:46 2008 UTC

1623 else 1623 else
1624 coro->slot->runops = RUNOPS_DEFAULT; 1624 coro->slot->runops = RUNOPS_DEFAULT;
1625 } 1625 }
1626} 1626}
1627 1627
1628static int
1629coro_gensub_free (pTHX_ SV *sv, MAGIC *mg)
1630{
1631 AV *padlist;
1632 AV *av = (AV *)mg->mg_obj;
1633
1634 abort ();
1635
1636 return 0;
1637}
1638
1639static MGVTBL coro_gensub_vtbl = {
1640 0, 0, 0, 0,
1641 coro_gensub_free
1642};
1643
1628MODULE = Coro::State PACKAGE = Coro::State PREFIX = api_ 1644MODULE = Coro::State PACKAGE = Coro::State PREFIX = api_
1629 1645
1630PROTOTYPES: DISABLE 1646PROTOTYPES: DISABLE
1631 1647
1632BOOT: 1648BOOT:
2083 api_trace (coro_current, 0); 2099 api_trace (coro_current, 0);
2084 2100
2085 av_push (av_async_pool, newSVsv (coro_current)); 2101 av_push (av_async_pool, newSVsv (coro_current));
2086} 2102}
2087 2103
2104#if 0
2105
2106void
2107_generator_call (...)
2108 PROTOTYPE: @
2109 PPCODE:
2110 fprintf (stderr, "call %p\n", CvXSUBANY(cv).any_ptr);
2111 xxxx
2112 abort ();
2113
2114SV *
2115gensub (SV *sub, ...)
2116 PROTOTYPE: &;@
2117 CODE:
2118{
2119 struct coro *coro;
2120 MAGIC *mg;
2121 CV *xcv;
2122 CV *ncv = (CV *)newSV_type (SVt_PVCV);
2123 int i;
2124
2125 CvGV (ncv) = CvGV (cv);
2126 CvFILE (ncv) = CvFILE (cv);
2127
2128 Newz (0, coro, 1, struct coro);
2129 coro->args = newAV ();
2130 coro->flags = CF_NEW;
2131
2132 av_extend (coro->args, items - 1);
2133 for (i = 1; i < items; i++)
2134 av_push (coro->args, newSVsv (ST (i)));
2135
2136 CvISXSUB_on (ncv);
2137 CvXSUBANY (ncv).any_ptr = (void *)coro;
2138
2139 xcv = GvCV (gv_fetchpv ("Coro::_generator_call", 0, SVt_PVCV));
2140
2141 CvXSUB (ncv) = CvXSUB (xcv);
2142 CvANON_on (ncv);
2143
2144 mg = sv_magicext ((SV *)ncv, 0, CORO_MAGIC_type_state, &coro_gensub_vtbl, (char *)coro, 0);
2145 RETVAL = newRV_noinc ((SV *)ncv);
2146}
2147 OUTPUT:
2148 RETVAL
2149
2150#endif
2151
2088 2152
2089MODULE = Coro::State PACKAGE = Coro::AIO 2153MODULE = Coro::State PACKAGE = Coro::AIO
2090 2154
2091SV * 2155SV *
2092_get_state () 2156_get_state ()

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines