Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/gravity
Path: blob/master/src/runtime/gravity_vm.h
1214 views
1
//
2
// gravity_vm.h
3
// gravity
4
//
5
// Created by Marco Bambini on 11/11/14.
6
// Copyright (c) 2014 CreoLabs. All rights reserved.
7
//
8
9
#ifndef __GRAVITY_VM__
10
#define __GRAVITY_VM__
11
12
#include "gravity_delegate.h"
13
#include "gravity_value.h"
14
15
typedef bool (*vm_filter_cb) (gravity_object_t *obj);
16
typedef void (*vm_transfer_cb) (gravity_vm *vm, gravity_object_t *obj);
17
typedef void (*vm_cleanup_cb) (gravity_vm *vm);
18
19
gravity_vm *gravity_vm_new (gravity_delegate_t *delegate);
20
gravity_vm *gravity_vm_newmini (void);
21
void gravity_vm_set_callbacks (gravity_vm *vm, vm_transfer_cb vm_transfer, vm_cleanup_cb vm_cleanup);
22
void gravity_vm_free (gravity_vm *vm);
23
void gravity_vm_reset (gravity_vm *vm);
24
bool gravity_vm_runclosure (gravity_vm *vm, gravity_closure_t *closure, gravity_value_t selfvalue, gravity_value_t params[], uint16_t nparams);
25
bool gravity_vm_run (gravity_vm *vm, gravity_closure_t *closure);
26
void gravity_vm_setvalue (gravity_vm *vm, const char *key, gravity_value_t value);
27
gravity_value_t gravity_vm_lookup (gravity_vm *vm, gravity_value_t key);
28
gravity_value_t gravity_vm_getvalue (gravity_vm *vm, const char *key, uint32_t keylen);
29
double gravity_vm_time (gravity_vm *vm);
30
gravity_value_t gravity_vm_result (gravity_vm *vm);
31
gravity_delegate_t *gravity_vm_delegate (gravity_vm *vm);
32
gravity_fiber_t *gravity_vm_fiber (gravity_vm *vm);
33
void gravity_vm_setfiber(gravity_vm* vm, gravity_fiber_t *fiber);
34
void gravity_vm_seterror (gravity_vm *vm, const char *format, ...);
35
void gravity_vm_seterror_string (gravity_vm* vm, const char *s);
36
bool gravity_vm_ismini (gravity_vm *vm);
37
gravity_value_t gravity_vm_keyindex (gravity_vm *vm, uint32_t index);
38
bool gravity_vm_isaborted (gravity_vm *vm);
39
void gravity_vm_setaborted (gravity_vm *vm);
40
41
void gravity_gray_value (gravity_vm* vm, gravity_value_t v);
42
void gravity_gray_object (gravity_vm* vm, gravity_object_t *obj);
43
void gravity_gc_start (gravity_vm* vm);
44
void gravity_gc_setenabled (gravity_vm* vm, bool enabled);
45
void gravity_gc_push (gravity_vm *vm, gravity_object_t *obj);
46
void gravity_gc_pop (gravity_vm *vm);
47
48
void gravity_vm_transfer (gravity_vm* vm, gravity_object_t *obj);
49
void gravity_vm_cleanup (gravity_vm* vm);
50
void gravity_vm_filter (gravity_vm* vm, vm_filter_cb cleanup_filter);
51
52
gravity_closure_t *gravity_vm_loadfile (gravity_vm *vm, const char *path);
53
gravity_closure_t *gravity_vm_loadbuffer (gravity_vm *vm, const char *buffer, size_t len);
54
void gravity_vm_initmodule (gravity_vm *vm, gravity_function_t *f);
55
56
gravity_closure_t *gravity_vm_fastlookup (gravity_vm *vm, gravity_class_t *c, int index);
57
void gravity_vm_setslot (gravity_vm *vm, gravity_value_t value, uint32_t index);
58
gravity_value_t gravity_vm_getslot (gravity_vm *vm, uint32_t index);
59
void gravity_vm_setdata (gravity_vm *vm, void *data);
60
void *gravity_vm_getdata (gravity_vm *vm);
61
void gravity_vm_memupdate (gravity_vm *vm, gravity_int_t value);
62
63
gravity_value_t gravity_vm_get (gravity_vm *vm, const char *key);
64
bool gravity_vm_set (gravity_vm *vm, const char *key, gravity_value_t value);
65
char *gravity_vm_anonymous (gravity_vm *vm);
66
67
#endif
68
69
70