#ifndef _FUNCTIONS_H_
#define _FUNCTIONS_H_
#include "copyrite.h"
#include "attrib.h"
#include "dbdefs.h"
#include "parse.h"
#define FN_REG 0
#define FN_NOPARSE 1
#define FN_LITERAL 2
#define MAX_GLOBAL_FNS 50
#define GLOBAL_OFFSET 100
#define GF_Index(x) (x - GLOBAL_OFFSET)
typedef struct fun FUN;
struct fun {
const char *name;
/* Sigh. This should be:
void (*fun) _((char *buff, char **bp, int nargs, char *args[],
dbref executor, dbref caller, dbref enactor,
char const *called_as, PE_Info * pe_info));
* But some compilers (e.g. ultrix 4.2) barf
*/
void (*fun) ();
int minargs;
int maxargs;
int ftype;
};
typedef struct userfn_entry USERFN_ENTRY;
struct userfn_entry {
char *fn;
dbref thing;
char *name;
};
extern USERFN_ENTRY userfn_tab[MAX_GLOBAL_FNS];
extern void do_userfn _((char *buff, char **bp,
dbref obj, ATTR *attrib,
int nargs, char **args,
dbref executor, dbref caller, dbref enactor,
PE_Info * pe_info));
extern FUN *func_hash_lookup _((char *name));
#define FUNCTION_PROTO(fun_name) \
extern void fun_name _((char *buff, char **bp, int nargs, char *args[], \
dbref executor, dbref caller, dbref enactor, \
char const *called_as, PE_Info *pe_info))
extern void function_add _((char *name, void (*fun) (), int minargs,
int maxargs, int ftype));
#include "funs.h"
#endif