LispBM
Macros | Functions | Variables
fundamental.c File Reference
#include <lbm_types.h>
#include "symrepr.h"
#include "stack.h"
#include "heap.h"
#include "eval_cps.h"
#include "env.h"
#include "lbm_utils.h"
#include "lbm_custom_type.h"
#include "lbm_constants.h"
#include "fundamental.h"
#include "lbm_defrag_mem.h"
#include <stdio.h>
#include <math.h>
Include dependency graph for fundamental.c:

Macros

#define PROMOTE_SWAP(t, a, b)
 
#define PROMOTE(t, a, b)
 
#define IS_NUMBER   lbm_is_number
 

Functions

static lbm_uint mul2 (lbm_uint a, lbm_uint b)
 
static lbm_uint div2 (lbm_uint a, lbm_uint b)
 
static lbm_uint mod2 (lbm_uint a, lbm_uint b)
 
static lbm_uint sub2 (lbm_uint a, lbm_uint b)
 
static bool bytearray_equality (lbm_value a, lbm_value b)
 
static bool array_struct_equality (lbm_value a, lbm_value b)
 
bool struct_eq (lbm_value a, lbm_value b)
 
static int compare_num (lbm_uint a, lbm_uint b)
 
static void array_create (lbm_value *args, lbm_uint nargs, lbm_value *result)
 
static lbm_value assoc_lookup (lbm_value key, lbm_value assoc)
 
static lbm_value cossa_lookup (lbm_value key, lbm_value assoc)
 
static lbm_value fundamental_add (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_sub (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_mul (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_div (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_mod (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_eq (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_not_eq (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_numeq (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_num_not_eq (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_leq (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_geq (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_lt (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_gt (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_not (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_gc (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_self (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_set_mailbox_size (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_cons (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_car (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_cdr (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_list (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_append (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_undefine (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_buf_create (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_symbol_to_string (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_string_to_symbol (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_symbol_to_uint (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_uint_to_symbol (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_set_car (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_set_cdr (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_set_ix (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_assoc (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_acons (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_set_assoc (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_cossa (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_ix (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_to_i (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_to_i32 (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_to_u (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_to_u32 (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_to_float (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_to_i64 (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_to_u64 (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_to_double (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_to_byte (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_shl (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_shr (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_bitwise_and (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_bitwise_or (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_bitwise_xor (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_bitwise_not (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_custom_destruct (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_type_of (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_list_length (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_range (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_reg_event_handler (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_take (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_drop (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_mkarray (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_array_to_list (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_list_to_array (lbm_value *args, lbm_uint nargs, eval_context_t *ctx)
 
static lbm_value fundamental_dm_create (lbm_value *args, lbm_uint argn, eval_context_t *ctx)
 
static lbm_value fundamental_dm_alloc (lbm_value *args, lbm_uint argn, eval_context_t *ctx)
 
static lbm_value fundamental_is_list (lbm_value *args, lbm_uint argn, eval_context_t *ctx)
 
static lbm_value fundamental_is_number (lbm_value *args, lbm_uint argn, eval_context_t *ctx)
 

Variables

const fundamental_fun fundamental_table []
 

Macro Definition Documentation

◆ IS_NUMBER

#define IS_NUMBER   lbm_is_number

◆ PROMOTE

#define PROMOTE (   t,
  a,
 
)
Value:
lbm_uint t_b = lbm_type_of_functional(b); \
if (t < t_b) { \
t = t_b; \
}

◆ PROMOTE_SWAP

#define PROMOTE_SWAP (   t,
  a,
 
)
Value:
lbm_value tmp = a; \
a = b; \
b = tmp; \
} \

Function Documentation

◆ array_create()

static void array_create ( lbm_value args,
lbm_uint  nargs,
lbm_value result 
)
static

◆ array_struct_equality()

static bool array_struct_equality ( lbm_value  a,
lbm_value  b 
)
static

◆ assoc_lookup()

static lbm_value assoc_lookup ( lbm_value  key,
lbm_value  assoc 
)
static

◆ bytearray_equality()

static bool bytearray_equality ( lbm_value  a,
lbm_value  b 
)
static

◆ compare_num()

static int compare_num ( lbm_uint  a,
lbm_uint  b 
)
static

◆ cossa_lookup()

static lbm_value cossa_lookup ( lbm_value  key,
lbm_value  assoc 
)
static

◆ div2()

static lbm_uint div2 ( lbm_uint  a,
lbm_uint  b 
)
static

◆ fundamental_acons()

static lbm_value fundamental_acons ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_add()

static lbm_value fundamental_add ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_append()

static lbm_value fundamental_append ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_array_to_list()

static lbm_value fundamental_array_to_list ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_assoc()

static lbm_value fundamental_assoc ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_bitwise_and()

static lbm_value fundamental_bitwise_and ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_bitwise_not()

static lbm_value fundamental_bitwise_not ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_bitwise_or()

static lbm_value fundamental_bitwise_or ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_bitwise_xor()

static lbm_value fundamental_bitwise_xor ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_buf_create()

static lbm_value fundamental_buf_create ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_car()

static lbm_value fundamental_car ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_cdr()

static lbm_value fundamental_cdr ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_cons()

static lbm_value fundamental_cons ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_cossa()

static lbm_value fundamental_cossa ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_custom_destruct()

static lbm_value fundamental_custom_destruct ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_div()

static lbm_value fundamental_div ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_dm_alloc()

static lbm_value fundamental_dm_alloc ( lbm_value args,
lbm_uint  argn,
eval_context_t ctx 
)
static

◆ fundamental_dm_create()

static lbm_value fundamental_dm_create ( lbm_value args,
lbm_uint  argn,
eval_context_t ctx 
)
static

◆ fundamental_drop()

static lbm_value fundamental_drop ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_eq()

static lbm_value fundamental_eq ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_gc()

static lbm_value fundamental_gc ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_geq()

static lbm_value fundamental_geq ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_gt()

static lbm_value fundamental_gt ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_is_list()

static lbm_value fundamental_is_list ( lbm_value args,
lbm_uint  argn,
eval_context_t ctx 
)
static

◆ fundamental_is_number()

static lbm_value fundamental_is_number ( lbm_value args,
lbm_uint  argn,
eval_context_t ctx 
)
static

◆ fundamental_ix()

static lbm_value fundamental_ix ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_leq()

static lbm_value fundamental_leq ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_list()

static lbm_value fundamental_list ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_list_length()

static lbm_value fundamental_list_length ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_list_to_array()

static lbm_value fundamental_list_to_array ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_lt()

static lbm_value fundamental_lt ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_mkarray()

static lbm_value fundamental_mkarray ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_mod()

static lbm_value fundamental_mod ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_mul()

static lbm_value fundamental_mul ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_not()

static lbm_value fundamental_not ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_not_eq()

static lbm_value fundamental_not_eq ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_num_not_eq()

static lbm_value fundamental_num_not_eq ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_numeq()

static lbm_value fundamental_numeq ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_range()

static lbm_value fundamental_range ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_reg_event_handler()

static lbm_value fundamental_reg_event_handler ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_self()

static lbm_value fundamental_self ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_set_assoc()

static lbm_value fundamental_set_assoc ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_set_car()

static lbm_value fundamental_set_car ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_set_cdr()

static lbm_value fundamental_set_cdr ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_set_ix()

static lbm_value fundamental_set_ix ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_set_mailbox_size()

static lbm_value fundamental_set_mailbox_size ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_shl()

static lbm_value fundamental_shl ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_shr()

static lbm_value fundamental_shr ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_string_to_symbol()

static lbm_value fundamental_string_to_symbol ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_sub()

static lbm_value fundamental_sub ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_symbol_to_string()

static lbm_value fundamental_symbol_to_string ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_symbol_to_uint()

static lbm_value fundamental_symbol_to_uint ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_take()

static lbm_value fundamental_take ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_to_byte()

static lbm_value fundamental_to_byte ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_to_double()

static lbm_value fundamental_to_double ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_to_float()

static lbm_value fundamental_to_float ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_to_i()

static lbm_value fundamental_to_i ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_to_i32()

static lbm_value fundamental_to_i32 ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_to_i64()

static lbm_value fundamental_to_i64 ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_to_u()

static lbm_value fundamental_to_u ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_to_u32()

static lbm_value fundamental_to_u32 ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_to_u64()

static lbm_value fundamental_to_u64 ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_type_of()

static lbm_value fundamental_type_of ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_uint_to_symbol()

static lbm_value fundamental_uint_to_symbol ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ fundamental_undefine()

static lbm_value fundamental_undefine ( lbm_value args,
lbm_uint  nargs,
eval_context_t ctx 
)
static

◆ mod2()

static lbm_uint mod2 ( lbm_uint  a,
lbm_uint  b 
)
static

◆ mul2()

static lbm_uint mul2 ( lbm_uint  a,
lbm_uint  b 
)
static

◆ struct_eq()

bool struct_eq ( lbm_value  a,
lbm_value  b 
)

◆ sub2()

static lbm_uint sub2 ( lbm_uint  a,
lbm_uint  b 
)
static

Variable Documentation

◆ fundamental_table

const fundamental_fun fundamental_table[]
lbm_type_of_functional
static lbm_type lbm_type_of_functional(lbm_value x)
Definition: heap.h:668