1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- //
- // gravity_vm.h
- // gravity
- //
- // Created by Marco Bambini on 11/11/14.
- // Copyright (c) 2014 CreoLabs. All rights reserved.
- //
- #ifndef __GRAVITY_VM__
- #define __GRAVITY_VM__
- #include "gravity_delegate.h"
- #include "gravity_value.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define GRAVITY_VM_GCENABLED "gcEnabled"
- #define GRAVITY_VM_GCMINTHRESHOLD "gcMinThreshold"
- #define GRAVITY_VM_GCTHRESHOLD "gcThreshold"
- #define GRAVITY_VM_GCRATIO "gcRatio"
- #define GRAVITY_VM_MAXCALLS "maxCCalls"
- #define GRAVITY_VM_MAXBLOCK "maxBlock"
- #define GRAVITY_VM_MAXRECURSION "maxRecursionDepth"
- typedef bool (*vm_filter_cb) (gravity_object_t *obj);
- typedef void (*vm_transfer_cb) (gravity_vm *vm, gravity_object_t *obj);
- typedef void (*vm_cleanup_cb) (gravity_vm *vm);
- GRAVITY_API gravity_vm *gravity_vm_new (gravity_delegate_t *delegate);
- GRAVITY_API gravity_vm *gravity_vm_newmini (void);
- GRAVITY_API void gravity_vm_set_callbacks (gravity_vm *vm, vm_transfer_cb vm_transfer, vm_cleanup_cb vm_cleanup);
- GRAVITY_API void gravity_vm_free (gravity_vm *vm);
- GRAVITY_API void gravity_vm_reset (gravity_vm *vm);
- GRAVITY_API bool gravity_vm_runclosure (gravity_vm *vm, gravity_closure_t *closure, gravity_value_t sender, gravity_value_t params[], uint16_t nparams);
- GRAVITY_API bool gravity_vm_runmain (gravity_vm *vm, gravity_closure_t *closure);
- GRAVITY_API void gravity_vm_loadclosure (gravity_vm *vm, gravity_closure_t *closure);
- GRAVITY_API void gravity_vm_setvalue (gravity_vm *vm, const char *key, gravity_value_t value);
- GRAVITY_API gravity_value_t gravity_vm_lookup (gravity_vm *vm, gravity_value_t key);
- GRAVITY_API gravity_value_t gravity_vm_getvalue (gravity_vm *vm, const char *key, uint32_t keylen);
- GRAVITY_API double gravity_vm_time (gravity_vm *vm);
- GRAVITY_API gravity_value_t gravity_vm_result (gravity_vm *vm);
- GRAVITY_API gravity_delegate_t *gravity_vm_delegate (gravity_vm *vm);
- GRAVITY_API gravity_fiber_t *gravity_vm_fiber (gravity_vm *vm);
- GRAVITY_API void gravity_vm_setfiber(gravity_vm* vm, gravity_fiber_t *fiber);
- GRAVITY_API void gravity_vm_seterror (gravity_vm *vm, const char *format, ...);
- GRAVITY_API void gravity_vm_seterror_string (gravity_vm* vm, const char *s);
- GRAVITY_API bool gravity_vm_ismini (gravity_vm *vm);
- GRAVITY_API gravity_value_t gravity_vm_keyindex (gravity_vm *vm, uint32_t index);
- GRAVITY_API bool gravity_vm_isaborted (gravity_vm *vm);
- GRAVITY_API void gravity_vm_setaborted (gravity_vm *vm);
- GRAVITY_API gravity_closure_t *gravity_vm_getclosure (gravity_vm *vm);
- GRAVITY_API void gravity_gray_value (gravity_vm* vm, gravity_value_t v);
- GRAVITY_API void gravity_gray_object (gravity_vm* vm, gravity_object_t *obj);
- GRAVITY_API void gravity_gc_start (gravity_vm* vm);
- GRAVITY_API void gravity_gc_setenabled (gravity_vm* vm, bool enabled);
- GRAVITY_API void gravity_gc_temppush (gravity_vm *vm, gravity_object_t *obj);
- GRAVITY_API void gravity_gc_temppop (gravity_vm *vm);
- GRAVITY_API void gravity_gc_tempnull (gravity_vm *vm, gravity_object_t *obj);
- GRAVITY_API void gravity_gc_setvalues (gravity_vm *vm, gravity_int_t threshold, gravity_int_t minthreshold, gravity_float_t ratio);
-
- GRAVITY_API void gravity_vm_transfer (gravity_vm* vm, gravity_object_t *obj);
- GRAVITY_API void gravity_vm_cleanup (gravity_vm* vm);
- GRAVITY_API void gravity_vm_filter (gravity_vm* vm, vm_filter_cb cleanup_filter);
- GRAVITY_API gravity_closure_t *gravity_vm_loadfile (gravity_vm *vm, const char *path);
- GRAVITY_API gravity_closure_t *gravity_vm_loadbuffer (gravity_vm *vm, const char *buffer, size_t len);
- GRAVITY_API void gravity_vm_initmodule (gravity_vm *vm, gravity_function_t *f);
- GRAVITY_API gravity_closure_t *gravity_vm_fastlookup (gravity_vm *vm, gravity_class_t *c, int index);
- GRAVITY_API void gravity_vm_setslot (gravity_vm *vm, gravity_value_t value, uint32_t index);
- GRAVITY_API gravity_value_t gravity_vm_getslot (gravity_vm *vm, uint32_t index);
- GRAVITY_API void gravity_vm_setdata (gravity_vm *vm, void *data);
- GRAVITY_API void *gravity_vm_getdata (gravity_vm *vm);
- GRAVITY_API void gravity_vm_memupdate (gravity_vm *vm, gravity_int_t value);
- GRAVITY_API gravity_int_t gravity_vm_maxmemblock (gravity_vm *vm);
- GRAVITY_API gravity_value_t gravity_vm_get (gravity_vm *vm, const char *key);
- GRAVITY_API bool gravity_vm_set (gravity_vm *vm, const char *key, gravity_value_t value);
- GRAVITY_API char *gravity_vm_anonymous (gravity_vm *vm);
- GRAVITY_API bool gravity_isopt_class (gravity_class_t *c);
- GRAVITY_API void gravity_opt_register (gravity_vm *vm);
- GRAVITY_API void gravity_opt_free (void);
- #ifdef __cplusplus
- }
- #endif
- #endif
|