]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/primitives.hpp
audio.engine.test: cleanup using
[factor.git] / vm / primitives.hpp
index a36050323f5ac1a08565b72e92ac1ac44ece09f3..ea45a3faa40d3761b98baf5918e5e86cc785b00e 100644 (file)
-namespace factor
-{
+namespace factor {
 
-#define DECLARE_PRIMITIVE(name) VM_C_API void primitive_##name(factor_vm *parent);
+// Generated with PRIMITIVE in primitives.cpp
 
-/* Generated with PRIMITIVE in primitives.cpp */
-DECLARE_PRIMITIVE(alien_address)
-DECLARE_PRIMITIVE(all_instances)
-DECLARE_PRIMITIVE(array)
-DECLARE_PRIMITIVE(array_to_quotation)
-DECLARE_PRIMITIVE(become)
-DECLARE_PRIMITIVE(bignum_add)
-DECLARE_PRIMITIVE(bignum_and)
-DECLARE_PRIMITIVE(bignum_bitp)
-DECLARE_PRIMITIVE(bignum_divint)
-DECLARE_PRIMITIVE(bignum_divmod)
-DECLARE_PRIMITIVE(bignum_eq)
-DECLARE_PRIMITIVE(bignum_greater)
-DECLARE_PRIMITIVE(bignum_greatereq)
-DECLARE_PRIMITIVE(bignum_less)
-DECLARE_PRIMITIVE(bignum_lesseq)
-DECLARE_PRIMITIVE(bignum_log2)
-DECLARE_PRIMITIVE(bignum_mod)
-DECLARE_PRIMITIVE(bignum_multiply)
-DECLARE_PRIMITIVE(bignum_not)
-DECLARE_PRIMITIVE(bignum_or)
-DECLARE_PRIMITIVE(bignum_shift)
-DECLARE_PRIMITIVE(bignum_subtract)
-DECLARE_PRIMITIVE(bignum_to_fixnum)
-DECLARE_PRIMITIVE(bignum_to_float)
-DECLARE_PRIMITIVE(bignum_xor)
-DECLARE_PRIMITIVE(bits_double)
-DECLARE_PRIMITIVE(bits_float)
-DECLARE_PRIMITIVE(byte_array)
-DECLARE_PRIMITIVE(byte_array_to_bignum)
-DECLARE_PRIMITIVE(call_clear)
-DECLARE_PRIMITIVE(callback)
-DECLARE_PRIMITIVE(callstack)
-DECLARE_PRIMITIVE(callstack_to_array)
-DECLARE_PRIMITIVE(check_datastack)
-DECLARE_PRIMITIVE(clone)
-DECLARE_PRIMITIVE(code_blocks)
-DECLARE_PRIMITIVE(code_room)
-DECLARE_PRIMITIVE(compact_gc)
-DECLARE_PRIMITIVE(compute_identity_hashcode)
-DECLARE_PRIMITIVE(context_object)
-DECLARE_PRIMITIVE(data_room)
-DECLARE_PRIMITIVE(datastack)
-DECLARE_PRIMITIVE(die)
-DECLARE_PRIMITIVE(disable_gc_events)
-DECLARE_PRIMITIVE(dispatch_stats)
-DECLARE_PRIMITIVE(displaced_alien)
-DECLARE_PRIMITIVE(dlclose)
-DECLARE_PRIMITIVE(dll_validp)
-DECLARE_PRIMITIVE(dlopen)
-DECLARE_PRIMITIVE(dlsym)
-DECLARE_PRIMITIVE(double_bits)
-DECLARE_PRIMITIVE(enable_gc_events)
-DECLARE_PRIMITIVE(existsp)
-DECLARE_PRIMITIVE(exit)
-DECLARE_PRIMITIVE(fclose)
-DECLARE_PRIMITIVE(fflush)
-DECLARE_PRIMITIVE(fgetc)
-DECLARE_PRIMITIVE(fixnum_divint)
-DECLARE_PRIMITIVE(fixnum_divmod)
-DECLARE_PRIMITIVE(fixnum_shift)
-DECLARE_PRIMITIVE(fixnum_to_bignum)
-DECLARE_PRIMITIVE(fixnum_to_float)
-DECLARE_PRIMITIVE(float_add)
-DECLARE_PRIMITIVE(float_bits)
-DECLARE_PRIMITIVE(float_divfloat)
-DECLARE_PRIMITIVE(float_eq)
-DECLARE_PRIMITIVE(float_greater)
-DECLARE_PRIMITIVE(float_greatereq)
-DECLARE_PRIMITIVE(float_less)
-DECLARE_PRIMITIVE(float_lesseq)
-DECLARE_PRIMITIVE(float_mod)
-DECLARE_PRIMITIVE(float_multiply)
-DECLARE_PRIMITIVE(float_subtract)
-DECLARE_PRIMITIVE(float_to_bignum)
-DECLARE_PRIMITIVE(float_to_fixnum)
-DECLARE_PRIMITIVE(float_to_str)
-DECLARE_PRIMITIVE(fopen)
-DECLARE_PRIMITIVE(fputc)
-DECLARE_PRIMITIVE(fread)
-DECLARE_PRIMITIVE(fseek)
-DECLARE_PRIMITIVE(ftell)
-DECLARE_PRIMITIVE(full_gc)
-DECLARE_PRIMITIVE(fwrite)
-DECLARE_PRIMITIVE(identity_hashcode)
-DECLARE_PRIMITIVE(innermost_stack_frame_executing)
-DECLARE_PRIMITIVE(innermost_stack_frame_scan)
-DECLARE_PRIMITIVE(jit_compile)
-DECLARE_PRIMITIVE(load_locals)
-DECLARE_PRIMITIVE(lookup_method)
-DECLARE_PRIMITIVE(mega_cache_miss)
-DECLARE_PRIMITIVE(minor_gc)
-DECLARE_PRIMITIVE(modify_code_heap)
-DECLARE_PRIMITIVE(nano_count)
-DECLARE_PRIMITIVE(optimized_p)
-DECLARE_PRIMITIVE(profiling)
-DECLARE_PRIMITIVE(quot_compiled_p)
-DECLARE_PRIMITIVE(quotation_code)
-DECLARE_PRIMITIVE(reset_dispatch_stats)
-DECLARE_PRIMITIVE(resize_array)
-DECLARE_PRIMITIVE(resize_byte_array)
-DECLARE_PRIMITIVE(resize_string)
-DECLARE_PRIMITIVE(retainstack)
-DECLARE_PRIMITIVE(save_image)
-DECLARE_PRIMITIVE(save_image_and_exit)
-DECLARE_PRIMITIVE(set_context_object)
-DECLARE_PRIMITIVE(set_datastack)
-DECLARE_PRIMITIVE(set_innermost_stack_frame_quot)
-DECLARE_PRIMITIVE(set_retainstack)
-DECLARE_PRIMITIVE(set_slot)
-DECLARE_PRIMITIVE(set_special_object)
-DECLARE_PRIMITIVE(set_string_nth_fast)
-DECLARE_PRIMITIVE(set_string_nth_slow)
-DECLARE_PRIMITIVE(size)
-DECLARE_PRIMITIVE(sleep)
-DECLARE_PRIMITIVE(special_object)
-DECLARE_PRIMITIVE(string)
-DECLARE_PRIMITIVE(string_nth)
-DECLARE_PRIMITIVE(strip_stack_traces)
-DECLARE_PRIMITIVE(system_micros)
-DECLARE_PRIMITIVE(tuple)
-DECLARE_PRIMITIVE(tuple_boa)
-DECLARE_PRIMITIVE(unimplemented)
-DECLARE_PRIMITIVE(uninitialized_byte_array)
-DECLARE_PRIMITIVE(word)
-DECLARE_PRIMITIVE(word_code)
-DECLARE_PRIMITIVE(wrapper)
+#define EACH_PRIMITIVE(_)                                                      \
+  _(alien_address) _(all_instances) _(array) _(array_to_quotation) _(become)   \
+      _(bignum_add) _(bignum_and) _(bignum_bitp) _(bignum_divint)              \
+      _(bignum_divmod) _(bignum_eq) _(bignum_greater) _(bignum_greatereq)      \
+      _(bignum_less) _(bignum_lesseq) _(bignum_log2) _(bignum_mod)             \
+      _(bignum_gcd) _(bignum_multiply) _(bignum_not) _(bignum_or)              \
+      _(bignum_shift) _(bignum_subtract) _(bignum_to_fixnum)                   \
+      _(bignum_to_fixnum_strict) _(bignum_xor) _(bits_double) _(bits_float)    \
+      _(byte_array) _(callback) _(callback_room)                               \
+      _(callstack_bounds) _(callstack_for) _(callstack_to_array)               \
+      _(check_datastack) _(clone) _(code_blocks) _(code_room)                  \
+      _(compact_gc) _(compute_identity_hashcode) _(context_object)             \
+      _(context_object_for) _(current_callback) _(data_room)                   \
+      _(datastack_for) _(die) _(disable_ctrl_break) _(disable_gc_events)       \
+      _(dispatch_stats)                                                        \
+      _(displaced_alien) _(dlclose) _(dll_validp) _(dlopen) _(dlsym)           \
+      _(dlsym_raw) _(double_bits) _(enable_ctrl_break) _(enable_gc_events)     \
+      _(existsp) _(exit)                                                       \
+      _(fclose) _(fflush) _(fgetc) _(fixnum_divint) _(fixnum_divmod)           \
+      _(fixnum_shift) _(fixnum_to_bignum) _(fixnum_to_float) _(float_add)      \
+      _(float_bits) _(float_divfloat) _(float_eq) _(float_greater)             \
+      _(float_greatereq) _(float_less) _(float_lesseq) _(float_multiply)       \
+      _(float_subtract) _(float_to_bignum) _(float_to_fixnum) _(fopen)         \
+      _(format_float) _(fputc) _(fread) _(free_callback) _(fseek) _(ftell)     \
+      _(full_gc) _(fwrite) _(get_samples) _(identity_hashcode)                 \
+      _(innermost_stack_frame_executing) _(innermost_stack_frame_scan)         \
+      _(jit_compile) _(load_locals) _(lookup_method) _(mega_cache_miss)        \
+      _(minor_gc) _(modify_code_heap) _(nano_count) _(quotation_code)          \
+      _(quotation_compiled_p) _(reset_dispatch_stats) _(resize_array)          \
+      _(resize_byte_array) _(resize_string) _(retainstack_for)                 \
+      _(save_image) _(set_context_object) _(set_datastack)                     \
+      _(set_innermost_stack_frame_quotation) _(set_profiling)                  \
+      _(set_retainstack) _(set_slot) _(set_special_object)                     \
+      _(set_string_nth_fast) _(size) _(sleep) _(special_object) _(string)      \
+      _(strip_stack_traces) _(tuple) _(tuple_boa)                              \
+      _(uninitialized_byte_array) _(word) _(word_code) _(word_optimized_p)     \
+      _(wrapper)
 
-/* These are generated with macros in alien.cpp, and not with PRIMIIVE in
-primitives.cpp */
-DECLARE_PRIMITIVE(alien_signed_cell)
-DECLARE_PRIMITIVE(set_alien_signed_cell)
-DECLARE_PRIMITIVE(alien_unsigned_cell)
-DECLARE_PRIMITIVE(set_alien_unsigned_cell)
-DECLARE_PRIMITIVE(alien_signed_8)
-DECLARE_PRIMITIVE(set_alien_signed_8)
-DECLARE_PRIMITIVE(alien_unsigned_8)
-DECLARE_PRIMITIVE(set_alien_unsigned_8)
-DECLARE_PRIMITIVE(alien_signed_4)
-DECLARE_PRIMITIVE(set_alien_signed_4)
-DECLARE_PRIMITIVE(alien_unsigned_4)
-DECLARE_PRIMITIVE(set_alien_unsigned_4)
-DECLARE_PRIMITIVE(alien_signed_2)
-DECLARE_PRIMITIVE(set_alien_signed_2)
-DECLARE_PRIMITIVE(alien_unsigned_2)
-DECLARE_PRIMITIVE(set_alien_unsigned_2)
-DECLARE_PRIMITIVE(alien_signed_1)
-DECLARE_PRIMITIVE(set_alien_signed_1)
-DECLARE_PRIMITIVE(alien_unsigned_1)
-DECLARE_PRIMITIVE(set_alien_unsigned_1)
-DECLARE_PRIMITIVE(alien_float)
-DECLARE_PRIMITIVE(set_alien_float)
-DECLARE_PRIMITIVE(alien_double)
-DECLARE_PRIMITIVE(set_alien_double)
-DECLARE_PRIMITIVE(alien_cell)
-DECLARE_PRIMITIVE(set_alien_cell)
+#define EACH_ALIEN_PRIMITIVE(_)                               \
+      _(signed_cell, fixnum, from_signed_cell, to_fixnum)     \
+      _(unsigned_cell, cell, from_unsigned_cell, to_cell)     \
+      _(signed_8, int64_t, from_signed_8, to_signed_8)        \
+      _(unsigned_8, uint64_t, from_unsigned_8, to_unsigned_8) \
+      _(signed_4, int32_t, from_signed_cell, to_fixnum)       \
+      _(unsigned_4, uint32_t, from_unsigned_cell, to_cell)    \
+      _(signed_2, int16_t, from_signed_cell, to_fixnum)       \
+      _(unsigned_2, uint16_t, from_unsigned_cell, to_cell)    \
+      _(signed_1, int8_t, from_signed_cell, to_fixnum)        \
+      _(unsigned_1, uint8_t, from_unsigned_cell, to_cell)     \
+      _(float, float, allot_float, to_float)                  \
+      _(double, double, allot_float, to_double)               \
+      _(cell, cell, allot_alien, pinned_alien_offset)
 
+#define DECLARE_PRIMITIVE(name) \
+  VM_C_API void primitive_##name(factor_vm * parent);
+
+#define DECLARE_ALIEN_PRIMITIVE(name, type, from, to) \
+  DECLARE_PRIMITIVE(alien_##name)                     \
+  DECLARE_PRIMITIVE(set_alien_##name)
+
+EACH_PRIMITIVE(DECLARE_PRIMITIVE)
+EACH_ALIEN_PRIMITIVE(DECLARE_ALIEN_PRIMITIVE)
 }