aboutsummaryrefslogtreecommitdiff
path: root/src_c/env.h
blob: 026cd18b1f9bd5904c714ca7edff0b8038f56fa6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef LISP16_ENV_H
#define LISP16_ENV_H

#include "mem.h"
#include "stream.h"


typedef struct {
    lsp_mem_t *m;
    lsp_in_stream_t *in;
    lsp_out_stream_t *out;

    // internal
    struct {
        lsp_bool_t is_value;
        lsp_addr_t ctx;
        lsp_addr_t value;
    } result;
} lsp_env_t;


void lsp_env_init(lsp_env_t *e, lsp_mem_t *m, lsp_in_stream_t *in,
                  lsp_out_stream_t *out);
lsp_status_t lsp_env_set_result_value(lsp_env_t *e, lsp_addr_t value);
lsp_status_t lsp_env_set_result_eval(lsp_env_t *e, lsp_addr_t ctx,
                                     lsp_addr_t value);
lsp_status_t lsp_env_resolve(lsp_env_t *e, lsp_addr_t ctx, lsp_addr_t value,
                             lsp_addr_t *result);

#endif