Browse Source

Renamed GRAVITY_DLL macro to GRAVITY_API to be more generic for other implementations.

Brandon Ray 8 years ago
parent
commit
c2b4cb19be

+ 3 - 2
Makefile

@@ -11,7 +11,7 @@ SRC = $(wildcard $(COMPILER_DIR)*.c) \
       $(wildcard $(UTILS_DIR)/*.c)
       $(wildcard $(UTILS_DIR)/*.c)
 
 
 INCLUDE = -I$(COMPILER_DIR) -I$(RUNTIME_DIR) -I$(SHARED_DIR) -I$(UTILS_DIR)
 INCLUDE = -I$(COMPILER_DIR) -I$(RUNTIME_DIR) -I$(SHARED_DIR) -I$(UTILS_DIR)
-CFLAGS = $(INCLUDE) -O2 -std=gnu99 -fgnu89-inline -fPIC -DBUILD_GRAVITY_DLL
+CFLAGS = $(INCLUDE) -O2 -std=gnu99 -fgnu89-inline -fPIC -DBUILD_GRAVITY_API
 OBJ = $(SRC:.c=.o)
 OBJ = $(SRC:.c=.o)
 
 
 ifeq ($(OS),Windows_NT)
 ifeq ($(OS),Windows_NT)
@@ -19,13 +19,14 @@ ifeq ($(OS),Windows_NT)
 	LIBTARGET = gravity.dll
 	LIBTARGET = gravity.dll
 	LDFLAGS = -lm -lShlwapi
 	LDFLAGS = -lm -lShlwapi
 else
 else
-	LIBTARGET = libgravity.so
 	UNAME_S := $(shell uname -s)
 	UNAME_S := $(shell uname -s)
 	ifeq ($(UNAME_S),Darwin)
 	ifeq ($(UNAME_S),Darwin)
 		# MacOS
 		# MacOS
+		LIBTARGET = libgravity.dylib
 		LDFLAGS = -lm 
 		LDFLAGS = -lm 
 	else
 	else
 		# Linux
 		# Linux
+		LIBTARGET = libgravity.so
 		LDFLAGS = -lm -lrt
 		LDFLAGS = -lm -lrt
 	endif
 	endif
 endif
 endif

+ 7 - 7
src/compiler/gravity_compiler.h

@@ -22,13 +22,13 @@ extern "C" {
 // opaque compiler data type
 // opaque compiler data type
 typedef struct gravity_compiler_t	gravity_compiler_t;
 typedef struct gravity_compiler_t	gravity_compiler_t;
 
 
-GRAVITY_DLL gravity_compiler_t	*gravity_compiler_create (gravity_delegate_t *delegate);
-GRAVITY_DLL gravity_closure_t	*gravity_compiler_run (gravity_compiler_t *compiler, const char *source, size_t len, uint32_t fileid, bool is_static);
-GRAVITY_DLL json_t				*gravity_compiler_serialize (gravity_compiler_t *compiler, gravity_closure_t *closure);
-GRAVITY_DLL bool				gravity_compiler_serialize_infile (gravity_compiler_t *compiler, gravity_closure_t *closure, const char *path);
-GRAVITY_DLL void				gravity_compiler_transfer (gravity_compiler_t *compiler, gravity_vm *vm);
-GRAVITY_DLL gnode_t				*gravity_compiler_ast (gravity_compiler_t *compiler);
-GRAVITY_DLL void				gravity_compiler_free (gravity_compiler_t *compiler);
+GRAVITY_API gravity_compiler_t	*gravity_compiler_create (gravity_delegate_t *delegate);
+GRAVITY_API gravity_closure_t	*gravity_compiler_run (gravity_compiler_t *compiler, const char *source, size_t len, uint32_t fileid, bool is_static);
+GRAVITY_API json_t				*gravity_compiler_serialize (gravity_compiler_t *compiler, gravity_closure_t *closure);
+GRAVITY_API bool				gravity_compiler_serialize_infile (gravity_compiler_t *compiler, gravity_closure_t *closure, const char *path);
+GRAVITY_API void				gravity_compiler_transfer (gravity_compiler_t *compiler, gravity_vm *vm);
+GRAVITY_API gnode_t				*gravity_compiler_ast (gravity_compiler_t *compiler);
+GRAVITY_API void				gravity_compiler_free (gravity_compiler_t *compiler);
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }

+ 17 - 17
src/runtime/gravity_core.c

@@ -67,24 +67,24 @@ static bool core_inited = false;		// initialize global classes just once
 static uint32_t refcount = 0;			// protect deallocation of global classes
 static uint32_t refcount = 0;			// protect deallocation of global classes
 
 
 // boxed
 // boxed
-GRAVITY_DLL gravity_class_t *gravity_class_int;
-GRAVITY_DLL gravity_class_t *gravity_class_float;
-GRAVITY_DLL gravity_class_t *gravity_class_bool;
-GRAVITY_DLL gravity_class_t	*gravity_class_null;
+GRAVITY_API gravity_class_t *gravity_class_int;
+GRAVITY_API gravity_class_t *gravity_class_float;
+GRAVITY_API gravity_class_t *gravity_class_bool;
+GRAVITY_API gravity_class_t	*gravity_class_null;
 // objects
 // objects
-GRAVITY_DLL gravity_class_t *gravity_class_string;
-GRAVITY_DLL gravity_class_t *gravity_class_object;
-GRAVITY_DLL gravity_class_t *gravity_class_function;
-GRAVITY_DLL gravity_class_t *gravity_class_closure;
-GRAVITY_DLL gravity_class_t *gravity_class_fiber;
-GRAVITY_DLL gravity_class_t *gravity_class_class;
-GRAVITY_DLL gravity_class_t *gravity_class_instance;
-GRAVITY_DLL gravity_class_t *gravity_class_module;
-GRAVITY_DLL gravity_class_t *gravity_class_list;
-GRAVITY_DLL gravity_class_t *gravity_class_map;
-GRAVITY_DLL gravity_class_t *gravity_class_range;
-GRAVITY_DLL gravity_class_t *gravity_class_upvalue;
-GRAVITY_DLL gravity_class_t *gravity_class_system;
+GRAVITY_API gravity_class_t *gravity_class_string;
+GRAVITY_API gravity_class_t *gravity_class_object;
+GRAVITY_API gravity_class_t *gravity_class_function;
+GRAVITY_API gravity_class_t *gravity_class_closure;
+GRAVITY_API gravity_class_t *gravity_class_fiber;
+GRAVITY_API gravity_class_t *gravity_class_class;
+GRAVITY_API gravity_class_t *gravity_class_instance;
+GRAVITY_API gravity_class_t *gravity_class_module;
+GRAVITY_API gravity_class_t *gravity_class_list;
+GRAVITY_API gravity_class_t *gravity_class_map;
+GRAVITY_API gravity_class_t *gravity_class_range;
+GRAVITY_API gravity_class_t *gravity_class_upvalue;
+GRAVITY_API gravity_class_t *gravity_class_system;
 
 
 #define SETMETA_INITED(c)						gravity_class_get_meta(c)->is_inited = true
 #define SETMETA_INITED(c)						gravity_class_get_meta(c)->is_inited = true
 #define GET_VALUE(_idx)							args[_idx]
 #define GET_VALUE(_idx)							args[_idx]

+ 4 - 4
src/runtime/gravity_core.h

@@ -16,10 +16,10 @@ extern "C" {
 #endif
 #endif
 
 
 // core functions
 // core functions
-GRAVITY_DLL void gravity_core_register (gravity_vm *vm);
-GRAVITY_DLL bool gravity_iscore_class (gravity_class_t *c);
-GRAVITY_DLL void gravity_core_free (void);
-GRAVITY_DLL uint32_t gravity_core_identifiers (const char ***id);
+GRAVITY_API void gravity_core_register (gravity_vm *vm);
+GRAVITY_API bool gravity_iscore_class (gravity_class_t *c);
+GRAVITY_API void gravity_core_free (void);
+GRAVITY_API uint32_t gravity_core_identifiers (const char ***id);
 
 
 // conversion functions
 // conversion functions
 gravity_value_t convert_value2int (gravity_vm *vm, gravity_value_t v);
 gravity_value_t convert_value2int (gravity_vm *vm, gravity_value_t v);

+ 43 - 43
src/runtime/gravity_vm.h

@@ -20,54 +20,54 @@ typedef bool (*vm_filter_cb) (gravity_object_t *obj);
 typedef void (*vm_transfer_cb) (gravity_vm *vm, gravity_object_t *obj);
 typedef void (*vm_transfer_cb) (gravity_vm *vm, gravity_object_t *obj);
 typedef void (*vm_cleanup_cb) (gravity_vm *vm);
 typedef void (*vm_cleanup_cb) (gravity_vm *vm);
 
 
-GRAVITY_DLL gravity_vm			*gravity_vm_new (gravity_delegate_t *delegate);
-GRAVITY_DLL gravity_vm			*gravity_vm_newmini (void);
-GRAVITY_DLL void				gravity_vm_set_callbacks (gravity_vm *vm, vm_transfer_cb vm_transfer, vm_cleanup_cb vm_cleanup);
-GRAVITY_DLL void				gravity_vm_free (gravity_vm *vm);
-GRAVITY_DLL void				gravity_vm_reset (gravity_vm *vm);
-GRAVITY_DLL bool				gravity_vm_runclosure (gravity_vm *vm, gravity_closure_t *closure, gravity_value_t selfvalue, gravity_value_t params[], uint16_t nparams);
-GRAVITY_DLL bool				gravity_vm_runmain (gravity_vm *vm, gravity_closure_t *closure);
-GRAVITY_DLL void				gravity_vm_loadclosure (gravity_vm *vm, gravity_closure_t *closure);
-GRAVITY_DLL void				gravity_vm_setvalue (gravity_vm *vm, const char *key, gravity_value_t value);
-GRAVITY_DLL gravity_value_t		gravity_vm_lookup (gravity_vm *vm, gravity_value_t key);
-GRAVITY_DLL gravity_value_t		gravity_vm_getvalue (gravity_vm *vm, const char *key, uint32_t keylen);
-GRAVITY_DLL double				gravity_vm_time (gravity_vm *vm);
-GRAVITY_DLL gravity_value_t		gravity_vm_result (gravity_vm *vm);
-GRAVITY_DLL gravity_delegate_t	*gravity_vm_delegate (gravity_vm *vm);
-GRAVITY_DLL gravity_fiber_t		*gravity_vm_fiber (gravity_vm *vm);
-GRAVITY_DLL void				gravity_vm_setfiber(gravity_vm* vm, gravity_fiber_t *fiber);
-GRAVITY_DLL void				gravity_vm_seterror (gravity_vm *vm, const char *format, ...);
-GRAVITY_DLL void				gravity_vm_seterror_string (gravity_vm* vm, const char *s);
-GRAVITY_DLL bool				gravity_vm_ismini (gravity_vm *vm);
-GRAVITY_DLL gravity_value_t		gravity_vm_keyindex (gravity_vm *vm, uint32_t index);
-GRAVITY_DLL bool				gravity_vm_isaborted (gravity_vm *vm);
-GRAVITY_DLL void				gravity_vm_setaborted (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 selfvalue, 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_DLL void				gravity_gray_value (gravity_vm* vm, gravity_value_t v);
-GRAVITY_DLL void				gravity_gray_object (gravity_vm* vm, gravity_object_t *obj);
-GRAVITY_DLL void				gravity_gc_start (gravity_vm* vm);
-GRAVITY_DLL void				gravity_gc_setenabled (gravity_vm* vm, bool enabled);
-GRAVITY_DLL void				gravity_gc_push (gravity_vm *vm, gravity_object_t *obj);
-GRAVITY_DLL void				gravity_gc_pop (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_push (gravity_vm *vm, gravity_object_t *obj);
+GRAVITY_API void				gravity_gc_pop (gravity_vm *vm);
 
 
-GRAVITY_DLL void				gravity_vm_transfer (gravity_vm* vm, gravity_object_t *obj);
-GRAVITY_DLL void				gravity_vm_cleanup (gravity_vm* vm);
-GRAVITY_DLL void				gravity_vm_filter (gravity_vm* vm, vm_filter_cb cleanup_filter);
+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_DLL gravity_closure_t	*gravity_vm_loadfile (gravity_vm *vm, const char *path);
-GRAVITY_DLL gravity_closure_t	*gravity_vm_loadbuffer (gravity_vm *vm, const char *buffer, size_t len);
-GRAVITY_DLL void				gravity_vm_initmodule (gravity_vm *vm, gravity_function_t *f);
+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_DLL gravity_closure_t	*gravity_vm_fastlookup (gravity_vm *vm, gravity_class_t *c, int index);
-GRAVITY_DLL void				gravity_vm_setslot (gravity_vm *vm, gravity_value_t value, uint32_t index);
-GRAVITY_DLL gravity_value_t		gravity_vm_getslot (gravity_vm *vm, uint32_t index);
-GRAVITY_DLL void				gravity_vm_setdata (gravity_vm *vm, void *data);
-GRAVITY_DLL void				*gravity_vm_getdata (gravity_vm *vm);
-GRAVITY_DLL void				gravity_vm_memupdate (gravity_vm *vm, gravity_int_t value);
+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_DLL gravity_value_t		gravity_vm_get (gravity_vm *vm, const char *key);
-GRAVITY_DLL bool				gravity_vm_set (gravity_vm *vm, const char *key, gravity_value_t value);
-GRAVITY_DLL char				*gravity_vm_anonymous (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);
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }

+ 19 - 19
src/shared/gravity_hash.h

@@ -33,25 +33,25 @@ typedef void  		(*gravity_hash_iterate2_fn) (gravity_hash_t *hashtable, gravity_
 typedef void		(*gravity_hash_transform_fn) (gravity_hash_t *hashtable, gravity_value_t key, gravity_value_t *value, void *data);
 typedef void		(*gravity_hash_transform_fn) (gravity_hash_t *hashtable, gravity_value_t key, gravity_value_t *value, void *data);
 
 
 // PUBLIC functions
 // PUBLIC functions
-GRAVITY_DLL gravity_hash_t		*gravity_hash_create (uint32_t size, gravity_hash_compute_fn compute, gravity_hash_isequal_fn isequal, gravity_hash_iterate_fn free, void *data);
-GRAVITY_DLL void				gravity_hash_free (gravity_hash_t *hashtable);
-GRAVITY_DLL bool				gravity_hash_isempty (gravity_hash_t *hashtable);
-GRAVITY_DLL bool				gravity_hash_remove  (gravity_hash_t *hashtable, gravity_value_t key);
-GRAVITY_DLL bool				gravity_hash_insert (gravity_hash_t *hashtable, gravity_value_t key, gravity_value_t value);
-GRAVITY_DLL gravity_value_t		*gravity_hash_lookup (gravity_hash_t *hashtable, gravity_value_t key);
-
-GRAVITY_DLL uint32_t			gravity_hash_memsize (gravity_hash_t *hashtable);
-GRAVITY_DLL uint32_t			gravity_hash_count (gravity_hash_t *hashtable);
-GRAVITY_DLL uint32_t			gravity_hash_compute_buffer (const char *key, uint32_t len);
-GRAVITY_DLL uint32_t			gravity_hash_compute_int (gravity_int_t n);
-GRAVITY_DLL uint32_t			gravity_hash_compute_float (gravity_float_t f);
-GRAVITY_DLL void				gravity_hash_stat (gravity_hash_t *hashtable);
-GRAVITY_DLL void				gravity_hash_iterate (gravity_hash_t *hashtable, gravity_hash_iterate_fn iterate, void *data);
-GRAVITY_DLL void				gravity_hash_iterate2 (gravity_hash_t *hashtable, gravity_hash_iterate2_fn iterate, void *data1, void *data2);
-GRAVITY_DLL void				gravity_hash_transform (gravity_hash_t *hashtable, gravity_hash_transform_fn iterate, void *data);
-GRAVITY_DLL void				gravity_hash_dump (gravity_hash_t *hashtable);
-GRAVITY_DLL void				gravity_hash_append (gravity_hash_t *hashtable1, gravity_hash_t *hashtable2);
-GRAVITY_DLL void				gravity_hash_resetfree (gravity_hash_t *hashtable);
+GRAVITY_API gravity_hash_t		*gravity_hash_create (uint32_t size, gravity_hash_compute_fn compute, gravity_hash_isequal_fn isequal, gravity_hash_iterate_fn free, void *data);
+GRAVITY_API void				gravity_hash_free (gravity_hash_t *hashtable);
+GRAVITY_API bool				gravity_hash_isempty (gravity_hash_t *hashtable);
+GRAVITY_API bool				gravity_hash_remove  (gravity_hash_t *hashtable, gravity_value_t key);
+GRAVITY_API bool				gravity_hash_insert (gravity_hash_t *hashtable, gravity_value_t key, gravity_value_t value);
+GRAVITY_API gravity_value_t		*gravity_hash_lookup (gravity_hash_t *hashtable, gravity_value_t key);
+
+GRAVITY_API uint32_t			gravity_hash_memsize (gravity_hash_t *hashtable);
+GRAVITY_API uint32_t			gravity_hash_count (gravity_hash_t *hashtable);
+GRAVITY_API uint32_t			gravity_hash_compute_buffer (const char *key, uint32_t len);
+GRAVITY_API uint32_t			gravity_hash_compute_int (gravity_int_t n);
+GRAVITY_API uint32_t			gravity_hash_compute_float (gravity_float_t f);
+GRAVITY_API void				gravity_hash_stat (gravity_hash_t *hashtable);
+GRAVITY_API void				gravity_hash_iterate (gravity_hash_t *hashtable, gravity_hash_iterate_fn iterate, void *data);
+GRAVITY_API void				gravity_hash_iterate2 (gravity_hash_t *hashtable, gravity_hash_iterate2_fn iterate, void *data1, void *data2);
+GRAVITY_API void				gravity_hash_transform (gravity_hash_t *hashtable, gravity_hash_transform_fn iterate, void *data);
+GRAVITY_API void				gravity_hash_dump (gravity_hash_t *hashtable);
+GRAVITY_API void				gravity_hash_append (gravity_hash_t *hashtable1, gravity_hash_t *hashtable2);
+GRAVITY_API void				gravity_hash_resetfree (gravity_hash_t *hashtable);
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }

+ 107 - 107
src/shared/gravity_value.h

@@ -133,13 +133,13 @@ extern "C" {
 
 
 //DLL export/import support for Windows.
 //DLL export/import support for Windows.
 #ifdef _WIN32
 #ifdef _WIN32
-	#ifdef BUILD_GRAVITY_DLL
-		#define GRAVITY_DLL __declspec(dllexport)
+	#ifdef BUILD_GRAVITY_API
+		#define GRAVITY_API __declspec(dllexport)
 	#else
 	#else
-		#define GRAVITY_DLL __declspec(dllimport)
+		#define GRAVITY_API __declspec(dllimport)
 	#endif
 	#endif
 #else
 #else
-	#define GRAVITY_DLL
+	#define GRAVITY_API
 #endif
 #endif
 
 
 // MARK: - STRUCT -
 // MARK: - STRUCT -
@@ -365,137 +365,137 @@ typedef marray_t(gravity_class_t*)			gravity_class_r;		// array of classes
 typedef marray_t(gravity_object_t*)			gravity_object_r;		// array of objects
 typedef marray_t(gravity_object_t*)			gravity_object_r;		// array of objects
 
 
 // MARK: - MODULE -
 // MARK: - MODULE -
-GRAVITY_DLL gravity_module_t	*gravity_module_new (gravity_vm *vm, const char *identifier);
-GRAVITY_DLL void				gravity_module_free (gravity_vm *vm, gravity_module_t *m);
-GRAVITY_DLL void				gravity_module_blacken (gravity_vm *vm, gravity_module_t *m);
-GRAVITY_DLL uint32_t			gravity_module_size (gravity_vm *vm, gravity_module_t *m);
+GRAVITY_API gravity_module_t	*gravity_module_new (gravity_vm *vm, const char *identifier);
+GRAVITY_API void				gravity_module_free (gravity_vm *vm, gravity_module_t *m);
+GRAVITY_API void				gravity_module_blacken (gravity_vm *vm, gravity_module_t *m);
+GRAVITY_API uint32_t			gravity_module_size (gravity_vm *vm, gravity_module_t *m);
 
 
 // MARK: - FUNCTION -
 // MARK: - FUNCTION -
-GRAVITY_DLL gravity_function_t	*gravity_function_new (gravity_vm *vm, const char *identifier, uint16_t nparams, uint16_t nlocals, uint16_t ntemps, void *code);
-GRAVITY_DLL gravity_function_t	*gravity_function_new_internal (gravity_vm *vm, const char *identifier, gravity_c_internal exec, uint16_t nparams);
-GRAVITY_DLL gravity_function_t	*gravity_function_new_special (gravity_vm *vm, const char *identifier, uint16_t index, void *getter, void *setter);
-GRAVITY_DLL gravity_function_t	*gravity_function_new_bridged (gravity_vm *vm, const char *identifier, void *xdata);
-GRAVITY_DLL uint16_t			gravity_function_cpool_add (gravity_vm *vm, gravity_function_t *f, gravity_value_t v);
-GRAVITY_DLL gravity_value_t		gravity_function_cpool_get (gravity_function_t *f, uint16_t i);
-GRAVITY_DLL void				gravity_function_dump (gravity_function_t *f, code_dump_function codef);
-GRAVITY_DLL void				gravity_function_setouter (gravity_function_t *f, gravity_object_t *outer);
-GRAVITY_DLL void				gravity_function_setxdata (gravity_function_t *f, void *xdata);
-GRAVITY_DLL void				gravity_function_serialize (gravity_function_t *f, json_t *json);
-GRAVITY_DLL uint32_t			*gravity_bytecode_deserialize (const char *buffer, size_t len, uint32_t *ninst);
-GRAVITY_DLL gravity_function_t	*gravity_function_deserialize (gravity_vm *vm, json_value *json);
-GRAVITY_DLL void				gravity_function_free (gravity_vm *vm, gravity_function_t *f);
-GRAVITY_DLL void				gravity_function_blacken (gravity_vm *vm, gravity_function_t *f);
-GRAVITY_DLL uint32_t			gravity_function_size (gravity_vm *vm, gravity_function_t *f);
+GRAVITY_API gravity_function_t	*gravity_function_new (gravity_vm *vm, const char *identifier, uint16_t nparams, uint16_t nlocals, uint16_t ntemps, void *code);
+GRAVITY_API gravity_function_t	*gravity_function_new_internal (gravity_vm *vm, const char *identifier, gravity_c_internal exec, uint16_t nparams);
+GRAVITY_API gravity_function_t	*gravity_function_new_special (gravity_vm *vm, const char *identifier, uint16_t index, void *getter, void *setter);
+GRAVITY_API gravity_function_t	*gravity_function_new_bridged (gravity_vm *vm, const char *identifier, void *xdata);
+GRAVITY_API uint16_t			gravity_function_cpool_add (gravity_vm *vm, gravity_function_t *f, gravity_value_t v);
+GRAVITY_API gravity_value_t		gravity_function_cpool_get (gravity_function_t *f, uint16_t i);
+GRAVITY_API void				gravity_function_dump (gravity_function_t *f, code_dump_function codef);
+GRAVITY_API void				gravity_function_setouter (gravity_function_t *f, gravity_object_t *outer);
+GRAVITY_API void				gravity_function_setxdata (gravity_function_t *f, void *xdata);
+GRAVITY_API void				gravity_function_serialize (gravity_function_t *f, json_t *json);
+GRAVITY_API uint32_t			*gravity_bytecode_deserialize (const char *buffer, size_t len, uint32_t *ninst);
+GRAVITY_API gravity_function_t	*gravity_function_deserialize (gravity_vm *vm, json_value *json);
+GRAVITY_API void				gravity_function_free (gravity_vm *vm, gravity_function_t *f);
+GRAVITY_API void				gravity_function_blacken (gravity_vm *vm, gravity_function_t *f);
+GRAVITY_API uint32_t			gravity_function_size (gravity_vm *vm, gravity_function_t *f);
 
 
 // MARK: - CLOSURE -
 // MARK: - CLOSURE -
-GRAVITY_DLL gravity_closure_t	*gravity_closure_new (gravity_vm *vm, gravity_function_t *f);
-GRAVITY_DLL void				gravity_closure_free (gravity_vm *vm, gravity_closure_t *closure);
-GRAVITY_DLL uint32_t			gravity_closure_size (gravity_vm *vm, gravity_closure_t *closure);
-GRAVITY_DLL void				gravity_closure_blacken (gravity_vm *vm, gravity_closure_t *closure);
+GRAVITY_API gravity_closure_t	*gravity_closure_new (gravity_vm *vm, gravity_function_t *f);
+GRAVITY_API void				gravity_closure_free (gravity_vm *vm, gravity_closure_t *closure);
+GRAVITY_API uint32_t			gravity_closure_size (gravity_vm *vm, gravity_closure_t *closure);
+GRAVITY_API void				gravity_closure_blacken (gravity_vm *vm, gravity_closure_t *closure);
 
 
 // MARK: - UPVALUE -
 // MARK: - UPVALUE -
-GRAVITY_DLL gravity_upvalue_t	*gravity_upvalue_new (gravity_vm *vm, gravity_value_t *value);
-GRAVITY_DLL uint32_t			gravity_upvalue_size (gravity_vm *vm, gravity_upvalue_t *upvalue);
-GRAVITY_DLL void				gravity_upvalue_blacken (gravity_vm *vm, gravity_upvalue_t *upvalue);
-GRAVITY_DLL void				gravity_upvalue_free(gravity_vm *vm, gravity_upvalue_t *upvalue);
+GRAVITY_API gravity_upvalue_t	*gravity_upvalue_new (gravity_vm *vm, gravity_value_t *value);
+GRAVITY_API uint32_t			gravity_upvalue_size (gravity_vm *vm, gravity_upvalue_t *upvalue);
+GRAVITY_API void				gravity_upvalue_blacken (gravity_vm *vm, gravity_upvalue_t *upvalue);
+GRAVITY_API void				gravity_upvalue_free(gravity_vm *vm, gravity_upvalue_t *upvalue);
 
 
 // MARK: - CLASS -
 // MARK: - CLASS -
-GRAVITY_DLL void				gravity_class_bind (gravity_class_t *c, const char *key, gravity_value_t value);
-GRAVITY_DLL gravity_class_t		*gravity_class_getsuper (gravity_class_t *c);
-GRAVITY_DLL bool				gravity_class_grow (gravity_class_t *c, uint32_t n);
-GRAVITY_DLL bool				gravity_class_setsuper (gravity_class_t *subclass, gravity_class_t *superclass);
-GRAVITY_DLL gravity_class_t		*gravity_class_new_single (gravity_vm *vm, const char *identifier, uint32_t nfields);
-GRAVITY_DLL gravity_class_t		*gravity_class_new_pair (gravity_vm *vm, const char *identifier, gravity_class_t *superclass, uint32_t nivar, uint32_t nsvar);
-GRAVITY_DLL gravity_class_t		*gravity_class_get_meta (gravity_class_t *c);
-GRAVITY_DLL bool				gravity_class_is_meta (gravity_class_t *c);
-GRAVITY_DLL uint32_t			gravity_class_count_ivars (gravity_class_t *c);
-GRAVITY_DLL void				gravity_class_dump (gravity_class_t *c);
-GRAVITY_DLL void				gravity_class_setxdata (gravity_class_t *c, void *xdata);
-GRAVITY_DLL int16_t				gravity_class_add_ivar (gravity_class_t *c, const char *identifier);
-GRAVITY_DLL void				gravity_class_serialize (gravity_class_t *c, json_t *json);
-GRAVITY_DLL gravity_class_t		*gravity_class_deserialize (gravity_vm *vm, json_value *json);
-GRAVITY_DLL void				gravity_class_free (gravity_vm *vm, gravity_class_t *c);
-GRAVITY_DLL void				gravity_class_free_core (gravity_vm *vm, gravity_class_t *c);
-GRAVITY_DLL gravity_object_t	*gravity_class_lookup (gravity_class_t *c, gravity_value_t key);
-GRAVITY_DLL gravity_closure_t	*gravity_class_lookup_closure (gravity_class_t *c, gravity_value_t key);
-GRAVITY_DLL gravity_closure_t	*gravity_class_lookup_constructor (gravity_class_t *c, uint32_t nparams);
-GRAVITY_DLL void				gravity_class_blacken (gravity_vm *vm, gravity_class_t *c);
-GRAVITY_DLL uint32_t			gravity_class_size (gravity_vm *vm, gravity_class_t *c);
+GRAVITY_API void				gravity_class_bind (gravity_class_t *c, const char *key, gravity_value_t value);
+GRAVITY_API gravity_class_t		*gravity_class_getsuper (gravity_class_t *c);
+GRAVITY_API bool				gravity_class_grow (gravity_class_t *c, uint32_t n);
+GRAVITY_API bool				gravity_class_setsuper (gravity_class_t *subclass, gravity_class_t *superclass);
+GRAVITY_API gravity_class_t		*gravity_class_new_single (gravity_vm *vm, const char *identifier, uint32_t nfields);
+GRAVITY_API gravity_class_t		*gravity_class_new_pair (gravity_vm *vm, const char *identifier, gravity_class_t *superclass, uint32_t nivar, uint32_t nsvar);
+GRAVITY_API gravity_class_t		*gravity_class_get_meta (gravity_class_t *c);
+GRAVITY_API bool				gravity_class_is_meta (gravity_class_t *c);
+GRAVITY_API uint32_t			gravity_class_count_ivars (gravity_class_t *c);
+GRAVITY_API void				gravity_class_dump (gravity_class_t *c);
+GRAVITY_API void				gravity_class_setxdata (gravity_class_t *c, void *xdata);
+GRAVITY_API int16_t				gravity_class_add_ivar (gravity_class_t *c, const char *identifier);
+GRAVITY_API void				gravity_class_serialize (gravity_class_t *c, json_t *json);
+GRAVITY_API gravity_class_t		*gravity_class_deserialize (gravity_vm *vm, json_value *json);
+GRAVITY_API void				gravity_class_free (gravity_vm *vm, gravity_class_t *c);
+GRAVITY_API void				gravity_class_free_core (gravity_vm *vm, gravity_class_t *c);
+GRAVITY_API gravity_object_t	*gravity_class_lookup (gravity_class_t *c, gravity_value_t key);
+GRAVITY_API gravity_closure_t	*gravity_class_lookup_closure (gravity_class_t *c, gravity_value_t key);
+GRAVITY_API gravity_closure_t	*gravity_class_lookup_constructor (gravity_class_t *c, uint32_t nparams);
+GRAVITY_API void				gravity_class_blacken (gravity_vm *vm, gravity_class_t *c);
+GRAVITY_API uint32_t			gravity_class_size (gravity_vm *vm, gravity_class_t *c);
 
 
 // MARK: - FIBER -
 // MARK: - FIBER -
-GRAVITY_DLL gravity_fiber_t		*gravity_fiber_new (gravity_vm *vm, gravity_closure_t *closure, uint32_t nstack, uint32_t nframes);
-GRAVITY_DLL void				gravity_fiber_reassign (gravity_fiber_t *fiber, gravity_closure_t *closure, uint16_t nargs);
-GRAVITY_DLL void				gravity_fiber_seterror (gravity_fiber_t *fiber, const char *error);
-GRAVITY_DLL void				gravity_fiber_free (gravity_vm *vm, gravity_fiber_t *fiber);
-GRAVITY_DLL void				gravity_fiber_blacken (gravity_vm *vm, gravity_fiber_t *fiber);
-GRAVITY_DLL uint32_t			gravity_fiber_size (gravity_vm *vm, gravity_fiber_t *fiber);
+GRAVITY_API gravity_fiber_t		*gravity_fiber_new (gravity_vm *vm, gravity_closure_t *closure, uint32_t nstack, uint32_t nframes);
+GRAVITY_API void				gravity_fiber_reassign (gravity_fiber_t *fiber, gravity_closure_t *closure, uint16_t nargs);
+GRAVITY_API void				gravity_fiber_seterror (gravity_fiber_t *fiber, const char *error);
+GRAVITY_API void				gravity_fiber_free (gravity_vm *vm, gravity_fiber_t *fiber);
+GRAVITY_API void				gravity_fiber_blacken (gravity_vm *vm, gravity_fiber_t *fiber);
+GRAVITY_API uint32_t			gravity_fiber_size (gravity_vm *vm, gravity_fiber_t *fiber);
 
 
 // MARK: - INSTANCE -
 // MARK: - INSTANCE -
-GRAVITY_DLL gravity_instance_t	*gravity_instance_new (gravity_vm *vm, gravity_class_t *c);
-GRAVITY_DLL gravity_instance_t	*gravity_instance_dup (gravity_vm *vm, gravity_instance_t *src);
-GRAVITY_DLL void				gravity_instance_setivar (gravity_instance_t *instance, uint32_t idx, gravity_value_t value);
-GRAVITY_DLL void				gravity_instance_setxdata (gravity_instance_t *i, void *xdata);
-GRAVITY_DLL void				gravity_instance_free (gravity_vm *vm, gravity_instance_t *i);
-GRAVITY_DLL gravity_closure_t	*gravity_instance_lookup_event (gravity_instance_t *i, const char *name);
-GRAVITY_DLL void				gravity_instance_blacken (gravity_vm *vm, gravity_instance_t *i);
-GRAVITY_DLL uint32_t			gravity_instance_size (gravity_vm *vm, gravity_instance_t *i);
+GRAVITY_API gravity_instance_t	*gravity_instance_new (gravity_vm *vm, gravity_class_t *c);
+GRAVITY_API gravity_instance_t	*gravity_instance_dup (gravity_vm *vm, gravity_instance_t *src);
+GRAVITY_API void				gravity_instance_setivar (gravity_instance_t *instance, uint32_t idx, gravity_value_t value);
+GRAVITY_API void				gravity_instance_setxdata (gravity_instance_t *i, void *xdata);
+GRAVITY_API void				gravity_instance_free (gravity_vm *vm, gravity_instance_t *i);
+GRAVITY_API gravity_closure_t	*gravity_instance_lookup_event (gravity_instance_t *i, const char *name);
+GRAVITY_API void				gravity_instance_blacken (gravity_vm *vm, gravity_instance_t *i);
+GRAVITY_API uint32_t			gravity_instance_size (gravity_vm *vm, gravity_instance_t *i);
 
 
 // MARK: - VALUE -
 // MARK: - VALUE -
-GRAVITY_DLL bool				gravity_value_equals (gravity_value_t v1, gravity_value_t v2);
-GRAVITY_DLL uint32_t			gravity_value_hash (gravity_value_t value);
-GRAVITY_DLL gravity_class_t		*gravity_value_getclass (gravity_value_t v);
-GRAVITY_DLL gravity_class_t		*gravity_value_getsuper (gravity_value_t v);
-GRAVITY_DLL void				gravity_value_free (gravity_vm *vm, gravity_value_t v);
-GRAVITY_DLL void				gravity_value_serialize (gravity_value_t v, json_t *json);
-GRAVITY_DLL void				gravity_value_dump (gravity_value_t v, char *buffer, uint16_t len);
-GRAVITY_DLL bool				gravity_value_isobject (gravity_value_t v);
-GRAVITY_DLL void				*gravity_value_xdata (gravity_value_t value);
-GRAVITY_DLL void				gravity_value_blacken (gravity_vm *vm, gravity_value_t v);
-GRAVITY_DLL uint32_t			gravity_value_size (gravity_vm *vm, gravity_value_t v);
+GRAVITY_API bool				gravity_value_equals (gravity_value_t v1, gravity_value_t v2);
+GRAVITY_API uint32_t			gravity_value_hash (gravity_value_t value);
+GRAVITY_API gravity_class_t		*gravity_value_getclass (gravity_value_t v);
+GRAVITY_API gravity_class_t		*gravity_value_getsuper (gravity_value_t v);
+GRAVITY_API void				gravity_value_free (gravity_vm *vm, gravity_value_t v);
+GRAVITY_API void				gravity_value_serialize (gravity_value_t v, json_t *json);
+GRAVITY_API void				gravity_value_dump (gravity_value_t v, char *buffer, uint16_t len);
+GRAVITY_API bool				gravity_value_isobject (gravity_value_t v);
+GRAVITY_API void				*gravity_value_xdata (gravity_value_t value);
+GRAVITY_API void				gravity_value_blacken (gravity_vm *vm, gravity_value_t v);
+GRAVITY_API uint32_t			gravity_value_size (gravity_vm *vm, gravity_value_t v);
 
 
 // MARK: - OBJECT -
 // MARK: - OBJECT -
-GRAVITY_DLL void				gravity_object_serialize (gravity_object_t *obj, json_t *json);
-GRAVITY_DLL bool				gravity_object_deserialize (gravity_vm *vm, json_value *entry, gravity_object_t **obj);
-GRAVITY_DLL void				gravity_object_free (gravity_vm *vm, gravity_object_t *obj);
-GRAVITY_DLL void				gravity_object_blacken (gravity_vm *vm, gravity_object_t *obj);
-GRAVITY_DLL uint32_t			gravity_object_size (gravity_vm *vm, gravity_object_t *obj);
-GRAVITY_DLL const char			*gravity_object_debug (gravity_object_t *obj);
+GRAVITY_API void				gravity_object_serialize (gravity_object_t *obj, json_t *json);
+GRAVITY_API bool				gravity_object_deserialize (gravity_vm *vm, json_value *entry, gravity_object_t **obj);
+GRAVITY_API void				gravity_object_free (gravity_vm *vm, gravity_object_t *obj);
+GRAVITY_API void				gravity_object_blacken (gravity_vm *vm, gravity_object_t *obj);
+GRAVITY_API uint32_t			gravity_object_size (gravity_vm *vm, gravity_object_t *obj);
+GRAVITY_API const char			*gravity_object_debug (gravity_object_t *obj);
 
 
 // MARK: - LIST -
 // MARK: - LIST -
-GRAVITY_DLL gravity_list_t		*gravity_list_new (gravity_vm *vm, uint32_t n);
-GRAVITY_DLL gravity_list_t		*gravity_list_from_array (gravity_vm *vm, uint32_t n, gravity_value_t *p);
-GRAVITY_DLL void				gravity_list_free (gravity_vm *vm, gravity_list_t *list);
-GRAVITY_DLL void				gravity_list_append_list (gravity_vm *vm, gravity_list_t *list1, gravity_list_t *list2);
-GRAVITY_DLL void				gravity_list_blacken (gravity_vm *vm, gravity_list_t *list);
-GRAVITY_DLL uint32_t			gravity_list_size (gravity_vm *vm, gravity_list_t *list);
+GRAVITY_API gravity_list_t		*gravity_list_new (gravity_vm *vm, uint32_t n);
+GRAVITY_API gravity_list_t		*gravity_list_from_array (gravity_vm *vm, uint32_t n, gravity_value_t *p);
+GRAVITY_API void				gravity_list_free (gravity_vm *vm, gravity_list_t *list);
+GRAVITY_API void				gravity_list_append_list (gravity_vm *vm, gravity_list_t *list1, gravity_list_t *list2);
+GRAVITY_API void				gravity_list_blacken (gravity_vm *vm, gravity_list_t *list);
+GRAVITY_API uint32_t			gravity_list_size (gravity_vm *vm, gravity_list_t *list);
 
 
 // MARK: - MAP -
 // MARK: - MAP -
-GRAVITY_DLL gravity_map_t		*gravity_map_new (gravity_vm *vm, uint32_t n);
-GRAVITY_DLL void				gravity_map_free (gravity_vm *vm, gravity_map_t *map);
-GRAVITY_DLL void				gravity_map_append_map (gravity_vm *vm, gravity_map_t *map1, gravity_map_t *map2);
-GRAVITY_DLL void				gravity_map_insert (gravity_vm *vm, gravity_map_t *map, gravity_value_t key, gravity_value_t value);
-GRAVITY_DLL void				gravity_map_blacken (gravity_vm *vm, gravity_map_t *map);
-GRAVITY_DLL uint32_t			gravity_map_size (gravity_vm *vm, gravity_map_t *map);
+GRAVITY_API gravity_map_t		*gravity_map_new (gravity_vm *vm, uint32_t n);
+GRAVITY_API void				gravity_map_free (gravity_vm *vm, gravity_map_t *map);
+GRAVITY_API void				gravity_map_append_map (gravity_vm *vm, gravity_map_t *map1, gravity_map_t *map2);
+GRAVITY_API void				gravity_map_insert (gravity_vm *vm, gravity_map_t *map, gravity_value_t key, gravity_value_t value);
+GRAVITY_API void				gravity_map_blacken (gravity_vm *vm, gravity_map_t *map);
+GRAVITY_API uint32_t			gravity_map_size (gravity_vm *vm, gravity_map_t *map);
 
 
 // MARK: - RANGE -
 // MARK: - RANGE -
-GRAVITY_DLL gravity_range_t		*gravity_range_new (gravity_vm *vm, gravity_int_t from, gravity_int_t to, bool inclusive);
-GRAVITY_DLL void				gravity_range_free (gravity_vm *vm, gravity_range_t *range);
-GRAVITY_DLL void				gravity_range_blacken (gravity_vm *vm, gravity_range_t *range);
-GRAVITY_DLL uint32_t			gravity_range_size (gravity_vm *vm, gravity_range_t *range);
+GRAVITY_API gravity_range_t		*gravity_range_new (gravity_vm *vm, gravity_int_t from, gravity_int_t to, bool inclusive);
+GRAVITY_API void				gravity_range_free (gravity_vm *vm, gravity_range_t *range);
+GRAVITY_API void				gravity_range_blacken (gravity_vm *vm, gravity_range_t *range);
+GRAVITY_API uint32_t			gravity_range_size (gravity_vm *vm, gravity_range_t *range);
 
 
 /// MARK: - STRING -
 /// MARK: - STRING -
-GRAVITY_DLL gravity_value_t		gravity_string_to_value (gravity_vm *vm, const char *s, uint32_t len);
-GRAVITY_DLL gravity_string_t	*gravity_string_new (gravity_vm *vm, char *s, uint32_t len, uint32_t alloc);
+GRAVITY_API gravity_value_t		gravity_string_to_value (gravity_vm *vm, const char *s, uint32_t len);
+GRAVITY_API gravity_string_t	*gravity_string_new (gravity_vm *vm, char *s, uint32_t len, uint32_t alloc);
             inline void			gravity_string_set (gravity_string_t *obj, char *s, uint32_t len);
             inline void			gravity_string_set (gravity_string_t *obj, char *s, uint32_t len);
-GRAVITY_DLL void				gravity_string_free (gravity_vm *vm, gravity_string_t *value);
-GRAVITY_DLL void				gravity_string_blacken (gravity_vm *vm, gravity_string_t *string);
-GRAVITY_DLL uint32_t			gravity_string_size (gravity_vm *vm, gravity_string_t *string);
+GRAVITY_API void				gravity_string_free (gravity_vm *vm, gravity_string_t *value);
+GRAVITY_API void				gravity_string_blacken (gravity_vm *vm, gravity_string_t *string);
+GRAVITY_API uint32_t			gravity_string_size (gravity_vm *vm, gravity_string_t *string);
 
 
 // MARK: - CALLBACKS -
 // MARK: - CALLBACKS -
 // HASH FREE CALLBACK FUNCTION
 // HASH FREE CALLBACK FUNCTION
-GRAVITY_DLL void				gravity_hash_keyvaluefree (gravity_hash_t *table, gravity_value_t key, gravity_value_t value, void *data);
-GRAVITY_DLL void				gravity_hash_keyfree (gravity_hash_t *table, gravity_value_t key, gravity_value_t value, void *data);
-GRAVITY_DLL void				gravity_hash_valuefree (gravity_hash_t *table, gravity_value_t key, gravity_value_t value, void *data);
+GRAVITY_API void				gravity_hash_keyvaluefree (gravity_hash_t *table, gravity_value_t key, gravity_value_t value, void *data);
+GRAVITY_API void				gravity_hash_keyfree (gravity_hash_t *table, gravity_value_t key, gravity_value_t value, void *data);
+GRAVITY_API void				gravity_hash_valuefree (gravity_hash_t *table, gravity_value_t key, gravity_value_t value, void *data);
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }