blob: 0ee0278add168318dea492182512d2fa41505ee8 [file] [log] [blame]
Gavin Howard5715b042018-02-12 16:11:42 -07001/*
Gavin Howardb5904bf2018-02-20 13:28:18 -07002 * *****************************************************************************
Gavin Howard5715b042018-02-12 16:11:42 -07003 *
Gavin Howardb5904bf2018-02-20 13:28:18 -07004 * Copyright 2018 Gavin D. Howard
Gavin Howard5715b042018-02-12 16:11:42 -07005 *
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11 * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14 * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 * PERFORMANCE OF THIS SOFTWARE.
16 *
Gavin Howardb5904bf2018-02-20 13:28:18 -070017 * *****************************************************************************
Gavin Howard5715b042018-02-12 16:11:42 -070018 *
19 * Definitions for bc's virtual machine.
20 *
21 */
22
Gavin Howard8a596d42018-01-15 15:46:01 -070023#ifndef BC_VM_H
24#define BC_VM_H
25
Gavin Howard3ba6c8d2018-02-15 12:23:35 -070026#include <bc.h>
27#include <program.h>
28#include <parse.h>
Gavin Howard8a596d42018-01-15 15:46:01 -070029
30#define BC_VM_BUF_SIZE (1024)
31
32typedef struct BcVm {
33
Gavin Howard4bc73ee2018-01-26 11:39:20 -070034 BcProgram program;
35 BcParse parse;
Gavin Howard8a596d42018-01-15 15:46:01 -070036
Gavin Howard4bc73ee2018-01-26 11:39:20 -070037 int filec;
38 const char** filev;
Gavin Howard8a596d42018-01-15 15:46:01 -070039
40} BcVm;
41
42BcStatus bc_vm_init(BcVm* vm, int filec, const char* filev[]);
43
Gavin Howardc5e491b2018-02-20 13:51:20 -070044void bc_vm_free(BcVm* vm);
45
Gavin Howard8a596d42018-01-15 15:46:01 -070046BcStatus bc_vm_exec(BcVm* vm);
47
Gavin Howard8a596d42018-01-15 15:46:01 -070048#endif // BC_VM_H