1*10465441SEvalZero<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2*10465441SEvalZero<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> 3*10465441SEvalZero<title>uIP 1.0: Local continuations</title> 4*10465441SEvalZero<link href="doxygen.css" rel="stylesheet" type="text/css"> 5*10465441SEvalZero<link href="tabs.css" rel="stylesheet" type="text/css"> 6*10465441SEvalZero</head><body> 7*10465441SEvalZero<!-- Generated by Doxygen 1.4.6 --> 8*10465441SEvalZero<div class="tabs"> 9*10465441SEvalZero <ul> 10*10465441SEvalZero <li><a href="main.html"><span>Main Page</span></a></li> 11*10465441SEvalZero <li><a href="modules.html"><span>Modules</span></a></li> 12*10465441SEvalZero <li><a href="classes.html"><span>Data Structures</span></a></li> 13*10465441SEvalZero <li><a href="files.html"><span>Files</span></a></li> 14*10465441SEvalZero <li><a href="examples.html"><span>Examples</span></a></li> 15*10465441SEvalZero </ul></div> 16*10465441SEvalZero<h1>Local continuations<br> 17*10465441SEvalZero<small> 18*10465441SEvalZero[<a class="el" href="a00142.html">Protothreads</a>]</small> 19*10465441SEvalZero</h1><hr><a name="_details"></a><h2>Detailed Description</h2> 20*10465441SEvalZeroLocal continuations form the basis for implementing protothreads. 21*10465441SEvalZero<p> 22*10465441SEvalZeroA local continuation can be <em>set</em> in a specific function to capture the state of the function. After a local continuation has been set can be <em>resumed</em> in order to restore the state of the function at the point where the local continuation was set. 23*10465441SEvalZero<p> 24*10465441SEvalZero<table border="0" cellpadding="0" cellspacing="0"> 25*10465441SEvalZero<tr><td></td></tr> 26*10465441SEvalZero<tr><td colspan="2"><br><h2>Files</h2></td></tr> 27*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html">lc.h</a></td></tr> 28*10465441SEvalZero 29*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Local continuations. <br></td></tr> 30*10465441SEvalZero 31*10465441SEvalZero<p> 32*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html">lc-switch.h</a></td></tr> 33*10465441SEvalZero 34*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of local continuations based on switch() statment. <br></td></tr> 35*10465441SEvalZero 36*10465441SEvalZero<p> 37*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html">lc-addrlabels.h</a></td></tr> 38*10465441SEvalZero 39*10465441SEvalZero<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of local continuations based on the "Labels as values" feature of gcc. <br></td></tr> 40*10465441SEvalZero 41*10465441SEvalZero<p> 42*10465441SEvalZero<tr><td colspan="2"><br><h2>Defines</h2></td></tr> 43*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g44311ecc30759ca38b4069182247bdae"></a><!-- doxytag: member="lc::__LC_SWTICH_H__" ref="g44311ecc30759ca38b4069182247bdae" args="" --> 44*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g44311ecc30759ca38b4069182247bdae">__LC_SWTICH_H__</a></td></tr> 45*10465441SEvalZero 46*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2c1bb4fa6d7a6ff951a41c73fc721109"></a><!-- doxytag: member="lc::LC_INIT" ref="g2c1bb4fa6d7a6ff951a41c73fc721109" args="(s)" --> 47*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g2c1bb4fa6d7a6ff951a41c73fc721109">LC_INIT</a>(s) s = 0;</td></tr> 48*10465441SEvalZero 49*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1ec8b8f4710dce1fa7fb87d3a31541ae"></a><!-- doxytag: member="lc::LC_RESUME" ref="g1ec8b8f4710dce1fa7fb87d3a31541ae" args="(s)" --> 50*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g1ec8b8f4710dce1fa7fb87d3a31541ae">LC_RESUME</a>(s) switch(s) { case 0:</td></tr> 51*10465441SEvalZero 52*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd8eec328a4868d767f0c00c8d1c6cfc1"></a><!-- doxytag: member="lc::LC_SET" ref="gd8eec328a4868d767f0c00c8d1c6cfc1" args="(s)" --> 53*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#gd8eec328a4868d767f0c00c8d1c6cfc1">LC_SET</a>(s) s = __LINE__; case __LINE__:</td></tr> 54*10465441SEvalZero 55*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gca51ceb2f5d855dfde55bcedf8d3b92d"></a><!-- doxytag: member="lc::LC_END" ref="gca51ceb2f5d855dfde55bcedf8d3b92d" args="(s)" --> 56*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#gca51ceb2f5d855dfde55bcedf8d3b92d">LC_END</a>(s) }</td></tr> 57*10465441SEvalZero 58*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2c1bb4fa6d7a6ff951a41c73fc721109"></a><!-- doxytag: member="lc::LC_INIT" ref="g2c1bb4fa6d7a6ff951a41c73fc721109" args="(s)" --> 59*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g2c1bb4fa6d7a6ff951a41c73fc721109">LC_INIT</a>(s) s = NULL</td></tr> 60*10465441SEvalZero 61*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1ec8b8f4710dce1fa7fb87d3a31541ae"></a><!-- doxytag: member="lc::LC_RESUME" ref="g1ec8b8f4710dce1fa7fb87d3a31541ae" args="(s)" --> 62*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g1ec8b8f4710dce1fa7fb87d3a31541ae">LC_RESUME</a>(s)</td></tr> 63*10465441SEvalZero 64*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd8eec328a4868d767f0c00c8d1c6cfc1"></a><!-- doxytag: member="lc::LC_SET" ref="gd8eec328a4868d767f0c00c8d1c6cfc1" args="(s)" --> 65*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#gd8eec328a4868d767f0c00c8d1c6cfc1">LC_SET</a>(s) do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0)</td></tr> 66*10465441SEvalZero 67*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gca51ceb2f5d855dfde55bcedf8d3b92d"></a><!-- doxytag: member="lc::LC_END" ref="gca51ceb2f5d855dfde55bcedf8d3b92d" args="(s)" --> 68*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#gca51ceb2f5d855dfde55bcedf8d3b92d">LC_END</a>(s)</td></tr> 69*10465441SEvalZero 70*10465441SEvalZero<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr> 71*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3983e0c026396d5c4506779d770007ba"></a><!-- doxytag: member="lc::lc_t" ref="g3983e0c026396d5c4506779d770007ba" args="" --> 72*10465441SEvalZerotypedef unsigned short </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g3983e0c026396d5c4506779d770007ba">lc_t</a></td></tr> 73*10465441SEvalZero 74*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2bdc4b7b4038454a79f1b2a94a6d2a98"></a><!-- doxytag: member="lc::lc_t" ref="g2bdc4b7b4038454a79f1b2a94a6d2a98" args="" --> 75*10465441SEvalZerotypedef void * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g2bdc4b7b4038454a79f1b2a94a6d2a98">lc_t</a></td></tr> 76*10465441SEvalZero 77*10465441SEvalZero</table> 78*10465441SEvalZero<hr size="1"><address style="align: right;"><small>Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by 79*10465441SEvalZero<a href="http://www.doxygen.org/index.html"> 80*10465441SEvalZero<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address> 81*10465441SEvalZero</body> 82*10465441SEvalZero</html> 83