From ec4a9e4bd6a2943b6ab1a6f46155a55c0131fac7 Mon Sep 17 00:00:00 2001 From: Avril Date: Fri, 19 Mar 2021 12:52:35 +0000 Subject: [PATCH] added SM_RETURN --- include/state.h | 3 +++ src/main.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/state.h b/include/state.h index 235249d..752db0c 100644 --- a/include/state.h +++ b/include/state.h @@ -101,6 +101,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_YIELD_VALUE(v) do { _sm_replace_ip(&state->current->rval, (v)); SM_YIELD(sm_continue()); } while(0) +#define SM_RETURN() SM_YIELD(sm_end()) +#define SM_RETURN_VALUE(v) do { _sm_replace_ip(&state->current->rval, (v)); SM_YIELD(sm_end()); } while(0) + #define SM_GENERATOR(name) sm_yield name(sm_state* state) // --- diff --git a/src/main.cpp b/src/main.cpp index 1c24472..2c8ab7b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -53,7 +53,7 @@ int main() sm_state_setopt(state, INTERMEDIATE_RETURNS, false); sm_output output; - int out_int; + int out_int=0; while(sm_next(&gen, state, &output)) { if(!sm_output_value(output, &out_int)) continue;