# Local continuations
[Protothreads]

## 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.

## Files

file | lc.h
| Local continuations.

file | lc-switch.h
| Implementation of local continuations based on switch() statment.

file | lc-addrlabels.h
| Implementation of local continuations based on the "Labels as values" feature of gcc.

## Defines

#define | __LC_SWTICH_H__
#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_INIT(s) s = NULL
#define | LC_RESUME(s)
#define | LC_SET(s) do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0)
#define | LC_END(s)

## Typedefs

typedef unsigned short | lc_t
typedef void * | lc_t