object.h File Reference

#include <stdio.h>

Go to the source code of this file.

Defines

#define VM_OBJ_OFS   sizeof(struct _vm_obj_t)
 size of the object header
#define PTR_TO_OBJ(_x)   ((vm_obj_t)(((char*)(_x))-VM_OBJ_OFS))
 translate from a managed buffer to its object header
#define OBJ_TO_PTR(_x)   ((void*)(((char*)(_x))+VM_OBJ_OFS))
 translate from an object header to its managed buffer
#define VM_OBJ_MAGIC   0x61060000
 magic value for managed objects : bit pattern
#define VM_OBJ_MASK   0xFFFF0000
 magic value for managed objects : bit mask
#define _obj_type(_x)   (((vm_obj_t)(_x))->magic^VM_OBJ_MAGIC)
 retrieve the type of managed object (DataObj* constant)
#define _is_obj_obj(_x)   (((_x)&&(((_x)->magic&VM_OBJ_MASK) == VM_OBJ_MAGIC)) || (vm_printerrf("Data at %p is not a managed object (magic = %8.8lX)\n",(_x),(_x)?(_x)->magic:0) && 0))
 assertions
#define _is_a_obj(_x, _t)   (_is_obj(_x) && (_obj_type(_x)==(_t)))
#define _is_obj_ptr(_x)   ((_x)&&((PTR_TO_OBJ(_x)->magic&VM_OBJ_MASK) == VM_OBJ_MAGIC))
#define _is_a_ptr(_x, _t)   (_is_obj_ptr(_x) && (_obj_type(PTR_TO_OBJ(_x))==(_t)))

Functions

static void * vm_obj_new (word_t struc_size, void(*_free)(vm_t, void *), void *(*_clone)(vm_t, void *), vm_data_type_t obj_type)
 allocate a new managed buffer.
static void vm_obj_free_obj (vm_t vm, vm_obj_t o)
 free a managed object.
static vm_obj_t vm_obj_clone_obj (vm_t vm, vm_obj_t o)
 clone an object
static word_t vm_obj_refcount_ptr (void *ptr)
 get the reference count for object ptr
static void vm_obj_ref_ptr (vm_t vm, void *ptr)
 increase reference count for ptr
static void vm_obj_deref_ptr (vm_t vm, void *ptr)
 decrease reference count for ptr and collect object if necessary
char * vm_string_new (const char *src)
 create a new managed string containing a copy of src
char * vm_string_new_buf (word_t sz)
 create a new managed string of length sz
text_seg_t vm_symtab_new ()
 create a new symbol table ( [symbol] => index not null )
mutex_t vm_mutex_new ()
 create a new mutex
thread_t vm_thread_new (vm_t vm, word_t prio, program_t p, word_t ip)
 create a new thread
dynarray_t vm_array_new ()
 create a new dynamic array
vm_dyn_env_t vm_env_new ()
 create a new map ( symbol table + array)
generic_stack_t vm_stack_new ()
 create a new stack
vm_dyn_func_t vm_dyn_fun_new ()
 create a new function object


Generated on Wed Feb 6 14:46:05 2008 for TinyaML by  doxygen 1.5.3