ldmud-3.2.9/doc/
ldmud-3.2.9/doc/efun/
ldmud-3.2.9/mud/
ldmud-3.2.9/mud/heaven7/
ldmud-3.2.9/mud/heaven7/lib/
ldmud-3.2.9/mud/lp-245/
ldmud-3.2.9/mud/lp-245/banish/
ldmud-3.2.9/mud/lp-245/doc/
ldmud-3.2.9/mud/lp-245/doc/examples/
ldmud-3.2.9/mud/lp-245/doc/sefun/
ldmud-3.2.9/mud/lp-245/log/
ldmud-3.2.9/mud/lp-245/obj/Go/
ldmud-3.2.9/mud/lp-245/players/lars/
ldmud-3.2.9/mud/lp-245/room/death/
ldmud-3.2.9/mud/lp-245/room/maze1/
ldmud-3.2.9/mud/lp-245/room/sub/
ldmud-3.2.9/mud/lp-245/secure/
ldmud-3.2.9/mud/morgengrauen/
ldmud-3.2.9/mud/morgengrauen/lib/
ldmud-3.2.9/mud/sticklib/
ldmud-3.2.9/mud/sticklib/src/
ldmud-3.2.9/mudlib/uni-crasher/
ldmud-3.2.9/pkg/
ldmud-3.2.9/pkg/debugger/
ldmud-3.2.9/pkg/diff/
ldmud-3.2.9/pkg/misc/
ldmud-3.2.9/src/autoconf/
ldmud-3.2.9/src/bugs/
ldmud-3.2.9/src/bugs/MudCompress/
ldmud-3.2.9/src/bugs/b-020916-files/
ldmud-3.2.9/src/bugs/doomdark/
ldmud-3.2.9/src/bugs/ferrycode/ferry/
ldmud-3.2.9/src/bugs/ferrycode/obj/
ldmud-3.2.9/src/bugs/psql/
ldmud-3.2.9/src/done/
ldmud-3.2.9/src/done/order_alist/
ldmud-3.2.9/src/done/order_alist/obj/
ldmud-3.2.9/src/done/order_alist/room/
ldmud-3.2.9/src/gcc/
ldmud-3.2.9/src/gcc/2.7.0/
ldmud-3.2.9/src/gcc/2.7.1/
ldmud-3.2.9/src/hosts/
ldmud-3.2.9/src/hosts/GnuWin32/
ldmud-3.2.9/src/hosts/amiga/NetIncl/
ldmud-3.2.9/src/hosts/amiga/NetIncl/netinet/
ldmud-3.2.9/src/hosts/amiga/NetIncl/sys/
ldmud-3.2.9/src/hosts/i386/
ldmud-3.2.9/src/hosts/msdos/byacc/
ldmud-3.2.9/src/hosts/msdos/doc/
ldmud-3.2.9/src/hosts/os2/
ldmud-3.2.9/src/hosts/win32/
ldmud-3.2.9/src/util/
ldmud-3.2.9/src/util/erq/
ldmud-3.2.9/src/util/indent/hosts/next/
ldmud-3.2.9/src/util/xerq/
ldmud-3.2.9/src/util/xerq/lpc/
ldmud-3.2.9/src/util/xerq/lpc/www/
#ifndef SIMUL_EFUN_H__
#define SIMUL_EFUN_H__ 1

#include "driver.h"
#include "typedefs.h"
#include "exec.h"        /* fun_hdr_p */
#include "ptrtable.h"

/* --- struct simul_efun_table_s: information of one simul_efun ---
 *
 * For every simulated efun, one of these structures is generated
 * and holds the information about where to find the code, and
 * what indices are to be used in relation to the simul_efun object
 * (in case the program was inherited by the simul-efun object).
 */
struct simul_efun_table_s
{
    fun_hdr_p  funstart;
        /* The function pointer, NULL for discarded sefuns.
         */
    program_t *program;
    p_int      function_index_offset;
    p_int      variable_index_offset;
      /* Copies from the function_t structure.
       */
};

/* --- Variables --- */

extern int num_simul_efun;
extern function_t *simul_efunp;
extern object_t *simul_efun_object;
extern vector_t *simul_efun_vector;
extern simul_efun_table_t simul_efun_table[];

/* --- Prototypes --- */

extern void invalidate_simul_efuns (void);
extern object_t *get_simul_efun_object(void);
extern char *query_simul_efun_file_name(void);

#ifdef GC_SUPPORT
extern void clear_simul_efun_refs(void);
extern void count_simul_efun_refs(void);
#endif /* GC_SUPPORT */

#ifdef DEBUG
extern void count_simul_efun_extra_refs(struct pointer_table *ptable);
#endif

#endif  /* SIMUL_EFUN_H__ */