/* Copyright 1989, 1990 by James Aspnes, David Applegate, and Bennet Yee */
/* See the file COPYING for distribution information */

/* vars & stuff */
extern datum lookup (datum obj, datum var);     /* done */
//extern void set (datum obj, datum var, datum value);    /* done */
extern datum lookup_action (datum obj, datum action);   /* done */
extern datum set_action (datum obj, datum var, datum source_text);       /* done */
extern datum match (datum obj, datum name);     /* done */

/* return values to put into next */
extern datum do_init (datum location);
extern datum do_next (void);

extern datum move (datum thing, datum dest);

/* tell stuff */
extern void clear_tell_buffer (void);
extern void add_buffer (datum string);
extern void add_num_buffer (datum num);
extern void add_text_buffer (datum num);
extern void tell (datum);
extern void add_time_buffer (datum t);
extern void tell_init (datum victim);

extern datum flag_set (datum x, datum flag);
extern datum controls (datum x, datum thing);

extern datum take_from_internal (datum obj, datum var, datum value);
extern datum add_to_internal (datum obj, datum var, datum value);

extern void remove_delays (datum victim);
extern datum set_variable (datum obj, datum var, datum value);
extern const char *time_string (datum t);
extern datum num_to_string (datum x);
extern datum concat (datum s1, datum s2);
extern void strip_whitespace (const char *from, char *to);

extern datum delay (datum t);
extern datum undelay (datum t);

extern datum contains (datum obj, datum setvar, datum thing);
extern datum count_set_var (datum obj, datum setvar);
extern datum take_from (datum obj, datum var, datum value);
extern datum clear_set_var (datum obj, datum var);
extern datum add_to (datum obj, datum var, datum value);
extern datum unset_action (datum obj, datum verb);
extern datum set_string (datum obj, datum var, datum value);
extern datum unset (datum obj, datum var);

extern datum do_syscall (datum number);

extern int check_password (const char *clear, const char *encrypted);
extern const char *encrypt_password (const char *password);

extern datum destroy (datum thing);
extern datum create (void);

extern datum do_tell (void);
extern void do_action (datum actor, datum thing, datum verb);
extern void parse_command (datum actor, const char *safe_command);

extern datum is_ancestor (datum x, datum a);

extern datum matches (datum string, datum x);