/*	-*- mode: c; mode: fold -*-	*/
# ifndef	__SCRIPT_H
# define	__SCRIPT_H		1
/*{{{	typedefs */
typedef struct script	script;

typedef struct {
	char	*typ;
	int	(*finit) (script *, char *);
	void	(*fdeinit) (script *);
	int	(*fexec) (script *, char *, char *);
	int	(*fsload) (script *, char *);
	int	(*ffload) (script *, char *);
	int	(*fpreinit) (char *);
	void	(*fpostdeinit) (void);
}	funcs;

struct script {
# ifndef	NDEBUG
# define	MAGIC		MKMAGIC ('s', 'c', 'r', '\0')
	long	magic;
# endif		/* NDEBUG */
	void	*sp;
	void	*ctab;
	void	(*logger) (char, char *, ...);
	date_t	delay;
	date_t	expire;
	Bool	rds;
	void	*priv;
	funcs	*f;
};
/*}}}*/

extern char	*scr_convert (script *s, char *str);
# ifdef		SCRIPT_SLANG
extern funcs	fslang;
# endif		/* SCRIPT_SLANG */
# ifdef		SCRIPT_LUA
extern funcs	flua;
# endif		/* SCRIPT_LUA */
# endif		/* __SCRIPT_H */

