VR-Link API Documentation for HLA 1.3
Home
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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 <
vlutil/vlMutex.h
>
19
#include "
mtlstream.h
"
20
21
#ifdef DtUSE_UTILITIES_NAMESPACE
22
namespace
DtUSE_UTILITIES_NAMESPACE
23
{
24
#endif
25
26
#define DtlObjDebug(s) do { if (DtLispDebugOn) DtlInfo s; } while (0)
27
28
#define DtlError(string, obj) do { if (DtNotifyLevel >= DtNlFatal) \
29
fprintf(stderr, "Lisp Error: %s", string), DtcErrPrint(obj); } while (0)
30
31
#define DtlWarn(string, obj) do { if (DtNotifyLevel >= DtNlWarn) \
32
fprintf(stderr, "Lisp Warning: %s", string), DtcErrPrint(obj); } while (0)
33
34
#define DtlInfo(string, obj) do { if (DtNotifyLevel >= DtNlInfo) \
35
printf(string), DtcPrint(obj); } while (0)
36
37
//--------------------------------------------------------------------------
38
39
class
DT_DLL_MTL
DtlObj
;
40
class
DT_DLL_MTL
DtlObjPtr
;
41
class
DT_DLL_MTL
DtlHashTable
;
42
class
DT_DLL_MTL
DtcParam
;
43
44
#ifdef MEMCHK
45
extern
DT_DLL_MTL
int
DtAllocObjCnt;
46
extern
DT_DLL_MTL
int
DtMaxAllocObjCnt;
47
#endif
48
51
extern
DT_DLL_MTL
char
*
DtMtlReadEscapeChar
;
52
54
55
enum
DtlTagType
56
{
57
DtpNull
,
58
DtpSymbol
,
59
DtpFix
,
60
DtpFlonum
,
61
DtpList
,
62
DtpSpecialForm
,
63
DtpCompiledC
,
64
DtpString
,
65
DtpLocative
,
66
DtpProcedure
,
67
DtpFrame
68
};
69
70
class
DT_DLL_MTL
DtlObjPtr
71
{
72
friend
class
DtlObj
;
73
74
public
:
75
DtlObjPtr
();
76
DtlObjPtr
(
const
DtlObjPtr
&);
77
DtlObjPtr
(
DtlTagType
);
78
DtlObjPtr
(
int
);
79
DtlObjPtr
(
double
);
80
DtlObjPtr
(
const
char
*);
81
~
DtlObjPtr
();
82
DtlObjPtr
& operator = (
const
DtlObjPtr
&);
83
int
operator ==
(
const
DtlObjPtr
&)
const
;
84
operator
void
*()
const
;
85
DtlObj
* operator -> ()
const
;
86
DtlObj
&
operator *
()
const
;
87
89
int
isNull()
const
;
90
91
public
:
92
93
static
const
DtlObjPtr
& t();
94
static
const
DtlObjPtr
& nil();
95
static
const
DtlObjPtr
& unbound();
96
97
private
:
98
99
DtlObj
*
ptr
;
100
};
101
102
typedef
DtlObjPtr
(*
DtlFcn
) (
const
DtlObjPtr
& args,
const
DtlObjPtr
& env);
103
typedef
DtlFcn
DtlCompiledCFcnWithEnv
;
104
typedef
void
*
DtlPtrToNode
;
105
106
class
DT_DLL_MTL
DtlObj
{
107
friend
class
DtlObjPtr
;
108
public
:
109
DtlObj
(
DtlTagType
);
110
DtlObj
(
int
);
111
DtlObj
(
double
);
112
DtlObj
(
const
char
*);
113
~
DtlObj
();
114
115
DtlTagType
tag();
116
void
setTag(
DtlTagType
);
117
118
int
refcnt();
119
void
setRefcnt(
int
);
120
121
char
gone();
122
void
setGone(
char
);
123
124
DtlObjPtr
car();
125
void
setCar(
const
DtlObjPtr
&);
126
DtlObjPtr
cdr();
127
void
setCdr(
const
DtlObjPtr
&);
128
129
char
* pname();
130
void
setPname(
const
char
*);
131
132
int
fixnum();
133
void
setFixnum(
int
);
134
135
double
flonum();
136
void
setFlonum(
double
);
137
138
char
* string();
139
void
setString(
const
char
*);
140
141
DtlPtrToNode
nodeptr();
142
void
setNodeptr(
DtlPtrToNode
);
143
144
char
* fcnPname();
145
void
setFcnPname(
const
char
*);
146
147
DtlCompiledCFcnWithEnv
fcnCode();
148
void
setFcnCode(
DtlCompiledCFcnWithEnv
);
149
150
DtlObjPtr
procParams();
151
void
setProcParams(
const
DtlObjPtr
&);
152
153
DtlObjPtr
procBody();
154
void
setProcBody(
const
DtlObjPtr
&);
155
156
DtlObjPtr
& procEnv();
157
void
setProcEnv(
const
DtlObjPtr
&);
158
159
DtlObjPtr
frameParent();
160
void
setFrameParent(
const
DtlObjPtr
&);
161
162
DtlHashTable
* frameBindings();
163
void
setFrameBindings(
DtlHashTable
*);
164
169
int
registerVal(
DtcParam
* param);
170
174
DtList
* params();
175
176
void
print();
177
void
DtcObjFprint(FILE* s);
178
void
DtcPrintList(FILE* s);
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
401
DT_DLL_MTL
void
DtlAddLoadPath
(
const
char
* path);
402
DT_DLL_MTL
void
DtlClearLoadPaths
();
403
404
/* ---------------------- REGISTER ---------------------- */
405
/*
406
* DtcRegister facilitates the setting of simple C variables
407
* (i.e. double, int, char *) from MTL files.
408
*
409
* Each call to DtcRegister creates a lisp-variable "name" and
410
* initializes it to the value pointed to by "addr".
411
* It also adds the lisp-variable and C-address to a list of
412
* "registered" variables.
413
* At the end of DtlLoadLispFile, every registered variable will have
414
* its lisp value evaluated and copied to the registered C address.
415
*
416
* Note: Lisp evaluation and copy to C does not occur until the end of
417
* DtlLoadLispFile, so modified values will not automatically be
418
* visible to C functions called from within a lisp file. To bring
419
* a C value up-to-date from within such a function, call
420
* DtcSetIfBoundp() or DtcLispToC().
421
*
422
* The macro DtcREGISTER can be useful to ensure that corresponding C
423
* and Lisp variables share the same name.
424
*
425
* Use of setqb (aka setq-bound-variable) is recommended for registered
426
* variables because it will complain if the parameter is misspelled.
427
*
428
* The registered address must be valid at the time DtlLoadLispFile is
429
* called [i.e. be careful with automatic variables on the stack.]
430
*
431
* All calls to DtcRegister() should be made between
432
* DtlGlobalEnvInit() and DtlLoadLispFile().
433
*/
434
439
DT_DLL_MTL
void
DtcGlobalEnvInit
(
DtlObjPtr
& env);
440
441
#define DtcREGISTER(var, env, params) DtcRegister(#var, &var, env, params)
442
#define DtcDEFINE(type, var, dflt) type var = dflt; DtcREGISTER(var)
443
444
DT_DLL_MTL
int
DtcRegister
(
445
const
char
*name,
float
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
446
DT_DLL_MTL
int
DtcRegister
(
447
const
char
*name,
double
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
448
DT_DLL_MTL
int
DtcRegister
(
449
const
char
*name,
int
* addr,
const
DtlObjPtr
& env,
DtList
* allParams);
450
DT_DLL_MTL
int
DtcRegister
(
451
const
char
*name,
unsigned
long
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
452
DT_DLL_MTL
int
DtcRegister
(
453
const
char
*name,
char
**addr,
const
DtlObjPtr
& env,
DtList
* allParams);
454
DT_DLL_MTL
int
DtcRegister
(
455
const
char
*name,
DtString
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
456
DT_DLL_MTL
int
DtcRegister
(
457
const
char
*name,
long
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
458
DT_DLL_MTL
int
DtcRegister
(
459
const
char
*name,
short
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
460
DT_DLL_MTL
int
DtcRegister
(
461
const
char
*name,
unsigned
short
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
462
#if DT_HAVE_64BIT_LONGS
463
DT_DLL_MTL
int
DtcRegister
(
464
const
char
*name,
unsigned
int
*addr,
const
DtlObjPtr
& env,
DtList
* allParams);
465
#endif
466
470
DT_DLL_MTL
void
DtcLispToC
(
DtList
* allParams);
471
472
476
DT_DLL_MTL
void
DtcCToLisp
(
DtList
* allParams);
477
479
DT_DLL_MTL
void
DtcEmptyParamList
(
DtList
* allParams);
480
482
483
inline
int
DtlObj::refcnt
()
484
{
485
return
rcnt;
486
}
487
488
inline
void
DtlObj::setRefcnt
(
int
r)
489
{
490
rcnt = r;
491
}
492
493
inline
DtlObjPtr::~DtlObjPtr
()
494
{
495
DecObjRefCnt
(ptr);
496
}
497
498
#ifdef DtUSE_UTILITIES_NAMESPACE
499
}
500
#endif
501
502
#endif
/* _MTL_H_ */
503
504
505
Document ID: Generated on Mon Apr 8 04:49:21 EDT 2019 from SVN revision 197403
Copyright © 2005-2016 VT MÄK. All Rights Reserved (
www.mak.com
)