lib
Avril 3 years ago
parent 7e9f2083be
commit 901bbaac8a
Signed by: flanchan
GPG Key ID: 284488987C31F630

@ -77,5 +77,9 @@ inline sm_yield sm_continue() { return (sm_yield)_sm_noop; }
#define SM_YIELD(v) do { state->current->pc = __LINE__; return (sm_yield)(v); case __LINE__:; } while(0)
#define SM_GENERATOR(name) sm_yield name(sm_state* state)
// ---
sm_state* sm_new_state();
void sm_free_state(sm_state* state);

@ -1,66 +0,0 @@
#include <state.h>
#include <gen.h>
#include <cstdio>
struct _test {
int a, b;
};
sm_yield sm_test_2(sm_state* state)
{
int* a = SM_VAR(-10);
SM_BEGIN;
while( (*a) < 0 ) {
printf("(2) a = %d\n", *a);
SM_YIELD(sm_continue());
(*a)+=1;
}
printf("Done!\n");
SM_END;
}
sm_yield sm_test(sm_state* state)
{
int* a = SM_VAR(10);
auto c = SM_SLOT(_test);
float* d = SM_SLOT(float);
*c = { 200, 300 };
*d = 10.f;
SM_BEGIN;
*a = 5;
SM_YIELD(sm_continue());
printf("a = %d\n", *a);
*a = 0;
SM_YIELD(sm_continue());
printf("a = %d\n", *a);
printf("Starting function 2\n");
SM_YIELD(sm_test_2);
printf("2 done\n");
SM_END;
}
int main()
{
auto state = sm_new_state();
auto gen = sm_generate(&sm_test);
while(sm_next(&gen, state)) (void)0;
sm_free_generator(gen);
sm_free_state(state);
/*
//TODO: `sm_state` creation/initialisation & freeing functions
//TODO: Test `sm_test`
_test hi = { 0, 0 };
auto _a = _sm_init(nullptr, hi);
*/
return 0;
}

@ -0,0 +1,11 @@
#include <gen.h>
SM_GENERATOR(read_number)
{
}
int main()
{
return 0;
}
Loading…
Cancel
Save