412 lines
12 KiB
C
412 lines
12 KiB
C
#include "spec.h"
|
|
|
|
#include "op_spec.c"
|
|
/*
|
|
* 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'.
|
|
*
|
|
* Comment out the efuns that you do not want. Be careful not to comment
|
|
* out something that you need.
|
|
*
|
|
* The order in which the efuns are listed here is the order in which opcode
|
|
* #'s will be assigned. It is in your interest to move the least frequently
|
|
* used efuns to the bottom of this file (and the most frequently used
|
|
* ones to the top). The opcprof() efun could help you find out which
|
|
* efuns are most often and least often used. The reason for ordering
|
|
* the efuns is that only the first 255 efuns are represented using
|
|
* a single byte. Any additional efuns require two bytes.
|
|
*/
|
|
|
|
#ifdef NO_BUFFER_TYPE
|
|
#define OR_BUFFER
|
|
#else
|
|
#define OR_BUFFER | buffer
|
|
#endif
|
|
|
|
/* These next few efuns are used internally; do not remove them.
|
|
* The leading _ is used to keep track of which efuns should exist,
|
|
* but not be added to the identifier lookup table.
|
|
* These names MUST exist, and may either be real efuns, or aliases
|
|
* for another efun. For example, one could remove clone_object
|
|
* above, and change the internal one to:
|
|
*
|
|
* object _new(string, ...);
|
|
*/
|
|
/* used by X->f() */
|
|
unknown _call_other(object | string | object *, string | mixed *,...);
|
|
/* used by (*f)(...) */
|
|
mixed _evaluate(mixed, ...);
|
|
/* default argument for some efuns */
|
|
object _this_object();
|
|
/* used for implicit float/int conversions */
|
|
int _to_int(string | float | int OR_BUFFER);
|
|
float _to_float(string | float | int);
|
|
/* used by new() */
|
|
object _new(string, ...);
|
|
|
|
unknown call_other _call_other(object | string | object *, string | mixed *,...);
|
|
mixed evaluate _evaluate(mixed, ...);
|
|
#ifdef COMPAT_32
|
|
mixed funcall _evaluate(mixed, ...);
|
|
#endif
|
|
object this_object _this_object();
|
|
int to_int _to_int(string | float | int OR_BUFFER);
|
|
float to_float _to_float(string | float | int);
|
|
object clone_object _new(string, ...);
|
|
|
|
function bind(function, object);
|
|
object this_player(int default: 0);
|
|
object this_interactive this_player( int default: 1);
|
|
object this_user this_player( int default: 0);
|
|
mixed previous_object(int default: 0);
|
|
object *all_previous_objects previous_object(int default: -1);
|
|
mixed *call_stack(int default: 0);
|
|
int sizeof(mixed);
|
|
int strlen sizeof(string);
|
|
#ifdef USE_ICONV
|
|
int strwidth(string);
|
|
#else
|
|
int strwidth sizeof(string);
|
|
#endif
|
|
void destruct(object default: F__THIS_OBJECT);
|
|
string file_name(object default: F__THIS_OBJECT);
|
|
string capitalize(string);
|
|
string *explode(string, string);
|
|
mixed implode(mixed *, string | function, void | mixed);
|
|
#ifdef CALLOUT_HANDLES
|
|
int call_out(string | function, int,...);
|
|
#else
|
|
void call_out(string | function, int,...);
|
|
#endif
|
|
int member_array(mixed, string | mixed *, void | int, void | int);
|
|
int input_to(string | function,...);
|
|
int random(int);
|
|
void defer(function);
|
|
|
|
#ifndef NO_ENVIRONMENT
|
|
object environment(void | object);
|
|
object *all_inventory(object default: F__THIS_OBJECT);
|
|
object *deep_inventory(object | object * | function, void|function default: F__THIS_OBJECT);
|
|
object first_inventory(object|string default: F__THIS_OBJECT);
|
|
object next_inventory(object default: F__THIS_OBJECT);
|
|
void say(string, void | object | object *);
|
|
void tell_room(object | string, string | object | int | float, void | object | object *);
|
|
object present(object | string, void | object);
|
|
void move_object(object | string);
|
|
#endif
|
|
|
|
#ifndef NO_ADD_ACTION
|
|
void add_action(string | function, string | string *, void | int);
|
|
string query_verb();
|
|
int command(string);
|
|
int remove_action(string, string);
|
|
int living(object default: F__THIS_OBJECT);
|
|
mixed *commands();
|
|
void disable_commands();
|
|
void enable_commands();
|
|
void set_living_name(string);
|
|
object *livings();
|
|
object find_living(string);
|
|
object find_player(string);
|
|
void notify_fail(string | function);
|
|
#else
|
|
void set_this_player(object | int);
|
|
void set_this_user set_this_player(object | int);
|
|
#endif
|
|
|
|
string lower_case(string);
|
|
string replace_string(string, string, string,...);
|
|
int restore_object(string, void | int);
|
|
mixed save_object(string | int | void, void | int);
|
|
string save_variable(mixed);
|
|
mixed restore_variable(string);
|
|
object *users();
|
|
mixed *get_dir(string, int default: 0);
|
|
int strsrch(string, string | int, int default: 0);
|
|
#ifdef COMPAT_32
|
|
int strstr strsrch(string, string | int, int default: 0);
|
|
#endif
|
|
|
|
/* communication functions */
|
|
|
|
void write(mixed);
|
|
void tell_object(object, string);
|
|
void shout(string);
|
|
void receive(string OR_BUFFER);
|
|
void message(mixed, mixed, string | string * | object | object *,
|
|
void | object | object *);
|
|
|
|
/* the find_* functions */
|
|
|
|
object find_object(string, int default: 0);
|
|
object load_object find_object(string, int default: 1);
|
|
#ifdef CALLOUT_HANDLES
|
|
int find_call_out(int|string);
|
|
#else
|
|
int find_call_out(string);
|
|
#endif
|
|
|
|
/* mapping functions */
|
|
|
|
mapping allocate_mapping(int | mixed *, void | mixed);
|
|
mixed *values(mapping);
|
|
mixed *keys(mapping);
|
|
#ifdef COMPAT_32
|
|
mapping map_delete(mapping, mixed);
|
|
mapping m_delete map_delete(mapping, mixed);
|
|
mixed *m_values values(mapping);
|
|
mixed *m_indices keys(mapping);
|
|
#else
|
|
void map_delete(mapping, mixed);
|
|
#endif
|
|
|
|
mixed match_path(mapping, string);
|
|
|
|
/* all the *p() type functions */
|
|
|
|
int clonep(mixed default: F__THIS_OBJECT);
|
|
int intp(mixed);
|
|
int undefinedp(mixed);
|
|
int nullp undefinedp(mixed);
|
|
int floatp(mixed);
|
|
int stringp(mixed);
|
|
int virtualp(object default: F__THIS_OBJECT);
|
|
int functionp(mixed);
|
|
#ifdef COMPAT_32
|
|
int closurep functionp(mixed);
|
|
#endif
|
|
int pointerp(mixed);
|
|
int arrayp pointerp(mixed);
|
|
int objectp(mixed);
|
|
int classp(mixed);
|
|
string typeof(mixed);
|
|
|
|
#ifndef NO_BUFFER_TYPE
|
|
int bufferp(mixed);
|
|
buffer allocate_buffer(int);
|
|
#endif
|
|
|
|
int inherits(string, object default: F__THIS_OBJECT);
|
|
void replace_program(string);
|
|
|
|
mixed regexp(string | string *, string, void | int);
|
|
mixed *reg_assoc(string, string *, mixed *, mixed | void);
|
|
mixed *allocate(int, void | mixed);
|
|
mixed *call_out_info();
|
|
|
|
/* 32-bit cyclic redundancy code - see crc32.c and crctab.h */
|
|
int crc32(string OR_BUFFER);
|
|
|
|
/* commands operating on files */
|
|
|
|
#ifndef NO_BUFFER_TYPE
|
|
mixed read_buffer(string | buffer, void | int, void | int);
|
|
int write_buffer(string | buffer, int, string | buffer | int);
|
|
#endif
|
|
int write_file(string, string, int default:0);
|
|
int rename(string, string);
|
|
int write_bytes(string, int, string);
|
|
|
|
int file_size(string);
|
|
string read_bytes(string, void | int, void | int);
|
|
string read_file(string, void | int, void | int);
|
|
int cp(string, string);
|
|
|
|
int link(string, string);
|
|
int mkdir(string);
|
|
int rm(string);
|
|
int rmdir(string);
|
|
|
|
/* the bit string functions */
|
|
|
|
string clear_bit(string, int);
|
|
int test_bit(string, int);
|
|
string set_bit(string, int);
|
|
int next_bit(string, int);
|
|
|
|
string crypt(string, string | int);
|
|
string oldcrypt(string, string | int);
|
|
|
|
string ctime(int|void);
|
|
int exec(object, object);
|
|
mixed *localtime(int);
|
|
string function_exists(string, void | object, void | int);
|
|
|
|
object *objects(void | string | function);
|
|
string query_host_name();
|
|
int query_idle(object);
|
|
string query_ip_name(void | object);
|
|
string query_ip_number(void | object);
|
|
#ifndef NO_SNOOP
|
|
object snoop(object, void | object);
|
|
object query_snoop(object);
|
|
object query_snooping(object);
|
|
#endif
|
|
#ifdef CALLOUT_HANDLES
|
|
int remove_call_out(int | void | string);
|
|
#else
|
|
int remove_call_out(void | string);
|
|
#endif
|
|
void set_heart_beat(int);
|
|
int query_heart_beat(object default:F__THIS_OBJECT);
|
|
void set_hide(int);
|
|
|
|
#ifndef NO_RESETS
|
|
void set_reset(object, void | int);
|
|
#endif
|
|
|
|
#ifndef NO_SHADOWS
|
|
object shadow(object, int default: 1);
|
|
object query_shadowing(object);
|
|
#endif
|
|
mixed *sort_array(mixed *, int | string | function, ...);
|
|
void throw(mixed);
|
|
int time();
|
|
mixed *unique_array(mixed *, string | function, void | mixed);
|
|
mapping unique_mapping(mixed *, string | function, ...);
|
|
string *deep_inherit_list(object default:F__THIS_OBJECT);
|
|
string *shallow_inherit_list(object default:F__THIS_OBJECT);
|
|
#ifdef COMPAT_32
|
|
string *inherit_list deep_inherit_list(object default:F__THIS_OBJECT);
|
|
#else
|
|
string *inherit_list shallow_inherit_list(object default:F__THIS_OBJECT);
|
|
#endif
|
|
void printf(string,...);
|
|
string sprintf(string,...);
|
|
int mapp(mixed);
|
|
mixed *stat(string, int default: 0);
|
|
|
|
/*
|
|
* Object properties
|
|
*/
|
|
int interactive(object default:F__THIS_OBJECT);
|
|
int has_mxp(object default:F__THIS_OBJECT);
|
|
int has_zmp(object default:F__THIS_OBJECT);
|
|
void send_zmp(string, string *);
|
|
int has_gmcp(object default:F__THIS_OBJECT);
|
|
void send_gmcp(string);
|
|
string in_edit(object default:F__THIS_OBJECT);
|
|
int in_input(object default:F__THIS_OBJECT);
|
|
int userp(object);
|
|
#ifdef COMPAT_32
|
|
int query_once_interactive userp(object);
|
|
#endif
|
|
|
|
#ifndef NO_WIZARDS
|
|
void enable_wizard();
|
|
void disable_wizard();
|
|
int wizardp(object);
|
|
#endif
|
|
|
|
object master();
|
|
|
|
/*
|
|
* various mudlib statistics
|
|
*/
|
|
int memory_info(object | void);
|
|
mixed get_config(int);
|
|
|
|
#ifdef PRIVS
|
|
/* privledge functions */
|
|
string query_privs(object default:F__THIS_OBJECT);
|
|
void set_privs(object, int | string);
|
|
#endif /* PRIVS */
|
|
|
|
int get_char(string | function,...);
|
|
object *children(string);
|
|
|
|
void reload_object(object);
|
|
|
|
void error(string);
|
|
#ifdef COMPAT_32
|
|
void raise_error error(string);
|
|
#endif
|
|
int uptime();
|
|
int strcmp(string, string);
|
|
|
|
#ifndef WIN32
|
|
#if (defined(RUSAGE) || defined(GET_PROCESS_STATS) || defined(TIMES))
|
|
mapping rusage();
|
|
#endif /* RUSAGE */
|
|
#endif
|
|
|
|
void flush_messages(void | object);
|
|
|
|
#ifdef OLD_ED
|
|
void ed(string | void, string | int | void, string | int | void, int | void, int | void);
|
|
#else
|
|
string ed_start(string | void, int | void, int | void);
|
|
string ed_cmd(string);
|
|
int query_ed_mode();
|
|
#endif
|
|
|
|
#ifdef CACHE_STATS
|
|
string cache_stats();
|
|
#endif
|
|
|
|
mixed filter(string | mixed * | mapping, string | function, ...);
|
|
mixed filter_array filter(mixed *, string | function, ...);
|
|
mapping filter_mapping filter(mapping, string | function, ...);
|
|
|
|
mixed map(string | mapping | mixed *, string | function, ...);
|
|
mapping map_mapping map(mapping, string | function, ...);
|
|
mixed *map_array map(mixed *, string | function, ...);
|
|
/*
|
|
* parser 'magic' functions, turned into efuns
|
|
*/
|
|
string malloc_status();
|
|
string mud_status(int default: 0);
|
|
void dumpallobj(string | void);
|
|
|
|
string dump_file_descriptors();
|
|
string query_load_average();
|
|
|
|
#ifndef NO_LIGHT
|
|
/* set_light should die a dark death */
|
|
int set_light(int);
|
|
#endif
|
|
|
|
string origin();
|
|
|
|
/* the infrequently used functions */
|
|
|
|
int reclaim_objects();
|
|
|
|
int set_eval_limit(int);
|
|
int reset_eval_cost set_eval_limit(int default: 0);
|
|
int eval_cost set_eval_limit(int default: -1);
|
|
int max_eval_cost set_eval_limit(int default: 1);
|
|
#ifdef COMPAT_32
|
|
int get_eval_cost set_eval_limit(int default: -1);
|
|
#endif
|
|
|
|
#ifdef DEBUG_MACRO
|
|
void set_debug_level(int|string);
|
|
mapping debug_levels();
|
|
void clear_debug_level(string);
|
|
#endif
|
|
|
|
#if defined(OPCPROF) || defined(OPCPROF_2D)
|
|
void opcprof(string | void);
|
|
#endif
|
|
|
|
#ifdef PROFILE_FUNCTIONS
|
|
mapping *function_profile(object default:F__THIS_OBJECT);
|
|
#endif
|
|
|
|
int resolve(string, string|function);
|
|
#ifdef USE_ICONV
|
|
int set_encoding(string);
|
|
string to_utf8(string, string);
|
|
string utf8_to(string, string);
|
|
int *str_to_arr(string);
|
|
string arr_to_str(int *);
|
|
#endif
|
|
void act_mxp();
|
|
void request_term_type();
|
|
void start_request_term_type();
|
|
void request_term_size(void | int);
|
|
/* shutdown is at the end because it is only called once per boot cycle :) */
|
|
void shutdown(void | int);
|