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: uip/lc-switch.h File Reference</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 id="current"><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<div class="tabs"> 17*10465441SEvalZero <ul> 18*10465441SEvalZero <li><a href="files.html"><span>File List</span></a></li> 19*10465441SEvalZero <li><a href="globals.html"><span>Globals</span></a></li> 20*10465441SEvalZero </ul></div> 21*10465441SEvalZero<h1>uip/lc-switch.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2> 22*10465441SEvalZeroImplementation of local continuations based on switch() statment. 23*10465441SEvalZero<p> 24*10465441SEvalZero<dl compact><dt><b>Author:</b></dt><dd>Adam Dunkels <<a href="mailto:[email protected]">[email protected]</a>></dd></dl> 25*10465441SEvalZeroThis implementation of local continuations uses the C switch() statement to resume execution of a function somewhere inside the function's body. The implementation is based on the fact that switch() statements are able to jump directly into the bodies of control structures such as if() or while() statmenets.<p> 26*10465441SEvalZeroThis implementation borrows heavily from Simon Tatham's coroutines implementation in C: <a href="http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html">http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html</a> 27*10465441SEvalZero<p> 28*10465441SEvalZeroDefinition in file <a class="el" href="a00190.html">lc-switch.h</a>. 29*10465441SEvalZero<p> 30*10465441SEvalZero 31*10465441SEvalZero<p> 32*10465441SEvalZero<a href="a00190.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0"> 33*10465441SEvalZero<tr><td></td></tr> 34*10465441SEvalZero<tr><td colspan="2"><br><h2>Defines</h2></td></tr> 35*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g44311ecc30759ca38b4069182247bdae"></a><!-- doxytag: member="lc-switch.h::__LC_SWTICH_H__" ref="g44311ecc30759ca38b4069182247bdae" args="" --> 36*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g44311ecc30759ca38b4069182247bdae">__LC_SWTICH_H__</a></td></tr> 37*10465441SEvalZero 38*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2c1bb4fa6d7a6ff951a41c73fc721109"></a><!-- doxytag: member="lc-switch.h::LC_INIT" ref="g2c1bb4fa6d7a6ff951a41c73fc721109" args="(s)" --> 39*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g2c1bb4fa6d7a6ff951a41c73fc721109">LC_INIT</a>(s) s = 0;</td></tr> 40*10465441SEvalZero 41*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1ec8b8f4710dce1fa7fb87d3a31541ae"></a><!-- doxytag: member="lc-switch.h::LC_RESUME" ref="g1ec8b8f4710dce1fa7fb87d3a31541ae" args="(s)" --> 42*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> 43*10465441SEvalZero 44*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd8eec328a4868d767f0c00c8d1c6cfc1"></a><!-- doxytag: member="lc-switch.h::LC_SET" ref="gd8eec328a4868d767f0c00c8d1c6cfc1" args="(s)" --> 45*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> 46*10465441SEvalZero 47*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gca51ceb2f5d855dfde55bcedf8d3b92d"></a><!-- doxytag: member="lc-switch.h::LC_END" ref="gca51ceb2f5d855dfde55bcedf8d3b92d" args="(s)" --> 48*10465441SEvalZero#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#gca51ceb2f5d855dfde55bcedf8d3b92d">LC_END</a>(s) }</td></tr> 49*10465441SEvalZero 50*10465441SEvalZero<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr> 51*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3983e0c026396d5c4506779d770007ba"></a><!-- doxytag: member="lc-switch.h::lc_t" ref="g3983e0c026396d5c4506779d770007ba" args="" --> 52*10465441SEvalZerotypedef unsigned short </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g3983e0c026396d5c4506779d770007ba">lc_t</a></td></tr> 53*10465441SEvalZero 54*10465441SEvalZero</table> 55*10465441SEvalZero<hr size="1"><address style="align: right;"><small>Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by 56*10465441SEvalZero<a href="http://www.doxygen.org/index.html"> 57*10465441SEvalZero<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address> 58*10465441SEvalZero</body> 59*10465441SEvalZero</html> 60