VR-Link API Documentation for HLA Evolved
Home
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
include
mtl
mtl.h
Go to the documentation of this file.
1
/*********************************************************************
2
** Copyright (c) 1992-2010 VT MAK
3
** All rights reserved.
4
*********************************************************************/
5
#ifndef mtl_H_
6
#define mtl_H_
7
12
#include <stdio.h>
13
#include <
vlutil/vlMachineTypes.h
>
14
#include <
vlutil/vlPrint.h
>
15
#include <
vlutil/vlList.h
>
16
#include <
vlutil/vlString.h
>
17
#include <
vlutil/vlDebug.h
>
18
#include "
mtlstream.h
"
19
20
#ifdef DtUSE_UTILITIES_NAMESPACE
21
namespace
DtUSE_UTILITIES_NAMESPACE
22
{
23
#endif
24
25
#define DtlObjDebug(s) do { if (DtLispDebugOn) DtlInfo s; } while (0)
26
27
#define DtlError(string, obj) do { if (DtNotifyLevel >= DtNlFatal) \
28
fprintf(stderr, "Lisp Error: %s", string), DtcErrPrint(obj); } while (0)
29
30
#define DtlWarn(string, obj) do { if (DtNotifyLevel >= DtNlWarn) \
31
fprintf(stderr, "Lisp Warning: %s", string), DtcErrPrint(obj); } while (0)
32
33
#define DtlInfo(string, obj) do { if (DtNotifyLevel >= DtNlInfo) \
34
printf(string), DtcPrint(obj); } while (0)
35
36
//--------------------------------------------------------------------------
37
38
class
DT_DLL_MTL
DtlObj
;
39
class
DT_DLL_MTL
DtlObjPtr
;
40
class
DT_DLL_MTL
DtlHashTable
;
41
class
DT_DLL_MTL
DtcParam
;
42
43
#ifdef MEMCHK
44
extern
DT_DLL_MTL
int
DtAllocObjCnt;
45
extern
DT_DLL_MTL
int
DtMaxAllocObjCnt;
46
#endif
47
50
extern
DT_DLL_MTL
char
*
DtMtlReadEscapeChar
;
51
53
54
enum
DtlTagType
55
{
56
DtpNull
,
57
DtpSymbol
,
58
DtpFix
,
59
DtpFlonum
,
60
DtpList
,
61
DtpSpecialForm
,
62
DtpCompiledC
,
63
DtpString
,
64
DtpLocative
,
65
DtpProcedure
,
66
DtpFrame
67
};
68
69
class
DT_DLL_MTL
DtlObjPtr
70
{
71
friend
class
DtlObj
;
72
73
public
:
74
DtlObjPtr
();
75
DtlObjPtr
(
const
DtlObjPtr
&);
76
DtlObjPtr
(
DtlTagType
);
77
DtlObjPtr
(
int
);
78
DtlObjPtr
(
double
);
79
DtlObjPtr
(
const
char
*);
80
~
DtlObjPtr
();
81
DtlObjPtr
& operator = (
const
DtlObjPtr
&);
82
int
operator ==
(
const
DtlObjPtr
&)
const
;
83
operator
void
*()
const
;
84
DtlObj
* operator -> ()
const
;
85
DtlObj
&
operator *
()
const
;
86
88
int
isNull()
const
;
89
90
public
:
91
92
static
DtlObjPtr
t();
93
static
DtlObjPtr
nil();
94
static
DtlObjPtr
unbound();
95
96
private
:
97
98
DtlObj
*
ptr
;
99
};
100
101
typedef
DtlObjPtr
(*
DtlFcn
) (
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
102
typedef
DtlFcn
DtlCompiledCFcnWithEnv
;
103
typedef
void
*
DtlPtrToNode
;
104
105
class
DT_DLL_MTL
DtlObj
{
106
friend
class
DtlObjPtr
;
107
public
:
108
DtlObj
(
DtlTagType
);
109
DtlObj
(
int
);
110
DtlObj
(
double
);
111
DtlObj
(
const
char
*);
112
~
DtlObj
();
113
114
DtlTagType
tag();
115
void
setTag(
DtlTagType
);
116
117
int
refcnt();
118
void
setRefcnt(
int
);
119
120
char
gone();
121
void
setGone(
char
);
122
123
DtlObjPtr
car();
124
void
setCar(
const
DtlObjPtr
&);
125
DtlObjPtr
cdr();
126
void
setCdr(
const
DtlObjPtr
&);
127
128
char
* pname();
129
void
setPname(
const
char
*);
130
131
int
fixnum();
132
void
setFixnum(
int
);
133
134
double
flonum();
135
void
setFlonum(
double
);
136
137
char
* string();
138
void
setString(
const
char
*);
139
140
DtlPtrToNode
nodeptr();
141
void
setNodeptr(
DtlPtrToNode
);
142
143
char
* fcnPname();
144
void
setFcnPname(
const
char
*);
145
146
DtlCompiledCFcnWithEnv
fcnCode();
147
void
setFcnCode(
DtlCompiledCFcnWithEnv
);
148
149
DtlObjPtr
procParams();
150
void
setProcParams(
const
DtlObjPtr
&);
151
152
DtlObjPtr
procBody();
153
void
setProcBody(
const
DtlObjPtr
&);
154
155
DtlObjPtr
& procEnv();
156
void
setProcEnv(
const
DtlObjPtr
&);
157
158
DtlObjPtr
frameParent();
159
void
setFrameParent(
const
DtlObjPtr
&);
160
161
DtlHashTable
* frameBindings();
162
void
setFrameBindings(
DtlHashTable
*);
163
168
int
registerVal(
DtcParam
* param);
169
173
DtList
* params();
174
175
void
print();
176
void
DtcObjFprint(FILE* s);
177
void
DtcPrintList(FILE* s);
178
179
180
private
:
181
DtlTagType
tg
;
182
int
rcnt
;
183
char
gn
;
184
187
DtlObjPtr
ptr1
;
188
DtlObjPtr
ptr2
;
189
DtlObjPtr
ptr3
;
190
191
union
vl
192
{
193
char
*
symbname
;
/* print name for symbol */
194
int
fixnum
;
/* fixed point number (int) */
195
double
flonum
;
/* floating point (double) */
196
char
*
s
;
/* for strings */
197
DtlPtrToNode
ptr
;
/* locatives */
198
struct
Fcn
199
{
200
char
*
pname
;
201
DtlCompiledCFcnWithEnv
fcn
;
202
} compiled_c_fcn;
203
/* struct cns
204
{
205
DtlObjPtr car;
206
DtlObjPtr cdr;
207
} cons;
208
struct proc
209
{
210
DtlObjPtr params;
211
DtlObjPtr body;
212
DtlObjPtr p_env;
213
} procedure;
214
*/
215
struct
frm
216
{
219
DtlHashTable
*
bindings
;
220
DtList
*
allParams
;
221
} frame;
222
} val;
223
};
224
227
DT_DLL_MTL
DtlObjPtr
DtcLoadLispFile
(
char
*filename,
228
const
DtlObjPtr
& env,
DtList
* allParams,
int
complain = 1);
229
DT_DLL_MTL
DtlObjPtr
DtcLoadLispFile
(
const
DtlObjPtr
& pathlist,
230
char
*filename,
const
DtlObjPtr
& env,
DtList
* allParams,
int
complain=1);
231
DT_DLL_MTL
DtlObjPtr
DtcLoadLispFileOrExpr
(
232
char
*arg,
const
DtlObjPtr
& env,
DtList
* allParams,
int
complain = 1);
233
DT_DLL_MTL
DtlObjPtr
DtcLoadLispExpr
(
234
char
*lispLine,
const
DtlObjPtr
& env,
DtList
* allParams,
int
complain = 1);
235
237
DT_DLL_MTL
DtlObjPtr
DtcHaltAndCatchFire
(
char
*diagnostic);
238
241
DT_DLL_MTL
DtlObjPtr
DtcInternCompiledC
(
242
char
*name,
DtlCompiledCFcnWithEnv
fcn,
const
DtlObjPtr
& env);
243
DT_DLL_MTL
DtlObjPtr
DtcPtrToNode
(
244
DtlTagType
t,
DtlPtrToNode
ptr);
245
DT_DLL_MTL
DtlObjPtr
DtcInternPtr
(
246
char
*name,
const
DtlObjPtr
& value,
const
DtlObjPtr
& env);
247
251
DT_DLL_MTL
DtlObjPtr
DtcInternSpecialForm
(
252
char
*name,
DtlCompiledCFcnWithEnv
fcn,
const
DtlObjPtr
& env);
253
260
261
DT_DLL_MTL
int
DtcSetIfBoundp
(
262
char
*lisp_var_name,
int
*cvar,
const
DtlObjPtr
& env);
263
DT_DLL_MTL
int
DtcSetIfBoundp
(
264
char
*lisp_var_name,
double
*cvar,
const
DtlObjPtr
& env);
265
DT_DLL_MTL
int
DtcSetIfBoundp
(
266
char
*lisp_var_name,
char
** cvar,
const
DtlObjPtr
& env);
267
269
DT_DLL_MTL
void
IncObjRefCnt
(
DtlObj
*obj);
270
DT_DLL_MTL
void
DecObjRefCnt
(
DtlObj
*obj);
271
DT_DLL_MTL
int
EnvLocalProcRefcnt
(
DtlObj
*env);
272
DT_DLL_MTL
int
EnvLocalProcRefcnt
(
const
DtlObjPtr
& env);
273
276
DT_DLL_MTL
DtlObjPtr
DtcCBooleanToLispBoolean
(
int
i);
277
DT_DLL_MTL
DtlObjPtr
DtcCaddddddr
(
const
DtlObjPtr
& c);
278
DT_DLL_MTL
DtlObjPtr
DtcCadddddr
(
const
DtlObjPtr
& c);
279
DT_DLL_MTL
DtlObjPtr
DtcCaddddr
(
const
DtlObjPtr
& c);
280
DT_DLL_MTL
DtlObjPtr
DtcCadddr
(
const
DtlObjPtr
& c);
281
DT_DLL_MTL
DtlObjPtr
DtcCaddr
(
const
DtlObjPtr
& c);
282
DT_DLL_MTL
DtlObjPtr
DtcCadr
(
const
DtlObjPtr
& c);
283
DT_DLL_MTL
DtlObjPtr
DtcCar
(
const
DtlObjPtr
& c);
284
DT_DLL_MTL
DtlObjPtr
DtcCdr
(
const
DtlObjPtr
& c);
285
DT_DLL_MTL
DtlObjPtr
DtcCons
(
const
DtlObjPtr
& car,
const
DtlObjPtr
& cdr);
286
DT_DLL_MTL
DtlObjPtr
DtcAppend
(
const
DtlObjPtr
&,
const
DtlObjPtr
&);
287
DT_DLL_MTL
DtlObjPtr
DtcAssoc
(
const
DtlObjPtr
& thing,
const
DtlObjPtr
& alist);
288
DT_DLL_MTL
DtlObjPtr
DtcAssv
(
const
DtlObjPtr
& thing,
const
DtlObjPtr
& alist);
289
DT_DLL_MTL
DtlObjPtr
DtcAssq
(
const
DtlObjPtr
& thing,
const
DtlObjPtr
& alist);
290
DT_DLL_MTL
DtlObjPtr
DtcReverse
(
const
DtlObjPtr
&);
291
DT_DLL_MTL
DtlObjPtr
DtcEval
(
const
DtlObjPtr
& ,
const
DtlObjPtr
& env);
292
DT_DLL_MTL
DtlObjPtr
DtcIntern
(
char
*name,
const
DtlObjPtr
& env);
293
DT_DLL_MTL
DtlObjPtr
DtcMakeSymbol
(
char
*pname);
294
DT_DLL_MTL
DtlObjPtr
DtcPrint
(
const
DtlObjPtr
& c);
295
DT_DLL_MTL
DtlObjPtr
DtcRead
(
DtlInputStream
*f,
const
DtlObjPtr
& env);
296
DT_DLL_MTL
DtlObjPtr
DtcSet
(
const
DtlObjPtr
& c,
const
DtlObjPtr
& value,
const
DtlObjPtr
& env);
297
#if DT_GLOBAL_ENV
298
DT_DLL_MTL
int
DtcBoundp
(
const
DtlObjPtr
& sym);
299
DT_DLL_MTL
DtlObjPtr
DtcSet
(
const
DtlObjPtr
& c,
const
DtlObjPtr
& value);
300
DT_DLL_MTL
DtlObjPtr
DtcIntern
(
char
*name);
301
DT_DLL_MTL
DtlObjPtr
DtcRead
(
DtlInputStream
*f);
302
#endif
303
#define DtcSet1Env DtcSet
304
DT_DLL_MTL
DtlObjPtr
DtcSymeval
(
const
DtlObjPtr
& c,
const
DtlObjPtr
& env);
305
DT_DLL_MTL
int
DtcBoundp
(
const
DtlObjPtr
& sym,
const
DtlObjPtr
& env);
306
DT_DLL_MTL
int
DtcEq
(
const
DtlObjPtr
& a,
const
DtlObjPtr
& b);
307
DT_DLL_MTL
int
DtcEqual
(
const
DtlObjPtr
& c1,
const
DtlObjPtr
& c2);
308
DT_DLL_MTL
int
DtcEqualSign
(
const
DtlObjPtr
& c1,
const
DtlObjPtr
& c2);
309
DT_DLL_MTL
int
DtcLength
(
const
DtlObjPtr
& c);
310
DT_DLL_MTL
int
DtcListp
(
const
DtlObjPtr
& c);
311
DT_DLL_MTL
int
DtcNull
(
const
DtlObjPtr
& c);
312
DT_DLL_MTL
int
DtcNumberp
(
const
DtlObjPtr
& c);
313
DT_DLL_MTL
int
DtcStringEqual
(
const
DtlObjPtr
& s1,
const
DtlObjPtr
& s2);
314
DT_DLL_MTL
int
DtcStringp
(
const
DtlObjPtr
& c);
315
DT_DLL_MTL
int
DtcLocativep
(
const
DtlObjPtr
& c);
316
318
DT_DLL_MTL
DtlObjPtr
DtcErrPrint
(
const
DtlObjPtr
& c);
324
325
DT_DLL_MTL
DtlObjPtr
DtlAbort
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
326
DT_DLL_MTL
DtlObjPtr
DtlAbs
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
327
DT_DLL_MTL
DtlObjPtr
DtlAnd
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
328
DT_DLL_MTL
DtlObjPtr
DtlAppend
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
329
DT_DLL_MTL
DtlObjPtr
DtlAssoc
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
330
DT_DLL_MTL
DtlObjPtr
DtlAssq
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
331
DT_DLL_MTL
DtlObjPtr
DtlAssv
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
332
DT_DLL_MTL
DtlObjPtr
DtlCond
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
333
DT_DLL_MTL
DtlObjPtr
DtlCos
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
334
DT_DLL_MTL
DtlObjPtr
DtlDescribe
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
335
DT_DLL_MTL
DtlObjPtr
DtlDivide
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
336
DT_DLL_MTL
DtlObjPtr
DtlEnvDump
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
337
DT_DLL_MTL
DtlObjPtr
DtlEq
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
338
DT_DLL_MTL
DtlObjPtr
DtlEqual
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
339
DT_DLL_MTL
DtlObjPtr
DtlEqualSign
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
340
DT_DLL_MTL
DtlObjPtr
DtlEval
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
341
DT_DLL_MTL
DtlObjPtr
DtlExit
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
342
DT_DLL_MTL
DtlObjPtr
DtlFormat
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
343
DT_DLL_MTL
DtlObjPtr
DtlFrameBindings
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
344
DT_DLL_MTL
DtlObjPtr
DtlFrameBound
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
345
DT_DLL_MTL
DtlObjPtr
DtlFrameParent
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
346
DT_DLL_MTL
DtlObjPtr
DtlGetenv
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
347
DT_DLL_MTL
DtlObjPtr
DtlGreater
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
348
DT_DLL_MTL
DtlObjPtr
DtlGreaterEqual
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
349
DT_DLL_MTL
DtlObjPtr
DtlIf
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
350
DT_DLL_MTL
DtlObjPtr
DtlLCar
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
351
DT_DLL_MTL
DtlObjPtr
DtlLCdr
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
352
DT_DLL_MTL
DtlObjPtr
DtlLCons
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
353
DT_DLL_MTL
DtlObjPtr
DtlLambda
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
354
DT_DLL_MTL
DtlObjPtr
DtlLet
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
355
DT_DLL_MTL
DtlObjPtr
DtlLength
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
356
DT_DLL_MTL
DtlObjPtr
DtlLess
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
357
DT_DLL_MTL
DtlObjPtr
DtlLessEqual
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
358
DT_DLL_MTL
DtlObjPtr
DtlList
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
359
DT_DLL_MTL
DtlObjPtr
DtlListp
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
360
DT_DLL_MTL
DtlObjPtr
DtlLoad
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
361
DT_DLL_MTL
DtlObjPtr
DtlLogIOr
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
362
DT_DLL_MTL
DtlObjPtr
DtlMem
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
363
DT_DLL_MTL
DtlObjPtr
DtlMinus
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
364
DT_DLL_MTL
DtlObjPtr
DtlMultiply
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
365
DT_DLL_MTL
DtlObjPtr
DtlNewFrame
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
366
DT_DLL_MTL
DtlObjPtr
DtlNotOrNull
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
367
DT_DLL_MTL
DtlObjPtr
DtlNumberp
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
368
DT_DLL_MTL
DtlObjPtr
DtlOr
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
369
DT_DLL_MTL
DtlObjPtr
DtlPlus
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
370
DT_DLL_MTL
DtlObjPtr
DtlPopen
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
371
DT_DLL_MTL
DtlObjPtr
DtlPrin1
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
372
DT_DLL_MTL
DtlObjPtr
DtlPutenv
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
373
DT_DLL_MTL
DtlObjPtr
DtlReverse
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
374
DT_DLL_MTL
DtlObjPtr
DtlQuote
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
375
DT_DLL_MTL
DtlObjPtr
DtlSequence
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
376
DT_DLL_MTL
DtlObjPtr
DtlSetq
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
377
DT_DLL_MTL
DtlObjPtr
DtlSetqBoundVariable
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
378
DT_DLL_MTL
DtlObjPtr
DtlSin
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
379
DT_DLL_MTL
DtlObjPtr
DtlStringAppend
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
380
DT_DLL_MTL
DtlObjPtr
DtlStringEqual
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
381
DT_DLL_MTL
DtlObjPtr
DtlStringp
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
382
DT_DLL_MTL
DtlObjPtr
DtlTheFrame
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
383
DT_DLL_MTL
DtlObjPtr
DtlLocativep
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
384
DT_DLL_MTL
DtlObjPtr
DtlSystem
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
385
DT_DLL_MTL
DtlObjPtr
DtlTerpri
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
386
388
DT_DLL_MTL
DtlObjPtr
DtlPrintRegistered
(
const
DtlObjPtr
&,
const
DtlObjPtr
& env);
389
DT_DLL_MTL
DtlObjPtr
DtlPathCross
(
const
DtlObjPtr
&,
const
DtlObjPtr
& env);
390
392
DT_DLL_MTL
DtlObjPtr
DtlStringToNumber
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
393
DT_DLL_MTL
DtlObjPtr
DtlNumberToString
(
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
394
395
/* ---------------------- REGISTER ---------------------- */
396
/*
397
* DtcRegister facilitates the setting of simple C variables
398
* (i.e. double, int, char *) from MTL files.
399
*
400
* Each call to DtcRegister creates a lisp-variable "name" and
401
* initializes it to the value pointed to by "addr".
402
* It also adds the lisp-variable and C-address to a list of
403
* "registered" variables.
404
* At the end of DtlLoadLispFile, every registered variable will have
405
* its lisp value evaluated and copied to the registered C address.
406
*
407
* Note: Lisp evaluation and copy to C does not occur until the end of
408
* DtlLoadLispFile, so modified values will not automatically be
409
* visible to C functions called from within a lisp file. To bring
410
* a C value up-to-date from within such a function, call
411
* DtcSetIfBoundp() or DtcLispToC().
412
*
413
* The macro DtcREGISTER can be useful to ensure that corresponding C
414
* and Lisp variables share the same name.
415
*
416
* Use of setqb (aka setq-bound-variable) is recommended for registered
417
* variables because it will complain if the parameter is misspelled.
418
*
419
* The registered address must be valid at the time DtlLoadLispFile is
420
* called [i.e. be careful with automatic variables on the stack.]
421
*
422
* All calls to DtcRegister() should be made between
423
* DtlGlobalEnvInit() and DtlLoadLispFile().
424
*/
425
430
DT_DLL_MTL
void
DtcGlobalEnvInit
(
DtlObjPtr
& env);
431
432
#define DtcREGISTER(var, env, params) DtcRegister(#var, &var, env, params)
433
#define DtcDEFINE(type, var, dflt) type var = dflt; DtcREGISTER(var)
434
435
DT_DLL_MTL
int
DtcRegister
(
436
const
char
*name,
float
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
437
DT_DLL_MTL
int
DtcRegister
(
438
const
char
*name,
double
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
439
DT_DLL_MTL
int
DtcRegister
(
440
const
char
*name,
int
* addr,
const
DtlObjPtr
& env,
DtList
* allParams);
441
DT_DLL_MTL
int
DtcRegister
(
442
const
char
*name,
unsigned
long
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
443
DT_DLL_MTL
int
DtcRegister
(
444
const
char
*name,
char
**addr,
const
DtlObjPtr
& env,
DtList
* allParams);
445
DT_DLL_MTL
int
DtcRegister
(
446
const
char
*name,
DtString
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
447
DT_DLL_MTL
int
DtcRegister
(
448
const
char
*name,
long
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
449
DT_DLL_MTL
int
DtcRegister
(
450
const
char
*name,
short
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
451
DT_DLL_MTL
int
DtcRegister
(
452
const
char
*name,
unsigned
short
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
453
#if DT_HAVE_64BIT_LONGS
454
DT_DLL_MTL
int
DtcRegister
(
455
const
char
*name,
unsigned
int
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
456
#endif
457
461
DT_DLL_MTL
void
DtcLispToC
(
DtList
* allParams);
462
463
467
DT_DLL_MTL
void
DtcCToLisp
(
DtList
* allParams);
468
470
DT_DLL_MTL
void
DtcEmptyParamList
(
DtList
* allParams);
471
473
474
inline
int
DtlObj::refcnt
()
475
{
476
return
rcnt;
477
}
478
479
inline
void
DtlObj::setRefcnt
(
int
r)
480
{
481
rcnt = r;
482
}
483
484
inline
DtlObjPtr::~DtlObjPtr
()
485
{
486
DecObjRefCnt
(ptr);
487
}
488
489
#ifdef DtUSE_UTILITIES_NAMESPACE
490
}
491
#endif
492
493
#endif
/* _MTL_H_ */
494
495
496
Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (
www.mak.com
)