RainbowBS Manual: Local continuations

RainbowBS

RainbowBS Manual  v0.1.0
Written by QWQ([email protected])
Local continuations
Collaboration diagram for Local continuations:

Files

file  lc-addrlabels.h
 
file  lc-switch.h
 
file  lc.h
 

Macros

#define LC_INIT(s)   s = NULL
 
#define LC_RESUME(s)
 
#define LC_CONCAT2(s1, s2)   s1##s2
 
#define LC_CONCAT(s1, s2)   LC_CONCAT2(s1, s2)
 
#define LC_SET(s)
 
#define LC_END(s)
 
#define LC_INIT(s)   s = 0;
 
#define LC_RESUME(s)   switch(s) { case 0:
 
#define LC_SET(s)   s = __LINE__; case __LINE__:
 
#define LC_END(s)   }
 
#define __LC_H__
 

Typedefs

typedef void * lc_t
 
typedef unsigned short lc_t
 

Detailed Description

Local continuations form the basis for implementing protothreads. A local continuation can be set in a specific function to capture the state of the function. After a local continuation has been set can be resumed in order to restore the state of the function at the point where the local continuation was set.

Macro Definition Documentation

#define LC_RESUME (   s)
Value:
do { \
if(s != NULL) { \
goto *s; \
} \
} while(0)
#define LC_SET (   s)
Value:
do { \
LC_CONCAT(LC_LABEL, __LINE__): \
(s) = &&LC_CONCAT(LC_LABEL, __LINE__); \
} while(0)
Generated by   doxygen 1.8.9.1