cfad47cfa3/tads2/bif.h
Commiter: Nikos Chantziaras
Author: Nikos Chantziaras
Revision: cfad47cfa3
File Size: 10.7 KB
(June 01, 2009 20:54 UTC) Almost 3 years ago
Initial commit.
/*
$Header: d:/cvsroot/tads/TADS2/BIF.H,v 1.3 1999/07/11 00:46:29 MJRoberts Exp $
*/
/*
* Copyright (c) 1991, 2002 Michael J. Roberts. All Rights Reserved.
*
* Please see the accompanying license file, LICENSE.TXT, for information
* on using and copying this software.
*/
/*
Name
bif.h - built-in functions interface
Function
interface to run-time intrinsic function implementation
Notes
None
Modified
12/16/92 MJRoberts - add TADS/Graphic functions
12/26/91 MJRoberts - creation
*/
#ifndef BIF_INCLUDED
#define BIF_INCLUDED
#ifndef OS_INCLUDED
# include "os.h"
#endif
#ifndef ERR_INCLUDED
# include "err.h"
#endif
#ifndef RUN_INCLUDED
# include "run.h"
#endif
#ifndef TIO_INCLUDED
# include "tio.h"
#endif
#ifndef REGEX_H
#include "regex.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* forward definitions */
struct vocidef;
struct voccxdef;
/* maximum number of file handles available */
#define BIFFILMAX 10
/* file contexts for the built-in file handling functions */
struct biffildef
{
osfildef *fp; /* underyling system file handle */
uint flags; /* flags */
#define BIFFIL_F_BINARY 0x01 /* file is binary */
};
typedef struct biffildef biffildef;
/* built-in execution context */
struct bifcxdef
{
errcxdef *bifcxerr; /* error-handling context */
runcxdef *bifcxrun; /* code execution context */
tiocxdef *bifcxtio; /* text I/O context */
long bifcxrnd; /* random number seed */
int bifcxseed1; /* first seed for new generator */
int bifcxseed2; /* second seed for new generator */
int bifcxseed3; /* third seed for new generator */
int bifcxrndset; /* randomize() has been called */
biffildef bifcxfile[BIFFILMAX]; /* file handles for fopen, etc */
uint bifcxsafety; /* file I/O safety level */
char *bifcxsavext; /* saved game extension (null by default) */
struct appctxdef *bifcxappctx; /* host application context */
re_context bifcxregex; /* regular expression searching context */
};
typedef struct bifcxdef bifcxdef;
/*
* argument list checking routines - can be disabled for faster
* run-time
*/
/* check for proper number of arguments */
/* void bifcntargs(bifcxdef *ctx, int argcnt) */
/* check that next argument has proper type */
/* void bifchkarg(bifcxdef *ctx, dattyp typ); */
#ifdef RUNFAST
# define bifcntargs(ctx, parmcnt, argcnt)
# define bifchkarg(ctx, typ)
#else /* RUNFAST */
# define bifcntargs(ctx, parmcnt, argcnt) \
(parmcnt == argcnt ? DISCARD 0 : \
(runsig(ctx->bifcxrun, ERR_BIFARGC), DISCARD 0))
# define bifchkarg(ctx, typ) \
(runtostyp(ctx->bifcxrun) == typ ? DISCARD 0 : \
(runsig(ctx->bifcxrun, ERR_INVTBIF), DISCARD 0))
#endif /* RUNFAST */
/* determine if one object is a subclass of another */
int bifinh(struct voccxdef *voc, struct vocidef *v, objnum cls);
/* enumerate the built-in functions */
void bifyon(bifcxdef *ctx, int argc); /* yorn - yes or no */
void bifsfs(bifcxdef *ctx, int argc); /* setfuse */
void bifrfs(bifcxdef *ctx, int argc); /* remfuse */
void bifsdm(bifcxdef *ctx, int argc); /* setdaemon */
void bifrdm(bifcxdef *ctx, int argc); /* remdaemon */
void bifinc(bifcxdef *ctx, int argc); /* incturn */
void bifqui(bifcxdef *ctx, int argc); /* quit */
void bifsav(bifcxdef *ctx, int argc); /* save */
void bifrso(bifcxdef *ctx, int argc); /* restore */
void biflog(bifcxdef *ctx, int argc); /* logging */
void bifres(bifcxdef *ctx, int argc); /* restart */
void bifinp(bifcxdef *ctx, int argc); /* input - get line from kb */
void bifnfy(bifcxdef *ctx, int argc); /* notify */
void bifunn(bifcxdef *ctx, int argc); /* unnotify */
void biftrc(bifcxdef *ctx, int argc); /* trace on/off */
void bifsay(bifcxdef *ctx, int argc); /* say */
void bifcar(bifcxdef *ctx, int argc); /* car */
void bifcdr(bifcxdef *ctx, int argc); /* cdr */
void bifcap(bifcxdef *ctx, int argc); /* caps */
void biflen(bifcxdef *ctx, int argc); /* length */
void biffnd(bifcxdef *ctx, int argc); /* find */
void bifsit(bifcxdef *ctx, int argc); /* setit - set current 'it' */
void bifsrn(bifcxdef *ctx, int argc); /* randomize: seed rand */
void bifrnd(bifcxdef *ctx, int argc); /* rand - get a random number */
void bifask(bifcxdef *ctx, int argc); /* askfile */
void bifssc(bifcxdef *ctx, int argc); /* setscore */
void bifsub(bifcxdef *ctx, int argc); /* substr */
void bifcvs(bifcxdef *ctx, int argc); /* cvtstr: convert to string */
void bifcvn(bifcxdef *ctx, int argc); /* cvtnum: convert to number */
void bifupr(bifcxdef *ctx, int argc); /* upper */
void biflwr(bifcxdef *ctx, int argc); /* lower */
void biffob(bifcxdef *ctx, int argc); /* firstobj */
void bifnob(bifcxdef *ctx, int argc); /* nextobj */
void bifsvn(bifcxdef *ctx, int argc); /* setversion */
void bifarg(bifcxdef *ctx, int argc); /* getarg */
void biftyp(bifcxdef *ctx, int argc); /* datatype */
void bifisc(bifcxdef *ctx, int argc); /* isclass */
void bifund(bifcxdef *ctx, int argc); /* undo */
void bifdef(bifcxdef *ctx, int argc); /* defined */
void bifpty(bifcxdef *ctx, int argc); /* proptype */
void bifoph(bifcxdef *ctx, int argc); /* outhide */
void bifgfu(bifcxdef *ctx, int argc); /* getfuse */
void bifruf(bifcxdef *ctx, int argc); /* runfuses */
void bifrud(bifcxdef *ctx, int argc); /* rundaemons */
void biftim(bifcxdef *ctx, int argc); /* gettime */
void bifsct(bifcxdef *ctx, int argc); /* intersect */
void bifink(bifcxdef *ctx, int argc); /* inputkey */
void bifwrd(bifcxdef *ctx, int argc); /* objwords */
void bifadw(bifcxdef *ctx, int argc); /* addword */
void bifdlw(bifcxdef *ctx, int argc); /* delword */
void bifgtw(bifcxdef *ctx, int argc); /* getwords */
void bifnoc(bifcxdef *ctx, int argc); /* nocaps */
void bifskt(bifcxdef *ctx, int argc); /* skipturn */
void bifcls(bifcxdef *ctx, int argc); /* clearscreen */
void bif1sc(bifcxdef *ctx, int argc); /* firstsc */
void bifvin(bifcxdef *ctx, int argc); /* verbinfo */
void bifcapture(bifcxdef *ctx, int argc); /* outcapture */
void biffopen(bifcxdef *ctx, int argc); /* fopen */
void biffclose(bifcxdef *ctx, int argc); /* fclose */
void biffwrite(bifcxdef *ctx, int argc); /* fwrite */
void biffread(bifcxdef *ctx, int argc); /* fread */
void biffseek(bifcxdef *ctx, int argc); /* fseek */
void biffseekeof(bifcxdef *ctx, int argc); /* fseekeof */
void bifftell(bifcxdef *ctx, int argc); /* ftell */
void bifsysinfo(bifcxdef *ctx, int argc); /* systemInfo */
void bifmore(bifcxdef *ctx, int argc); /* morePrompt */
void bifsetme(bifcxdef *ctx, int argc); /* parserSetMe */
void bifgetme(bifcxdef *ctx, int argc); /* parserGetMe */
void bifresearch(bifcxdef *ctx, int argc); /* reSearch */
void bifregroup(bifcxdef *ctx, int argc); /* reGetGroup */
void bifinpevt(bifcxdef *ctx, int argc); /* inputevent */
void bifdelay(bifcxdef *ctx, int argc); /* timeDelay */
void bifsetoutfilter(bifcxdef *ctx, int argc); /* setOutputFilter */
void bifexec(bifcxdef *ctx, int argc); /* execCommand */
void bifgetobj(bifcxdef *ctx, int argc); /* parserGetObj */
void bifparsenl(bifcxdef *ctx, int argc); /* parserParseNounList */
void bifprstok(bifcxdef *ctx, int argc); /* parserTokenize */
void bifprstoktyp(bifcxdef *ctx, int argc); /* parserGetTokTypes */
void bifprsdict(bifcxdef *ctx, int argc); /* parserDictLookup */
void bifprsrslv(bifcxdef *ctx, int argc); /* parserResolveObjects */
void bifprsrplcmd(bifcxdef *ctx, int argc); /* parserReplaceCommand */
void bifexitobj(bifcxdef *ctx, int argc); /* exitobj */
void bifinpdlg(bifcxdef *ctx, int argc); /* inputdialog */
void bifresexists(bifcxdef *ctx, int argc); /* resourceExists */
/*
* TADS/graphic functions - these are present in the text system, but
* don't do anything.
*/
void bifgrp(bifcxdef *ctx, int argc); /* g_readpic: read picture */
void bifgsp(bifcxdef *ctx, int argc); /* g_showpic: show picture */
void bifgsh(bifcxdef *ctx, int argc); /* g_sethot: set hot list */
void bifgin(bifcxdef *ctx, int argc); /* g_inventory */
void bifgco(bifcxdef *ctx, int argc); /* g_compass */
void bifgov(bifcxdef *ctx, int argc); /* g_overlay */
void bifgmd(bifcxdef *ctx, int argc); /* g_mode */
void bifgmu(bifcxdef *ctx, int argc); /* g_music */
void bifgpa(bifcxdef *ctx, int argc); /* g_pause */
void bifgef(bifcxdef *ctx, int argc); /* g_effect */
void bifgsn(bifcxdef *ctx, int argc); /* g_sound */
#ifdef __cplusplus
}
#endif
#endif /* BIF_INCLUDED */ |