/
driver3.2@242/autoconf/
driver3.2@242/doc/LPC/
driver3.2@242/hosts/
driver3.2@242/hosts/amiga/NetIncl/
driver3.2@242/hosts/amiga/NetIncl/netinet/
driver3.2@242/hosts/amiga/NetIncl/sys/
driver3.2@242/hosts/atari/
driver3.2@242/hosts/fcrypt/
driver3.2@242/mudlib/
driver3.2@242/mudlib/sys/
driver3.2@242/util/
driver3.2@242/util/indent/hosts/next/
driver3.2@242/util/make_docs/
/*
 * This file specifies types and arguments for efuns.
 * An argument can have two different types with the syntax 'type1 | type2'.
 * An argument is marked as optional if it also takes the type 'void'.
 *
 * Look at the end for the list of functions that are optionally available.
 * If you don't want them, simply comment out them. All other functions must
 * remain defined.
 */

%tokens

/*
 * These are token values that needn't have an associated code for the
 * compiled file
 */

if else
case default 
while do for continue
int status string_decl float_decl object closure_decl symbol_decl void mixed
static private no_mask protected public varargs virtual
inherit colon_colon
arrow quoted_aggregate

%codes

/* This code should come first, to detect corrupted code */
	illegal

/*
 * These are the predefined functions that can be accessed from LPC.
 */
	identifier
	return
	string
	number
	float
	mapping
	closure
	symbol
"++"	inc
"--"	dec
"&&"	land
"||"	lor
	assign
"+"	add
	subtract
"*"	multiply
"/"	divide
"<"	lt
">"	gt
"=="	eq
">="	ge
"<="	le
"!="	ne
	break
	switch
	sscanf
	parse_command
	local
"%"	mod
"~"	compl
"&"	and
"|"	or
"^"	xor
"<<"	lsh
">>"	rsh
	catch
"!"	not
".."	range

/*
 * These values are used by the stack machine, and can not be directly
 * called from LPC.
 */
pop_value
dup
call_function_by_address
call_explicit_inherited
push_identifier_lvalue
virtual_variable
push_virtual_variable_lvalue
push_local_variable_lvalue
push_indexed_lvalue
push_rindexed_lvalue
index_lvalue
rindex_lvalue
index
rindex
const0
const1
lbranch
lbranch_when_zero
lbranch_when_non_zero
branch
branch_when_zero
branch_when_non_zero
bbranch_when_zero
bbranch_when_non_zero
simul_efun
return0
"++x"	pre_inc
"--x"	pre_dec
"x++"	post_inc
"x--"	post_dec
cstring0 cstring1 cstring2 cstring3
clit
nclit
void_assign
"(void)+=" void_add_eq
"+="	add_eq
"-="	sub_eq
"/="	div_eq
"*="	mult_eq
"%="	mod_eq
"&="	and_eq
"|="	or_eq
"^="	xor_eq
"<<="	lsh_eq
">>="	rsh_eq
range_lvalue
aggregate
escape
extract2
previous_object0
lambda_cconstant lambda_constant

#ifdef MAPPINGS
m_aggregate
m_caggregate
map_index
push_indexed_map_lvalue
#endif

#ifdef INITIALIZATION_BY___INIT
jump
#endif

%efuns

string *regexp(string *, string);
void add_action(string, void|string, void|int);
void add_worth(int, void|object);
object *all_inventory(object default: F_THIS_OBJECT);
mixed *allocate(int);
mixed assoc(mixed, mixed *, mixed|void, mixed|void);
void break_point();
closure bind_lambda(closure, object default: F_CONST1);
unknown call_other(object|string, string, ...);
void call_out(string|closure, int, void|mixed, ...);
mixed *call_out_info();
string capitalize(string);
int cat(string, void|int, void|int);
string clear_bit(string, int);
object clone_object(string);
int command(string, void|object);
string crypt(string, string|int default: F_CONST0);
string ctime(int default: F_TIME);
object *deep_inventory(object default: F_THIS_OBJECT);
void destruct(object);
void disable_commands();
int ed(void|string, void|string);
void enable_commands();
object environment(void|object);
int exec(object, object);
string *explode(string, string);
string file_name(object default: F_THIS_OBJECT);
int file_size(string);
mixed *filter_array(mixed *, string|closure, ...);
int find_call_out(string);
object find_living(string);
object find_object(string);
object find_player(string);
string function_exists(string, object default: F_THIS_OBJECT);
string implode(string *, string);
int input_to(string, void|int, ...);
mixed insert_alist(mixed, mixed, ...);
int interactive(object default: F_THIS_OBJECT);
mixed *intersect_alist(mixed *,mixed *);
int intp(mixed);
int living(object);
string lower_case(string);
mixed *get_dir(string, int default: F_CONST1);
mixed *map_array(mixed *, string|closure, ...);
int member_array(mixed, mixed *|string);
int member(mixed *|string|mapping, mixed);
int mkdir(string);
void move_object(object|string, object|string);
mixed negate(int|float);
void notify_fail(string);
int objectp(mixed);
mixed *order_alist(mixed *, void|mixed *, ...);
int pointerp(mixed);
object present(object|string, void|object);
string process_string(string);
mixed *query_actions(object|string, int|object|string default: F_CONST1);
string query_host_name();
int query_idle(object);
string query_ip_name(void|object);
string query_ip_number(void|object);
string query_load_average();
object query_snoop(object);
string query_verb();
int random(int);
string read_bytes(string, void|int, void|int);
string read_file(string, void|int, void|int);
int remove_call_out(string);
void remove_interactive(object);
int rename(string, string);
void replace_program(string);
int restore_object(string);
int rm(string);
int rmdir(string);
#if defined(HAVE_GETRUSAGE) || defined(POSIX)
mixed *rusage();
#endif
void save_object(string);
void say(string|mixed *, void|object|object *);
string set_bit(string, int);
int set_heart_beat(int);
int set_light(int);
void set_living_name(string);
void set_this_object(object);
object shadow(object, int);
void shout(string);
int sizeof(mixed *|mapping);
mixed *slice_array F_RANGE (mixed *,int,int);
int snoop(object, void|object);
mixed *sort_array(mixed *,string|closure,object|string default: F_THIS_OBJECT);
int stringp(mixed);
int strlen(string);
int tail(string);
void tell_object(object, string);
void tell_room(object|string, string|mixed *, void|object *);
int test_bit(string, int);
object this_interactive();
object this_object();
object this_player();
void throw(mixed);
int time();
mixed *unique_array(mixed *, string, mixed default: F_CONST0);
object *users();
void write(mixed);
int write_bytes(string, int, string);
int write_file(string, string);

/*
 * List of functions only used in compatibility mode.
 */
#ifndef NATIVE_MODE
string creator(object);
int transfer(object, object|string);
#endif

/*
 * List of functions not used in compat mode.
 */
#ifndef COMPAT_MODE
void export_uid(object);
string geteuid(object default: F_THIS_OBJECT);
string getuid
#ifndef NATIVE_MODE
              F_CREATOR
#endif
                        (object default: F_THIS_OBJECT);
int seteuid(string|int);
#endif

#ifdef MALLOC_malloc
/*
 * This one is needed if you use the old malloc.c, which is no longer
 * supplied. It is called from church.c in the original 2.4.5 mudlib. This
 * call is not needed if malloc.c is not used, and should be removed.
 */
int combine_free_list();
#endif

/*
 *
 * The following functions are optional. Comment out the ones not wanted.
 * Beware that some may be used in mudlib 2.4.5.
 *
 */
#ifdef FLOATS
int floatp(mixed);
#endif

#ifdef MAPPINGS
mapping filter_mapping(mapping, string|closure,  ...);
mapping m_delete(mapping, mixed);
mixed *m_indices(mapping);
int m_sizeof F_SIZEOF (mapping);
mixed *m_values(mapping);
mapping map_mapping(mapping, string|closure, ...);
int mappingp(mixed);
mapping mkmapping(mixed *, ...);
#endif /* MAPPINGS */

object first_inventory(object|string default: F_THIS_OBJECT);
object next_inventory(object default: F_THIS_OBJECT);
string *inherit_list(object default: F_THIS_OBJECT);
void    printf(string, ...);
string sprintf(string, ...);
mixed quote(mixed *|quoted_array|symbol|string);
closure lambda(mixed *, mixed);
closure symbol_function(symbol|string, string|object default: F_CONST0);
mixed apply(closure, mixed|mixed &, ...);
/* funcall accepts mixed as a single argument, but the only useful application
 * is with mixed variables that might hold closures, which will work anyways.
 */
mixed funcall (closure, ...);
int symbolp(mixed);
int closurep(mixed);

%xcodes

end_catch
break_continue
breakn_continue
nr_range
rn_range
rr_range
extract1
push_protected_indexed_lvalue
push_protected_rindexed_lvalue
push_protected_indexed_map_lvalue
nr_range_lvalue
rn_range_lvalue
rr_range_lvalue
extract_lvalue
protected_index_lvalue
protected_rindex_lvalue
protected_range_lvalue
protected_nr_range_lvalue
protected_rn_range_lvalue
protected_rr_range_lvalue
protected_extract_lvalue
undef

%xefuns

void add_verb(string);
void add_xverb(string);
string extract(string, int, int);
object previous_object(int);
void shutdown();
int strstr(string, string, int default: F_CONST0);
int program_time(object default: F_THIS_OBJECT);
void swap(object);		/* Only used for debugging */
void unshadow();
mixed *filter_objects(mixed *, string, ...);
mixed *map_objects(mixed *, string, ...);
int query_once_interactive(object);
int to_int(string|float);
float to_float(string|int);
string to_string(mixed);
int *to_array(string);
void wizlist(void|string);
void  set_extra_wizinfo_size(int);
void  set_extra_wizinfo(object|string, mixed);
mixed get_extra_wizinfo(object|string);
int caller_stack_depth();

/* A few interesting comm functions for the internet mud protocol */
#ifdef UDP_SEND
int send_imp(string, int, string);
#endif
int query_mud_port();
#ifdef CATCH_UDP_PORT
int query_imp_port();
#endif

object query_input_pending(object|string);
mixed query_editing(object|string);

#if defined( FLOATS ) && defined( TRANSCENDENT_FUNCTIONS )
float sin(float);
float asin(float);
float cos(float);
float acos(float);
float tan(float);
float atan(float);
float log(float);
float exp(float);
float sqrt(float);
#endif /* TRANSCENDENT_FUNCTIONS */

#ifdef MAPPINGS
int mapping_contains(mixed & | mapping, mixed & | mixed, ...);
mapping allocate_mapping(int, int default: F_CONST1);
mapping copy_mapping(mapping);
#endif /* MAPPINGS */

int call_resolved(mixed &, object|string, string, ...);
int referencep(mixed &);
void set_auto_include_string(string);
void raise_error(string);
int get_eval_cost();
void garbage_collection();
int typeof(mixed);
mixed get_type_info(mixed, int default: F_THIS_OBJECT);

int set_is_wizard(object, int default: F_CONST1);
int cindent(string);
object set_modify_command(object|string default: F_THIS_OBJECT);
mixed *get_error_file(string, int default: F_CONST1);
mixed *heart_beat_info();
string set_prompt(string|closure|int, object default: F_THIS_PLAYER);
mixed *transpose_array(mixed *);
mixed *wizlist_info();
string *functionlist(object|string, int default: F_CONST1);
int trace(int);
string traceprefix(string|int);
void rename_object(object, string);
string *regexplode(string, string);
closure unbound_lambda(mixed *, mixed);

mixed debug_info(int, ...);
void walk_mapping(mapping, string|closure, ...);