From 818293d4f146446ec89c8e29e9aee86189296c83 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Tue, 5 May 2026 19:16:44 +0100 Subject: [PATCH] Moved everything from ops/stack_ops (which were not ops) to payloads/stack. Added io functions to function_bindings. --- Makefile | 4 +- src/c/environment/environment.c | 2 +- src/c/environment/function_bindings.c | 56 ++++++++++++++++++++++++++- src/c/io/io.c | 24 ++++-------- src/c/io/io.h | 37 +++++++----------- src/c/io/peek.c | 42 ++++++++++++++++++++ src/c/io/peek.h | 20 ++++++++++ src/c/io/print.c | 4 +- src/c/io/read.c | 2 +- src/c/memory/memory.c | 3 +- src/c/memory/node.c | 2 +- src/c/memory/pso4.h | 2 +- src/c/ops/assoc.c | 2 +- src/c/ops/bind.c | 2 +- src/c/ops/cond.c | 2 +- src/c/ops/dump.c | 2 +- src/c/ops/eq.c | 2 +- src/c/ops/eval_apply.c | 2 +- src/c/ops/inspect.c | 2 +- src/c/ops/list_ops.c | 2 +- src/c/ops/mapcar.c | 2 +- src/c/ops/progn.c | 2 +- src/c/ops/quote.c | 2 +- src/c/ops/repl.c | 2 +- src/c/ops/reverse.c | 2 +- src/c/ops/truth.c | 2 +- src/c/payloads/cons.c | 2 +- src/c/payloads/exception.c | 2 +- src/c/payloads/psse_string.c | 2 +- src/c/payloads/read_stream.c | 3 ++ src/c/payloads/stack.c | 2 +- src/c/payloads/stack.h | 28 +------------- src/c/payloads/stack_payload.h | 45 +++++++++++++++++++++ src/c/psse.c | 1 - 34 files changed, 217 insertions(+), 94 deletions(-) create mode 100644 src/c/io/peek.c create mode 100644 src/c/io/peek.h create mode 100644 src/c/payloads/stack_payload.h diff --git a/Makefile b/Makefile index 8609dfc..97bbf76 100644 --- a/Makefile +++ b/Makefile @@ -52,10 +52,10 @@ coredumps: ulimit -c unlimited repl: Makefile $(TARGET) - $(TARGET) -ps1000 2> tmp/psse.log + $(TARGET) -p -s1000 -v1023 2> tmp/psse.log run: Makefile $(TARGET) - $(TARGET) -ps1000v1023 2> tmp/psse.log + $(TARGET) -p -s1000 -v1023 2> tmp/psse.log install: Makefile $(TARGET) cp $(TARGET) ~/bin diff --git a/src/c/environment/environment.c b/src/c/environment/environment.c index 69a88d6..27c9fa5 100644 --- a/src/c/environment/environment.c +++ b/src/c/environment/environment.c @@ -25,7 +25,7 @@ #include "payloads/psse_string.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/truth.h" #include "payloads/stack.h" diff --git a/src/c/environment/function_bindings.c b/src/c/environment/function_bindings.c index 8b039d1..50225a9 100644 --- a/src/c/environment/function_bindings.c +++ b/src/c/environment/function_bindings.c @@ -18,6 +18,12 @@ #include "debug.h" #include "environment/privileged_keywords.h" + +#include "io/io.h" +#include "io/peek.h" +#include "io/print.h" +#include "io/read.h" + #include "memory/node.h" #include "memory/pointer.h" #include "memory/tags.h" @@ -35,7 +41,7 @@ #include "ops/quote.h" #include "ops/repl.h" #include "ops/reverse.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/string_ops.h" #include "ops/truth.h" @@ -133,6 +139,54 @@ struct function_data { /** initialisers for functions */ struct function_data function_initialisers[] = { +#ifdef _psse_io_io_h + {U"close", U"(close stream): close `stream`.", &lisp_close}, + {U"open", + U"(open stream), (open stream write?): open `stream`; if `write?` is " + U"present and is non-nil, open for writing, else for reading.", + &lisp_open}, + {U"slurp", + U"(slurp stream): read the whole contents of this `stream`, " + U"which may " + U"be an open stream open for reading or a URL, into a string, and return " + U"the " + U"string.", + &lisp_slurp}, +#endif +#ifdef __psse_io_peek_h + {U"peek", + U"(peek stream): return the next character which may be read from " + U"`stream`, without removing it.", + &peek}, +#endif +#ifdef __psse_io_print_h + {U"print", + U"(print object), (print object stream) print this `object` in a format " + U"suitable to be read by `read`, q.v.; if `stream` is specified and is a " + U"stream open for writing, to that stream.", + &print}, + {U"princ", + U"(princ object), (princ object stream) print this `object` in a format " + U"more suited to human readers; if `stream` is specified and is a stream " + U"open for writing, to that stream.", + &print}, +#endif +#ifdef __psse_io_read_h + {U"read", + U"(read stream) read one complete Lisp expression from `stream`, and " + U"return that expression unevaluated.", + &read}, + {U"read-character", + U"(read_character stream): read a single character from `stream` and " + U"return it.", + &read_character}, + {U"read_number", + U"(read-number stream): read a number from `stream` and return it.", + &read_number}, + {U"read_symbol", + U"(read-symbol stream): read a symbol from `stream` and return it.", + &read_symbol}, +#endif #ifdef __psse_ops_assoc_h {U"assoc", U"(assoc key store): search `store` for the value associated with " diff --git a/src/c/io/io.c b/src/c/io/io.c index 9a95c2f..4636bc3 100644 --- a/src/c/io/io.c +++ b/src/c/io/io.c @@ -47,7 +47,7 @@ #include "ops/assoc.h" #include "ops/bind.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/string_ops.h" #include "ops/truth.h" @@ -393,8 +393,7 @@ struct pso_pointer push_back_character( struct pso_pointer c, * @param env my environment. * @return T if the stream was successfully closed, else nil. */ -struct pso_pointer lisp_close( struct pso_pointer frame_pointer, - struct pso_pointer env ) { +struct pso_pointer lisp_close( struct pso_pointer frame_pointer) { struct pso4 *frame = pointer_to_pso4( frame_pointer ); struct pso_pointer result = nil; if ( readp( fetch_arg( frame, 0 ) ) || writep( fetch_arg( frame, 0 ) ) ) { @@ -591,14 +590,10 @@ URL_FILE *stream_get_url_file( struct pso_pointer s ) { * * * (open url) * - * @param frame my stack frame. * @param frame_pointer a pointer to my stack frame. - * @param env my environment. - * @return a string of one character, namely the next available character - * on my stream, if any, else nil. + * @return a stream open on the URL indicated by the first argument. */ -struct pso_pointer lisp_open( struct pso_pointer frame_pointer, - struct pso_pointer env ) { +struct pso_pointer lisp_open( struct pso_pointer frame_pointer) { struct pso4 *frame = pointer_to_pso4( frame_pointer ); struct pso_pointer result = nil; if ( stringp( fetch_arg( frame, 0 ) ) ) { @@ -650,18 +645,13 @@ struct pso_pointer lisp_open( struct pso_pointer frame_pointer, * Function: return a string representing all characters from the stream * indicated by arg 0; further arguments are ignored. * - * TODO: it should be possible to optionally pass a string URL to this function, - * * * (slurp stream) * - * @param frame my stack frame. * @param frame_pointer a pointer to my stack frame. - * @param env my environment. - * @return a string of one character, namely the next available character - * on my stream, if any, else nil. + * @return return a string representing all characters from the stream + * indicated by arg 0 */ -struct pso_pointer lisp_slurp( struct pso_pointer frame_pointer, - struct pso_pointer env ) { +struct pso_pointer lisp_slurp( struct pso_pointer frame_pointer) { struct pso4 *frame = pointer_to_pso4( frame_pointer ); struct pso_pointer result = nil; if ( readp( fetch_arg( frame, 0 ) ) ) { diff --git a/src/c/io/io.h b/src/c/io/io.h index baf9e52..cd37d5d 100644 --- a/src/c/io/io.h +++ b/src/c/io/io.h @@ -11,8 +11,8 @@ #ifndef __psse_io_io_h #define __psse_io_io_h -#include #include +#include /* * wide characters @@ -24,12 +24,11 @@ extern CURLSH *io_share; -int initialise_io( ); -struct pso_pointer initialise_default_streams( struct pso_pointer - frame_pointer, - struct pso_pointer env ); +int initialise_io(); +struct pso_pointer initialise_default_streams(struct pso_pointer frame_pointer, + struct pso_pointer env); -#define C_IO_IN L"*in*" +#define C_IO_IN L"*in*" #define C_IO_OUT L"*out*" #define C_IO_LOG L"*log*" #define C_IO_READBASE L"*read_base*" @@ -50,25 +49,19 @@ extern struct pso_pointer lisp_stderr; extern struct pso_pointer lisp_io_prompt; +URL_FILE *file_to_url_file(FILE *f); +wint_t url_fgetwc(URL_FILE *input); +wint_t url_ungetwc(wint_t wc, URL_FILE *input); +struct pso_pointer push_back_character(struct pso_pointer c, + struct pso_pointer r); -URL_FILE *file_to_url_file( FILE * f ); -wint_t url_fgetwc( URL_FILE * input ); -wint_t url_ungetwc( wint_t wc, URL_FILE * input ); +struct pso_pointer get_default_stream(bool inputp, struct pso_pointer env); +URL_FILE *stream_get_url_file(struct pso_pointer s); -struct pso_pointer push_back_character( struct pso_pointer c, - struct pso_pointer r ); - -struct pso_pointer get_default_stream( bool inputp, struct pso_pointer env ); - -URL_FILE *stream_get_url_file( struct pso_pointer s ); - -struct pso_pointer -lisp_close( struct pso_pointer frame_pointer, struct pso_pointer env ); -struct pso_pointer -lisp_open( struct pso_pointer frame_pointer, struct pso_pointer env ); -struct pso_pointer -lisp_slurp( struct pso_pointer frame_pointer, struct pso_pointer env ); +struct pso_pointer lisp_close(struct pso_pointer frame_pointer); +struct pso_pointer lisp_open(struct pso_pointer frame_pointer); +struct pso_pointer lisp_slurp(struct pso_pointer frame_pointer); #endif diff --git a/src/c/io/peek.c b/src/c/io/peek.c new file mode 100644 index 0000000..b926456 --- /dev/null +++ b/src/c/io/peek.c @@ -0,0 +1,42 @@ +/** + * io/peek.c + * + * Post Scarcity Software Environment: peek. + * + * look at the next character on the input stream, without consuming it. + * + * (c) 2026 Simon Brooke + * Licensed under GPL version 2.0, or, at your option, any later version. + */ + +#include + +#include "io/fopen.h" +#include "io/io.h" + +#include "memory/node.h" +#include "memory/pointer.h" +#include "memory/pso2.h" + +#include "payloads/character.h" + +/** + * @brief look at the next character on the input stream, without consuming it. + * + * (peek stream) + */ +struct pso_pointer peek(struct pso_pointer frame_pointer) { + struct pso_pointer result = nil; + struct pso_pointer input = + pointer_to_pso4(frame_pointer)->payload.stack_frame.arg[0]; + + if (readp(input)) { + URL_FILE *stream = pointer_to_object(input)->payload.stream.stream; + wint_t c = url_fgetwc(stream); + url_ungetwc(c, stream); + + result = make_character(frame_pointer, c); + } + return result; +} + diff --git a/src/c/io/peek.h b/src/c/io/peek.h new file mode 100644 index 0000000..06b6b3f --- /dev/null +++ b/src/c/io/peek.h @@ -0,0 +1,20 @@ +/** + * io/peek.c + * + * Post Scarcity Software Environment: peek. + * + * peek basic Lisp objects..This is :bootstrap layer peek; it needs to be + * able to peek characters, symbols, integers, lists and dotted pairs. I + * don't think it needs to be able to peek anything else. + * + * (c) 2026 Simon Brooke + * Licensed under GPL version 2.0, or, at your option, any later version. + */ + +#ifndef __psse_io_peek_h +#define __psse_io_peek_h +#include + +struct pso_pointer peek( struct pso_pointer frame_pointer ); + +#endif diff --git a/src/c/io/print.c b/src/c/io/print.c index d1dfcb4..a850e72 100644 --- a/src/c/io/print.c +++ b/src/c/io/print.c @@ -44,7 +44,7 @@ #include "payloads/exception.h" #include "payloads/integer.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/truth.h" struct pso_pointer in_write( struct pso_pointer p, URL_FILE * output, @@ -295,6 +295,8 @@ struct pso_pointer c_write(struct pso_pointer frame_pointer, /** * @brief Simple print for bootstrap layer. * + * (print object stream) + * * @param p pointer to the object to print. * @param stream if a pointer to an open write stream, print to there. * @return struct pso_pointer `nil`, or an exception if some erroe occurred. diff --git a/src/c/io/read.c b/src/c/io/read.c index ff0f516..5c09457 100644 --- a/src/c/io/read.c +++ b/src/c/io/read.c @@ -40,7 +40,7 @@ #include "ops/assoc.h" #include "ops/reverse.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/string_ops.h" #include "ops/truth.h" diff --git a/src/c/memory/memory.c b/src/c/memory/memory.c index bc1e722..efb9f81 100644 --- a/src/c/memory/memory.c +++ b/src/c/memory/memory.c @@ -23,11 +23,12 @@ #include "memory/pso2.h" #include "memory/tags.h" -#include "ops/truth.h" #include "payloads/exception.h" +#include "payloads/stack.h" #include "ops/bind.h" #include "ops/string_ops.h" +#include "ops/truth.h" /** * @brief Freelists for each size class. diff --git a/src/c/memory/node.c b/src/c/memory/node.c index 42ff995..015164d 100644 --- a/src/c/memory/node.c +++ b/src/c/memory/node.c @@ -22,7 +22,7 @@ #include "payloads/exception.h" #include "ops/eq.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/string_ops.h" #include "ops/truth.h" diff --git a/src/c/memory/pso4.h b/src/c/memory/pso4.h index 59996f7..cae50b2 100644 --- a/src/c/memory/pso4.h +++ b/src/c/memory/pso4.h @@ -15,7 +15,7 @@ #include "memory/header.h" #include "payloads/free.h" -#include "payloads/stack.h" +#include "payloads/stack_payload.h" /** * @brief A paged space object of size class 4, 16 words total, 14 words diff --git a/src/c/ops/assoc.c b/src/c/ops/assoc.c index 647b7bf..401aeb1 100644 --- a/src/c/ops/assoc.c +++ b/src/c/ops/assoc.c @@ -21,7 +21,7 @@ #include "payloads/stack.h" #include "ops/eq.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/truth.h" /** diff --git a/src/c/ops/bind.c b/src/c/ops/bind.c index 743de6b..fbcbfe5 100644 --- a/src/c/ops/bind.c +++ b/src/c/ops/bind.c @@ -16,7 +16,7 @@ #include "memory/pso4.h" #include "memory/tags.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "payloads/cons.h" #include "payloads/function.h" diff --git a/src/c/ops/cond.c b/src/c/ops/cond.c index f2949d4..f22a20f 100644 --- a/src/c/ops/cond.c +++ b/src/c/ops/cond.c @@ -13,7 +13,7 @@ #include "ops/eval_apply.h" #include "ops/progn.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/string_ops.h" #include "ops/truth.h" diff --git a/src/c/ops/dump.c b/src/c/ops/dump.c index f50cc14..c39b871 100644 --- a/src/c/ops/dump.c +++ b/src/c/ops/dump.c @@ -23,7 +23,7 @@ #include "memory/tags.h" #include "io/print.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "payloads/lambda.h" diff --git a/src/c/ops/eq.c b/src/c/ops/eq.c index d7b4f38..17e0f11 100644 --- a/src/c/ops/eq.c +++ b/src/c/ops/eq.c @@ -19,7 +19,7 @@ #include "payloads/function.h" #include "payloads/integer.h" #include "payloads/stack.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/truth.h" /** diff --git a/src/c/ops/eval_apply.c b/src/c/ops/eval_apply.c index 361c911..03c1411 100644 --- a/src/c/ops/eval_apply.c +++ b/src/c/ops/eval_apply.c @@ -33,7 +33,7 @@ #include "ops/eval_apply.h" #include "ops/progn.h" #include "ops/reverse.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/string_ops.h" #include "ops/truth.h" diff --git a/src/c/ops/inspect.c b/src/c/ops/inspect.c index 9d3ce60..67c883d 100644 --- a/src/c/ops/inspect.c +++ b/src/c/ops/inspect.c @@ -18,7 +18,7 @@ #include "memory/pso4.h" #include "memory/tags.h" #include "ops/inspect.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" /** * Function: dump/ diff --git a/src/c/ops/list_ops.c b/src/c/ops/list_ops.c index 6ef05b9..5cb3151 100644 --- a/src/c/ops/list_ops.c +++ b/src/c/ops/list_ops.c @@ -12,7 +12,7 @@ #include "memory/pso2.h" #include "memory/pso4.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "payloads/cons.h" #include "payloads/integer.h" diff --git a/src/c/ops/mapcar.c b/src/c/ops/mapcar.c index 5f74aae..e09379d 100644 --- a/src/c/ops/mapcar.c +++ b/src/c/ops/mapcar.c @@ -19,7 +19,7 @@ #include "ops/eval_apply.h" #include "ops/reverse.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/truth.h" #include "payloads/cons.h" diff --git a/src/c/ops/progn.c b/src/c/ops/progn.c index ac3f722..3fdef99 100644 --- a/src/c/ops/progn.c +++ b/src/c/ops/progn.c @@ -17,7 +17,7 @@ #include "memory/tags.h" #include "ops/eval_apply.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "payloads/cons.h" #include "payloads/stack.h" diff --git a/src/c/ops/quote.c b/src/c/ops/quote.c index 88ec694..f1d3595 100644 --- a/src/c/ops/quote.c +++ b/src/c/ops/quote.c @@ -12,7 +12,7 @@ #include "memory/pointer.h" #include "memory/pso4.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" /** * @brief Special form: protect an expression from evaluation. diff --git a/src/c/ops/repl.c b/src/c/ops/repl.c index a949b25..8d04f09 100644 --- a/src/c/ops/repl.c +++ b/src/c/ops/repl.c @@ -33,7 +33,7 @@ #include "ops/assoc.h" #include "ops/eval_apply.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/truth.h" /** diff --git a/src/c/ops/reverse.c b/src/c/ops/reverse.c index c25a5b0..a9be24f 100644 --- a/src/c/ops/reverse.c +++ b/src/c/ops/reverse.c @@ -19,7 +19,7 @@ #include "memory/pso4.h" #include "memory/tags.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "payloads/cons.h" #include "payloads/exception.h" #include "payloads/psse_string.h" diff --git a/src/c/ops/truth.c b/src/c/ops/truth.c index 4b7b9d8..9ac4ef0 100644 --- a/src/c/ops/truth.c +++ b/src/c/ops/truth.c @@ -14,7 +14,7 @@ #include "memory/node.h" #include "memory/pointer.h" #include "memory/pso4.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" /** * @brief true if `p` points to `nil`, else false. diff --git a/src/c/payloads/cons.c b/src/c/payloads/cons.c index dccdf13..cfca981 100644 --- a/src/c/payloads/cons.c +++ b/src/c/payloads/cons.c @@ -19,7 +19,7 @@ #include "payloads/cons.h" #include "payloads/exception.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/string_ops.h" /** diff --git a/src/c/payloads/exception.c b/src/c/payloads/exception.c index 7f40fc5..08dbfef 100644 --- a/src/c/payloads/exception.c +++ b/src/c/payloads/exception.c @@ -26,7 +26,7 @@ #include "payloads/exception.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" #include "ops/truth.h" #include "payloads/cons.h" #include diff --git a/src/c/payloads/psse_string.c b/src/c/payloads/psse_string.c index cc5eaef..a7d8dbe 100644 --- a/src/c/payloads/psse_string.c +++ b/src/c/payloads/psse_string.c @@ -23,7 +23,7 @@ #include "ops/string_ops.h" #include "payloads/cons.h" -#include "ops/stack_ops.h" +#include "payloads/stack.h" /** diff --git a/src/c/payloads/read_stream.c b/src/c/payloads/read_stream.c index 9cdce09..2058473 100644 --- a/src/c/payloads/read_stream.c +++ b/src/c/payloads/read_stream.c @@ -12,6 +12,9 @@ #include #include "io/fopen.h" +#include "io/io.h" + +#include "memory/node.h" #include "memory/pointer.h" #include "memory/pso.h" #include "memory/pso2.h" diff --git a/src/c/payloads/stack.c b/src/c/payloads/stack.c index 978f356..2e299a4 100644 --- a/src/c/payloads/stack.c +++ b/src/c/payloads/stack.c @@ -21,10 +21,10 @@ #include "memory/tags.h" #include "payloads/cons.h" +#include "payloads/stack.h" #include "ops/reverse.h" #include "ops/list_ops.h" -#include "ops/stack_ops.h" /** * @brief The maximum depth of stack before we throw an exception. diff --git a/src/c/payloads/stack.h b/src/c/payloads/stack.h index 62f9a7b..7c20409 100644 --- a/src/c/payloads/stack.h +++ b/src/c/payloads/stack.h @@ -13,33 +13,7 @@ #define __psse_payloads_stack_h #include "memory/pointer.h" - -/* - * number of arguments stored in a stack frame - */ -#define args_in_frame 8 - -/** - * A stack frame. - */ -struct stack_frame_payload { - /** the previous frame. */ - struct pso_pointer previous; - /** first 8 arument bindings. */ - struct pso_pointer arg[args_in_frame]; - /** list of any further argument bindings. */ - struct pso_pointer more; - /** the function to be called. */ - struct pso_pointer function; - /** the execute-time environment */ - struct pso_pointer env; - /** a list of objects created in the context of this frame */ - struct pso_pointer locals; - /** the number of arguments provided. */ - uint32_t args; - /** the depth of the stack below this frame */ - uint32_t depth; -}; +#include "payloads/stack_payload.h" /* * number of arguments stored in a stack frame diff --git a/src/c/payloads/stack_payload.h b/src/c/payloads/stack_payload.h new file mode 100644 index 0000000..95a9c2a --- /dev/null +++ b/src/c/payloads/stack_payload.h @@ -0,0 +1,45 @@ +/** + * payloads/stack_payload.h + * + * payload struct itself separated out from functions which interrogate it + * to avoid circularity with pso4. + * + * Sits in a pso4. + * + * (c) 2026 Simon Brooke + * Licensed under GPL version 2.0, or, at your option, any later version. + */ + +#ifndef __psse_payloads_stack_payload_h +#define __psse_payloads_stack_payload_h + +#include "memory/pointer.h" + +/* + * number of arguments stored in a stack frame + */ +#define args_in_frame 8 + +/** + * A stack frame. + */ +struct stack_frame_payload { + /** the previous frame. */ + struct pso_pointer previous; + /** first 8 arument bindings. */ + struct pso_pointer arg[args_in_frame]; + /** list of any further argument bindings. */ + struct pso_pointer more; + /** the function to be called. */ + struct pso_pointer function; + /** the execute-time environment */ + struct pso_pointer env; + /** a list of objects created in the context of this frame */ + struct pso_pointer locals; + /** the number of arguments provided. */ + uint32_t args; + /** the depth of the stack below this frame */ + uint32_t depth; +}; + +#endif \ No newline at end of file diff --git a/src/c/psse.c b/src/c/psse.c index bf7c745..0208c23 100644 --- a/src/c/psse.c +++ b/src/c/psse.c @@ -27,7 +27,6 @@ #include "memory/tags.h" #include "ops/repl.h" -#include "ops/stack_ops.h" #include "ops/string_ops.h" #include "ops/truth.h"