aboutsummaryrefslogtreecommitdiff
path: root/include/program.h
blob: c097c7b858ddd02891780ff0d5aef9b7df697cbf (plain)
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
#ifndef TSL_PROGRAM_H
#define TSL_PROGRAM_H

#include "std/buffer.h"
#include "std/hash_map.h"
#include "value.h"

#define TSL_STACK_MAX_SIZE 255

typedef struct {
    TslBuffer /*TslBytecode*/ function_bytecode_list;
    TslHashMap /*TslStringView, TslValue*/ variables;
    TslValue stack_values[TSL_STACK_MAX_SIZE];
    size_t stack_index;
} TslProgram;

typedef enum {
    TSL_PROGRAM_RESULT_ERR,
    TSL_PROGRAM_RESULT_OK
} TslProgramResult;

void tsl_program_init(TslProgram *self);
void tsl_program_deinit(TslProgram *self);

TslProgramResult tsl_program_run(TslProgram *self);

#endif /* TSL_PROGRAM_H */