You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Avril
eaf20457ea
|
4 years ago | |
---|---|---|
include | 4 years ago | |
src | 4 years ago | |
.gitignore | 4 years ago | |
Makefile | 4 years ago | |
README.md | 4 years ago | |
TODO | 4 years ago |
README.md
libsm
Contextual state machine (generator methods) implementation in basic C++, using mostly C constructs.
(TODO: Explain what is and isn't supported)
Example
Output values of any type
#include <sm/state.h>
#include <sm/gen.h>
#include <cstdio>
SM_GENERATOR(powers_of_two)
{
int* a = SM_VAR(1);
SM_BEGIN;
{
while( (*a) > 0 ) {
SM_YIELD_VALUE(*a);
(*a) <<= 1;
}
}
SM_END;
}
int main()
{
auto state = sm_new_state();
auto gen = sm_generate(&powers_of_two);
sm_output output;
int out_int;
while(sm_next(&gen, state, &output)) {
if(!sm_output_value(output, &out_int))
continue;
printf("Power of two: %d\n", out_int);
}
sm_free_output(&output);
sm_free_generator(gen);
sm_free_state(state);
return 0;
}