~ubuntu-branches/ubuntu/wily/gargoyle-free/wily-proposed

« back to all changes in this revision

Viewing changes to tads/tads2/bif.h

  • Committer: Bazaar Package Importer
  • Author(s): Sylvain Beucler
  • Date: 2009-09-11 20:09:43 UTC
  • Revision ID: james.westby@ubuntu.com-20090911200943-idgzoyupq6650zpn
Tags: upstream-2009-08-25
ImportĀ upstreamĀ versionĀ 2009-08-25

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
$Header: d:/cvsroot/tads/TADS2/BIF.H,v 1.3 1999/07/11 00:46:29 MJRoberts Exp $
 
3
*/
 
4
 
 
5
/* 
 
6
 *   Copyright (c) 1991, 2002 Michael J. Roberts.  All Rights Reserved.
 
7
 *   
 
8
 *   Please see the accompanying license file, LICENSE.TXT, for information
 
9
 *   on using and copying this software.  
 
10
 */
 
11
/*
 
12
Name
 
13
  bif.h - built-in functions interface
 
14
Function
 
15
  interface to run-time intrinsic function implementation
 
16
Notes
 
17
  None
 
18
Modified
 
19
  12/16/92 MJRoberts     - add TADS/Graphic functions
 
20
  12/26/91 MJRoberts     - creation
 
21
*/
 
22
 
 
23
#ifndef BIF_INCLUDED
 
24
#define BIF_INCLUDED
 
25
 
 
26
#ifndef OS_INCLUDED
 
27
# include "os.h"
 
28
#endif
 
29
#ifndef ERR_INCLUDED
 
30
# include "err.h"
 
31
#endif
 
32
#ifndef RUN_INCLUDED
 
33
# include "run.h"
 
34
#endif
 
35
#ifndef TIO_INCLUDED
 
36
# include "tio.h"
 
37
#endif
 
38
#ifndef REGEX_H
 
39
#include "regex.h"
 
40
#endif
 
41
 
 
42
#ifdef __cplusplus
 
43
extern "C" {
 
44
#endif
 
45
 
 
46
/* forward definitions */
 
47
struct vocidef;
 
48
struct voccxdef;
 
49
 
 
50
/* maximum number of file handles available */
 
51
#define BIFFILMAX  10
 
52
 
 
53
 
 
54
/* file contexts for the built-in file handling functions */
 
55
struct biffildef
 
56
{
 
57
    osfildef *fp;                          /* underyling system file handle */
 
58
    uint      flags;                                               /* flags */
 
59
#define BIFFIL_F_BINARY    0x01                           /* file is binary */
 
60
};
 
61
typedef struct biffildef biffildef;
 
62
 
 
63
/* built-in execution context */
 
64
struct bifcxdef
 
65
{
 
66
    errcxdef *bifcxerr;                           /* error-handling context */
 
67
    runcxdef *bifcxrun;                           /* code execution context */
 
68
    tiocxdef *bifcxtio;                                 /* text I/O context */
 
69
    long      bifcxrnd;                               /* random number seed */
 
70
    int       bifcxseed1;                   /* first seed for new generator */
 
71
    int       bifcxseed2;                  /* second seed for new generator */
 
72
    int       bifcxseed3;                   /* third seed for new generator */
 
73
    int       bifcxrndset;                   /* randomize() has been called */
 
74
    biffildef bifcxfile[BIFFILMAX];          /* file handles for fopen, etc */
 
75
    uint      bifcxsafety;                         /* file I/O safety level */
 
76
    char     *bifcxsavext;        /* saved game extension (null by default) */
 
77
    struct appctxdef *bifcxappctx;              /* host application context */
 
78
    re_context bifcxregex;          /* regular expression searching context */
 
79
};
 
80
typedef struct bifcxdef bifcxdef;
 
81
 
 
82
/*
 
83
 *   argument list checking routines - can be disabled for faster
 
84
 *   run-time 
 
85
 */
 
86
 
 
87
/* check for proper number of arguments */
 
88
/* void bifcntargs(bifcxdef *ctx, int argcnt) */
 
89
 
 
90
/* check that next argument has proper type */
 
91
/* void bifchkarg(bifcxdef *ctx, dattyp typ); */
 
92
 
 
93
#ifdef RUNFAST
 
94
# define bifcntargs(ctx, parmcnt, argcnt)
 
95
# define bifchkarg(ctx, typ)
 
96
#else /* RUNFAST */
 
97
# define bifcntargs(ctx, parmcnt, argcnt) \
 
98
  (parmcnt == argcnt ? DISCARD 0 : \
 
99
   (runsig(ctx->bifcxrun, ERR_BIFARGC), DISCARD 0))
 
100
# define bifchkarg(ctx, typ) \
 
101
  (runtostyp(ctx->bifcxrun) == typ ? DISCARD 0 : \
 
102
   (runsig(ctx->bifcxrun, ERR_INVTBIF), DISCARD 0))
 
103
#endif /* RUNFAST */
 
104
 
 
105
/* determine if one object is a subclass of another */
 
106
int bifinh(struct voccxdef *voc, struct vocidef *v, objnum cls);
 
107
 
 
108
 
 
109
/* enumerate the built-in functions */
 
110
void bifyon(bifcxdef *ctx, int argc);                   /* yorn - yes or no */
 
111
void bifsfs(bifcxdef *ctx, int argc);                            /* setfuse */
 
112
void bifrfs(bifcxdef *ctx, int argc);                            /* remfuse */
 
113
void bifsdm(bifcxdef *ctx, int argc);                          /* setdaemon */
 
114
void bifrdm(bifcxdef *ctx, int argc);                          /* remdaemon */
 
115
void bifinc(bifcxdef *ctx, int argc);                            /* incturn */
 
116
void bifqui(bifcxdef *ctx, int argc);                               /* quit */
 
117
void bifsav(bifcxdef *ctx, int argc);                               /* save */
 
118
void bifrso(bifcxdef *ctx, int argc);                            /* restore */
 
119
void biflog(bifcxdef *ctx, int argc);                            /* logging */
 
120
void bifres(bifcxdef *ctx, int argc);                            /* restart */
 
121
void bifinp(bifcxdef *ctx, int argc);           /* input - get line from kb */
 
122
void bifnfy(bifcxdef *ctx, int argc);                             /* notify */
 
123
void bifunn(bifcxdef *ctx, int argc);                           /* unnotify */
 
124
void biftrc(bifcxdef *ctx, int argc);                       /* trace on/off */
 
125
void bifsay(bifcxdef *ctx, int argc);                                /* say */
 
126
void bifcar(bifcxdef *ctx, int argc);                                /* car */
 
127
void bifcdr(bifcxdef *ctx, int argc);                                /* cdr */
 
128
void bifcap(bifcxdef *ctx, int argc);                               /* caps */
 
129
void biflen(bifcxdef *ctx, int argc);                             /* length */
 
130
void biffnd(bifcxdef *ctx, int argc);                               /* find */
 
131
void bifsit(bifcxdef *ctx, int argc);           /* setit - set current 'it' */
 
132
void bifsrn(bifcxdef *ctx, int argc);               /* randomize: seed rand */
 
133
void bifrnd(bifcxdef *ctx, int argc);         /* rand - get a random number */
 
134
void bifask(bifcxdef *ctx, int argc);                            /* askfile */
 
135
void bifssc(bifcxdef *ctx, int argc);                           /* setscore */
 
136
void bifsub(bifcxdef *ctx, int argc);                             /* substr */
 
137
void bifcvs(bifcxdef *ctx, int argc);          /* cvtstr: convert to string */
 
138
void bifcvn(bifcxdef *ctx, int argc);          /* cvtnum: convert to number */
 
139
void bifupr(bifcxdef *ctx, int argc);                              /* upper */
 
140
void biflwr(bifcxdef *ctx, int argc);                              /* lower */
 
141
void biffob(bifcxdef *ctx, int argc);                           /* firstobj */
 
142
void bifnob(bifcxdef *ctx, int argc);                            /* nextobj */
 
143
void bifsvn(bifcxdef *ctx, int argc);                         /* setversion */
 
144
void bifarg(bifcxdef *ctx, int argc);                             /* getarg */
 
145
void biftyp(bifcxdef *ctx, int argc);                           /* datatype */
 
146
void bifisc(bifcxdef *ctx, int argc);                            /* isclass */
 
147
void bifund(bifcxdef *ctx, int argc);                               /* undo */
 
148
void bifdef(bifcxdef *ctx, int argc);                            /* defined */
 
149
void bifpty(bifcxdef *ctx, int argc);                           /* proptype */
 
150
void bifoph(bifcxdef *ctx, int argc);                            /* outhide */
 
151
void bifgfu(bifcxdef *ctx, int argc);                            /* getfuse */
 
152
void bifruf(bifcxdef *ctx, int argc);                           /* runfuses */
 
153
void bifrud(bifcxdef *ctx, int argc);                         /* rundaemons */
 
154
void biftim(bifcxdef *ctx, int argc);                            /* gettime */
 
155
void bifsct(bifcxdef *ctx, int argc);                          /* intersect */
 
156
void bifink(bifcxdef *ctx, int argc);                           /* inputkey */
 
157
void bifwrd(bifcxdef *ctx, int argc);                           /* objwords */
 
158
void bifadw(bifcxdef *ctx, int argc);                            /* addword */
 
159
void bifdlw(bifcxdef *ctx, int argc);                            /* delword */
 
160
void bifgtw(bifcxdef *ctx, int argc);                           /* getwords */
 
161
void bifnoc(bifcxdef *ctx, int argc);                             /* nocaps */
 
162
void bifskt(bifcxdef *ctx, int argc);                           /* skipturn */
 
163
void bifcls(bifcxdef *ctx, int argc);                        /* clearscreen */
 
164
void bif1sc(bifcxdef *ctx, int argc);                            /* firstsc */
 
165
void bifvin(bifcxdef *ctx, int argc);                           /* verbinfo */
 
166
void bifcapture(bifcxdef *ctx, int argc);                     /* outcapture */
 
167
 
 
168
void biffopen(bifcxdef *ctx, int argc);                            /* fopen */
 
169
void biffclose(bifcxdef *ctx, int argc);                          /* fclose */
 
170
void biffwrite(bifcxdef *ctx, int argc);                          /* fwrite */
 
171
void biffread(bifcxdef *ctx, int argc);                            /* fread */
 
172
void biffseek(bifcxdef *ctx, int argc);                            /* fseek */
 
173
void biffseekeof(bifcxdef *ctx, int argc);                      /* fseekeof */
 
174
void bifftell(bifcxdef *ctx, int argc);                            /* ftell */
 
175
 
 
176
void bifsysinfo(bifcxdef *ctx, int argc);                     /* systemInfo */
 
177
void bifmore(bifcxdef *ctx, int argc);                        /* morePrompt */
 
178
void bifsetme(bifcxdef *ctx, int argc);                      /* parserSetMe */
 
179
void bifgetme(bifcxdef *ctx, int argc);                      /* parserGetMe */
 
180
 
 
181
void bifresearch(bifcxdef *ctx, int argc);                      /* reSearch */
 
182
void bifregroup(bifcxdef *ctx, int argc);                     /* reGetGroup */
 
183
 
 
184
void bifinpevt(bifcxdef *ctx, int argc);                      /* inputevent */
 
185
void bifdelay(bifcxdef *ctx, int argc);                        /* timeDelay */
 
186
 
 
187
void bifsetoutfilter(bifcxdef *ctx, int argc);           /* setOutputFilter */
 
188
void bifexec(bifcxdef *ctx, int argc);                       /* execCommand */
 
189
void bifgetobj(bifcxdef *ctx, int argc);                    /* parserGetObj */
 
190
void bifparsenl(bifcxdef *ctx, int argc);            /* parserParseNounList */
 
191
void bifprstok(bifcxdef *ctx, int argc);                  /* parserTokenize */
 
192
void bifprstoktyp(bifcxdef *ctx, int argc);            /* parserGetTokTypes */
 
193
void bifprsdict(bifcxdef *ctx, int argc);               /* parserDictLookup */
 
194
void bifprsrslv(bifcxdef *ctx, int argc);           /* parserResolveObjects */
 
195
void bifprsrplcmd(bifcxdef *ctx, int argc);         /* parserReplaceCommand */
 
196
void bifexitobj(bifcxdef *ctx, int argc);                        /* exitobj */
 
197
void bifinpdlg(bifcxdef *ctx, int argc);                     /* inputdialog */
 
198
void bifresexists(bifcxdef *ctx, int argc);               /* resourceExists */
 
199
 
 
200
/*
 
201
 *   TADS/graphic functions - these are present in the text system, but
 
202
 *   don't do anything.
 
203
 */
 
204
void bifgrp(bifcxdef *ctx, int argc);            /* g_readpic: read picture */
 
205
void bifgsp(bifcxdef *ctx, int argc);            /* g_showpic: show picture */
 
206
void bifgsh(bifcxdef *ctx, int argc);             /* g_sethot: set hot list */
 
207
void bifgin(bifcxdef *ctx, int argc);                        /* g_inventory */
 
208
void bifgco(bifcxdef *ctx, int argc);                          /* g_compass */
 
209
void bifgov(bifcxdef *ctx, int argc);                          /* g_overlay */
 
210
void bifgmd(bifcxdef *ctx, int argc);                             /* g_mode */
 
211
void bifgmu(bifcxdef *ctx, int argc);                            /* g_music */
 
212
void bifgpa(bifcxdef *ctx, int argc);                            /* g_pause */
 
213
void bifgef(bifcxdef *ctx, int argc);                           /* g_effect */
 
214
void bifgsn(bifcxdef *ctx, int argc);                            /* g_sound */
 
215
 
 
216
#ifdef __cplusplus
 
217
}
 
218
#endif
 
219
 
 
220
#endif /* BIF_INCLUDED */