// joycub - an interpeter for the programming language Joy
// 
// (c) 2004-2006 Sergey Zubkov 
// $Id: builtins.h,v 1.8 2006/02/27 18:44:01 cubbi Exp $
#include <vector>
#include "reference.h"
#include "stack.h"

void op_id			(JC_Stack &);
void op_pop			(JC_Stack &);
void op_swap		(JC_Stack &);
void op_rollup		(JC_Stack &);
void op_rolldown	(JC_Stack &);
void op_rotate		(JC_Stack &);
void op_sign		(JC_Stack &);
void op_plus		(JC_Stack &);
void op_minus		(JC_Stack &);
void op_dup			(JC_Stack &);
void op_dupd		(JC_Stack &);
void op_mult		(JC_Stack &);
void op_divide		(JC_Stack &);
void op_pred		(JC_Stack &);
void op_succ		(JC_Stack &);
void op_dip			(JC_Stack &);
void op_i			(JC_Stack &);
void op_branch		(JC_Stack &);
void op_small		(JC_Stack &);
void op_binrec		(JC_Stack &);
void op_linrec		(JC_Stack &);
void op_primrec		(JC_Stack &);
void op_size		(JC_Stack &);
void op_ge			(JC_Stack &);
void op_gt			(JC_Stack &);
void op_le			(JC_Stack &);
void op_lt			(JC_Stack &);
void op_ne			(JC_Stack &);
void op_eq			(JC_Stack &);
void op_at			(JC_Stack &);
void op_has			(JC_Stack &);
void op_drop		(JC_Stack &);
void op_take		(JC_Stack &);
void op_cons		(JC_Stack &);
void op_uncons		(JC_Stack &);
void op_unstack		(JC_Stack &);
void op_stack		(JC_Stack &);
void op_concat		(JC_Stack &);
void op_while 		(JC_Stack &);
void op_times 		(JC_Stack &);
void op_tailrec		(JC_Stack &);
void op_condlinrec	(JC_Stack &);
void op_condnestrec	(JC_Stack &);
void op_construct	(JC_Stack &);
void op_cond		(JC_Stack &);
void op_dot			(JC_Stack &);
void op_put			(JC_Stack &);
void op_get			(JC_Stack &);
void op_putch		(JC_Stack &);
void op_format		(JC_Stack &);
void op_formatf		(JC_Stack &);
void op_rem			(JC_Stack &);
void op_div			(JC_Stack &);
void op_nullary		(JC_Stack &);
void op_unary		(JC_Stack &);
void op_app1		(JC_Stack &);
void op_app11		(JC_Stack &);
void op_app12		(JC_Stack &);
void op_unary2		(JC_Stack &);
void op_unary3		(JC_Stack &);
void op_unary4		(JC_Stack &);
void op_step		(JC_Stack &);
void op_map			(JC_Stack &);
void op_fold		(JC_Stack &);
void op_split		(JC_Stack &);
void op_filter		(JC_Stack &);
void op_infra		(JC_Stack &);
void op_include		(JC_Stack &);
void op_logical		(JC_Stack &);
void op_integer		(JC_Stack &);
void op_char		(JC_Stack &);
void op_set			(JC_Stack &);
void op_string		(JC_Stack &);
void op_list		(JC_Stack &);
void op_leaf		(JC_Stack &);
void op_user		(JC_Stack &);
void op_float		(JC_Stack &);
void op_file		(JC_Stack &);
void op_time		(JC_Stack &);
void op_localtime	(JC_Stack &);
void op_gmtime		(JC_Stack &);
void op_mktime		(JC_Stack &);
void op_strftime	(JC_Stack &);
void op_maxint		(JC_Stack &);
void op_intern		(JC_Stack &);
void op_name		(JC_Stack &);
void op_body		(JC_Stack &);
void op_null		(JC_Stack &);
void op_ord			(JC_Stack &);
void op_chr			(JC_Stack &);
void op_or			(JC_Stack &);
void op_xor			(JC_Stack &);
void op_and			(JC_Stack &);
void op_not			(JC_Stack &);
void op_setsize		(JC_Stack &);
void op_sqrt		(JC_Stack &);
void op_pow			(JC_Stack &);
void op_sin			(JC_Stack &);
void op_sinh		(JC_Stack &);
void op_cos			(JC_Stack &);
void op_cosh		(JC_Stack &);
void op_tan			(JC_Stack &);
void op_tanh		(JC_Stack &);
void op_asin		(JC_Stack &);
void op_acos		(JC_Stack &);
void op_atan		(JC_Stack &);
void op_atan2		(JC_Stack &);
void op_trunc		(JC_Stack &);
void op_setecho		(JC_Stack &);
void op_echo		(JC_Stack &);
void op_clock		(JC_Stack &);
void op_rand		(JC_Stack &);
void op_srand		(JC_Stack &);
void op_choice		(JC_Stack &);
void op_ceil		(JC_Stack &);
void op_exp			(JC_Stack &);
void op_floor		(JC_Stack &);
void op_frexp		(JC_Stack &);
void op_ldexp		(JC_Stack &);
void op_log			(JC_Stack &);
void op_log10		(JC_Stack &);
void op_modf		(JC_Stack &);
void op_max 		(JC_Stack &);
void op_min 		(JC_Stack &);
void op_stdin 		(JC_Stack &);
void op_stdout 		(JC_Stack &);
void op_stderr 		(JC_Stack &);
void op_strtol 		(JC_Stack &);
void op_strtod 		(JC_Stack &);
void op_fclose		(JC_Stack &);
void op_feof		(JC_Stack &);
void op_ferror		(JC_Stack &);
void op_fflush		(JC_Stack &);
void op_fgetch		(JC_Stack &);
void op_fgets		(JC_Stack &);
void op_fopen		(JC_Stack &);
void op_fread		(JC_Stack &);
void op_fwrite		(JC_Stack &);
void op_fremove		(JC_Stack &);
void op_frename		(JC_Stack &);
void op_fput		(JC_Stack &);
void op_fputch		(JC_Stack &);
void op_fseek		(JC_Stack &);
void op_ftell		(JC_Stack &);
void op_compare		(JC_Stack &);
void op_treestep	(JC_Stack &);
void op_treerec		(JC_Stack &);
void op_treegenrec	(JC_Stack &);
void op_quit		(JC_Stack &);
void op_abort		(JC_Stack &);
void op_getenv		(JC_Stack &);
void op_system		(JC_Stack &);
void op_gc			(JC_Stack &);
void op_nonimpl		(JC_Stack &);
void op_undef		(JC_Stack &);
void op_opcase		(JC_Stack &);
void op_argc		(JC_Stack &);
void op_argv		(JC_Stack &);
void op_case		(JC_Stack &);
void op_equal		(JC_Stack &);
void op_help		(JC_Stack &);
void op_helpdetail	(JC_Stack &);
void op_manual		(JC_Stack &);
