VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mtl.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 MAK Technologies, Inc
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 
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 
56 {
68 };
69 
71 {
72  friend class DtlObj;
73 
74 public:
75  DtlObjPtr();
76  DtlObjPtr(const DtlObjPtr&);
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 
100 };
101 
102 typedef DtlObjPtr (*DtlFcn) (const DtlObjPtr& args, const DtlObjPtr& env);
104 typedef void* DtlPtrToNode;
105 
107  friend class DtlObjPtr;
108  public:
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:
182  int rcnt;
183  char gn;
184 
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;
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  {
221  } frame;
222  } val;
223 };
224 
227 DT_DLL_MTL DtlObjPtr DtcLoadLispFile(char *filename,
228  const DtlObjPtr& env, DtList* allParams, int complain = 1);
230  char *filename, const DtlObjPtr& env, DtList* allParams, int complain=1);
232  char *arg, const DtlObjPtr& env, DtList* allParams, int complain = 1);
234  char *lispLine, const DtlObjPtr& env, DtList* allParams, int complain = 1);
235 
237 DT_DLL_MTL DtlObjPtr DtcHaltAndCatchFire(char *diagnostic);
238 
242  char *name, DtlCompiledCFcnWithEnv fcn, const DtlObjPtr& env);
244  DtlTagType t, DtlPtrToNode ptr);
246  char *name, const DtlObjPtr& value, const DtlObjPtr& env);
247 
252  char *name, DtlCompiledCFcnWithEnv fcn, const DtlObjPtr& env);
253 
260 
262  char *lisp_var_name, int *cvar, const DtlObjPtr& env);
264  char *lisp_var_name, double *cvar, const DtlObjPtr& env);
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);
272 DT_DLL_MTL int EnvLocalProcRefcnt(const DtlObjPtr& env);
273 
285 DT_DLL_MTL DtlObjPtr DtcCons(const DtlObjPtr& car, const DtlObjPtr& cdr);
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);
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);
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);
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 
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);
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 
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);
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 
440 
441 #define DtcREGISTER(var, env, params) DtcRegister(#var, &var, env, params)
442 #define DtcDEFINE(type, var, dflt) type var = dflt; DtcREGISTER(var)
443 
445  const char *name, float *addr, const DtlObjPtr& env, DtList* allParams);
447  const char *name, double *addr, const DtlObjPtr& env, DtList* allParams);
449  const char *name, int* addr, const DtlObjPtr& env, DtList* allParams);
451  const char *name, unsigned long *addr, const DtlObjPtr& env, DtList* allParams);
453  const char *name, char **addr, const DtlObjPtr& env, DtList* allParams);
455  const char *name, DtString *addr, const DtlObjPtr& env, DtList* allParams);
457  const char *name, long *addr, const DtlObjPtr& env, DtList* allParams);
459  const char *name, short *addr, const DtlObjPtr& env, DtList* allParams);
461  const char *name, unsigned short *addr, const DtlObjPtr& env, DtList* allParams);
462 #if DT_HAVE_64BIT_LONGS
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 
494 {
495  DecObjRefCnt(ptr);
496 }
497 
498 #ifdef DtUSE_UTILITIES_NAMESPACE
499 }
500 #endif
501 
502 #endif /* _MTL_H_ */
503 
504 
505 
DT_DLL_MTL DtlObjPtr DtlAnd(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL void DtcEmptyParamList(DtList *allParams)
Remove any DtcParams that have been added to allParams.
DT_DLL_MTL int DtcSetIfBoundp(char *lisp_var_name, int *cvar, const DtlObjPtr &env)
To make setting C++ variables easier (works by side-effect).
DT_DLL_MTL char * DtMtlReadEscapeChar
set this value to something other than 0 to allow escape characters
DT_DLL_MTL int DtcStringp(const DtlObjPtr &c)
DT_DLL_MTL DtlObjPtr DtlEqualSign(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcInternCompiledC(char *name, DtlCompiledCFcnWithEnv fcn, const DtlObjPtr &env)
This function installs your lambda-arg-style function with the given name so it can be called from th...
DT_DLL_MTL DtlObjPtr DtcIntern(char *name, const DtlObjPtr &env)
const bool operator==(const DtU128 &lhs, const DtU128 &rhs)
DT_DLL_MTL DtlObjPtr DtcMakeSymbol(char *pname)
DT_DLL_MTL DtlObjPtr DtcAssq(const DtlObjPtr &thing, const DtlObjPtr &alist)
This file contains the declaration of DtMutex.
char gn
Definition: mtl.h:183
DT_DLL_MTL DtlObjPtr DtlLet(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlQuote(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlIf(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlLocativep(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlMultiply(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL int DtcBoundp(const DtlObjPtr &sym, const DtlObjPtr &env)
Definition: mtl.h:61
DT_DLL_MTL DtlObjPtr DtlFormat(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcCadddddr(const DtlObjPtr &c)
DT_DLL_MTL DtlObjPtr DtlListp(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlEq(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcLoadLispExpr(char *lispLine, const DtlObjPtr &env, DtList *allParams, int complain=1)
DT_DLL_MTL DtlObjPtr DtlStringToNumber(const DtlObjPtr &args, const DtlObjPtr &env)
Conversion functions.
Definition: mtl.h:215
This file contains the declaration of DtList and DtListItem.
DtlTagType tg
Definition: mtl.h:181
Contains the DtString class declaration.
DT_DLL_MTL DtlObjPtr DtlCond(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcAssv(const DtlObjPtr &thing, const DtlObjPtr &alist)
Definition: mtl.h:62
DT_DLL_MTL DtlObjPtr DtlFrameBound(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL int DtcRegister(const char *name, float *addr, const DtlObjPtr &env, DtList *allParams)
DT_DLL_MTL int DtcListp(const DtlObjPtr &c)
DT_DLL_MTL DtlObjPtr DtlEqual(const DtlObjPtr &args, const DtlObjPtr &env)
DtlFcn DtlCompiledCFcnWithEnv
Definition: mtl.h:103
DT_DLL_MTL DtlObjPtr DtcAssoc(const DtlObjPtr &thing, const DtlObjPtr &alist)
char * symbname
Definition: mtl.h:193
DT_DLL_MTL DtlObjPtr DtlDescribe(const DtlObjPtr &args, const DtlObjPtr &env)
Definition: mtl.h:65
DT_DLL_MTL DtlObjPtr DtlTheFrame(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlEnvDump(const DtlObjPtr &args, const DtlObjPtr &env)
Definition: mtl.h:64
DtlObj * ptr
Definition: mtl.h:99
DT_DLL_MTL DtlObjPtr DtlSetq(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlAssv(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL int DtcNull(const DtlObjPtr &c)
DtlCompiledCFcnWithEnv fcn
Definition: mtl.h:201
Definition: mtl.h:67
DT_DLL_MTL DtlObjPtr DtcErrPrint(const DtlObjPtr &c)
Our own equivalent of DtcPrint for stderr.
DT_DLL_MTL void DecObjRefCnt(DtlObj *obj)
DT_DLL_MTL DtlObjPtr DtcCons(const DtlObjPtr &car, const DtlObjPtr &cdr)
DT_DLL_MTL DtlObjPtr DtcCar(const DtlObjPtr &c)
DT_DLL_MTL DtlObjPtr DtlMinus(const DtlObjPtr &args, const DtlObjPtr &env)
Definition: mtl.h:60
DT_DLL_MTL DtlObjPtr DtlList(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcPtrToNode(DtlTagType t, DtlPtrToNode ptr)
Functions in vlPrint.h provide an error and print facility for vrlink.
DT_DLL_MTL DtlObjPtr DtcRead(DtlInputStream *f, const DtlObjPtr &env)
class DT_DLL_MTL DtlObj
Definition: mtl.h:39
DtlTagType
LCU pg. 173.
Definition: mtl.h:55
DT_DLL_MTL DtlObjPtr DtlLess(const DtlObjPtr &args, const DtlObjPtr &env)
Definition: mtl.h:70
DT_DLL_MTL DtlObjPtr DtlStringAppend(const DtlObjPtr &args, const DtlObjPtr &env)
void* ptr (to imitate locatives).
Definition: mtl.h:106
int refcnt()
Inlines.
Definition: mtl.h:483
DT_DLL_MTL DtlObjPtr DtcCdr(const DtlObjPtr &c)
DtlPtrToNode ptr
Definition: mtl.h:197
DT_DLL_MTL DtlObjPtr DtlFrameParent(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcCadddr(const DtlObjPtr &c)
DT_DLL_MTL DtlObjPtr DtlLambda(const DtlObjPtr &args, const DtlObjPtr &env)
This is where symbol_entries are stored.
Definition: mtlenv.h:30
DtlObjPtr(* DtlFcn)(const DtlObjPtr &args, const DtlObjPtr &env)
Definition: mtl.h:102
DT_DLL_MTL DtlObjPtr DtcCaddddr(const DtlObjPtr &c)
DT_DLL_MTL DtlObjPtr DtlOr(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlLogIOr(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcEval(const DtlObjPtr &, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlMem(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlNewFrame(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlPutenv(const DtlObjPtr &args, const DtlObjPtr &env)
void * DtlPtrToNode
Definition: mtl.h:104
DT_DLL_MTL DtlObjPtr DtlAppend(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcReverse(const DtlObjPtr &)
DT_DLL_MTL DtlObjPtr DtlAssoc(const DtlObjPtr &args, const DtlObjPtr &env)
int fixnum
Definition: mtl.h:194
DT_DLL_MTL DtlObjPtr DtlLessEqual(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcCaddddddr(const DtlObjPtr &c)
DT_DLL_MTL DtlObjPtr DtcInternPtr(char *name, const DtlObjPtr &value, const DtlObjPtr &env)
DT_DLL_MTL int DtcLocativep(const DtlObjPtr &c)
DT_DLL_MTL void DtlClearLoadPaths()
DtList is deprecated, please use std::list&lt;T&gt;.
Definition: vlList.h:71
DT_DLL_MTL void IncObjRefCnt(DtlObj *obj)
Memory management (these functions use DtlObj*&#39;s, but you shouldn&#39;t!)
DT_DLL_MTL int DtcNumberp(const DtlObjPtr &c)
DT_DLL_MTL int DtcStringEqual(const DtlObjPtr &s1, const DtlObjPtr &s2)
DT_DLL_MTL DtlObjPtr DtlSequence(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcLoadLispFile(char *filename, const DtlObjPtr &env, DtList *allParams, int complain=1)
Load a LISP file or expression.
DT_DLL_MTL void DtcCToLisp(DtList *allParams)
Sets the value all registered variables in lisp from the registered C address.
DT_DLL_MTL DtlObjPtr DtlAssq(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlAbort(const DtlObjPtr &args, const DtlObjPtr &env)
Standard LISP subrs with lambda-style args for calling from the evaluator.
DT_DLL_MTL DtlObjPtr DtlLength(const DtlObjPtr &args, const DtlObjPtr &env)
Definition: mtl.h:59
DT_DLL_MTL DtlObjPtr DtlNotOrNull(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlLoad(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlTerpri(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlSin(const DtlObjPtr &args, const DtlObjPtr &env)
DtlObjPtr ptr2
Definition: mtl.h:188
double flonum
Definition: mtl.h:195
DtlObjPtr ptr1
Used to track doubly-deleted objects.
Definition: mtl.h:187
void setRefcnt(int)
Definition: mtl.h:488
DT_DLL_MTL DtlObjPtr DtlLCdr(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL int DtcEqualSign(const DtlObjPtr &c1, const DtlObjPtr &c2)
~DtlObjPtr()
Definition: mtl.h:493
DT_DLL_MTL DtlObjPtr DtcSet(const DtlObjPtr &c, const DtlObjPtr &value, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcInternSpecialForm(char *name, DtlCompiledCFcnWithEnv fcn, const DtlObjPtr &env)
This function installs LISP &quot;special forms&quot; such as setq and quote.
DT_DLL_MTL int DtcEqual(const DtlObjPtr &c1, const DtlObjPtr &c2)
DT_DLL_MTL DtlObjPtr DtlPopen(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlPlus(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlGreaterEqual(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlDivide(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlPrintRegistered(const DtlObjPtr &, const DtlObjPtr &env)
Some extensions.
This file declares DtlInputStream, DtlFileInputStream.
DT_DLL_MTL void DtcLispToC(DtList *allParams)
Evaluates every registered variable and copies the value to the registered C address.
DT_DLL_MTL DtlObjPtr DtcCBooleanToLispBoolean(int i)
Standard LISP functions with C-style args For manipulating DtlObj&#39;s from C programs.
DT_DLL_MTL DtlObjPtr DtcPrint(const DtlObjPtr &c)
DT_DLL_MTL DtlObjPtr DtcCaddr(const DtlObjPtr &c)
DT_DLL_MTL void DtlAddLoadPath(const char *path)
When a load command is used in an mtl file only full paths and paths relative to the working director...
DT_DLL_MTL DtlObjPtr DtlLCons(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlGreater(const DtlObjPtr &args, const DtlObjPtr &env)
Definition: mtl.h:57
DT_DLL_MTL DtlObjPtr DtlEval(const DtlObjPtr &args, const DtlObjPtr &env)
class DT_DLL_MTL DtlObjPtr
Definition: mtl.h:40
DT_DLL_MTL DtlObjPtr DtcCadr(const DtlObjPtr &c)
Definition: mtl.h:66
DtlObjPtr ptr3
Definition: mtl.h:189
DT_DLL_MTL DtlObjPtr DtlPathCross(const DtlObjPtr &, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcHaltAndCatchFire(char *diagnostic)
Error handling. Throws a DtException with a brief description.
DT_DLL_MTL DtlObjPtr DtlGetenv(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcAppend(const DtlObjPtr &, const DtlObjPtr &)
DT_DLL_MTL DtlObjPtr DtlSystem(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlReverse(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlNumberToString(const DtlObjPtr &args, const DtlObjPtr &env)
DtlHashTable * bindings
DtlObjPtr parent; int external_refcnt;.
Definition: mtl.h:219
Definition: mtl.h:198
class DT_DLL_MTL DtcParam
Definition: mtl.h:42
DT_DLL_MTL DtlObjPtr DtlNumberp(const DtlObjPtr &args, const DtlObjPtr &env)
#define DT_DLL_MTL
Definition: vlMachineTypes.h:106
DT_DLL_MTL DtlObjPtr DtlStringp(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlFrameBindings(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtcSymeval(const DtlObjPtr &c, const DtlObjPtr &env)
DtList * allParams
Definition: mtl.h:220
DT_DLL_MTL DtlObjPtr DtlLCar(const DtlObjPtr &args, const DtlObjPtr &env)
Definition: mtl.h:63
DT_DLL_MTL DtlObjPtr DtlExit(const DtlObjPtr &args, const DtlObjPtr &env)
char * pname
Definition: mtl.h:200
DT_DLL_MTL int EnvLocalProcRefcnt(DtlObj *env)
DT_DLL_MTL DtlObjPtr DtlAbs(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL int DtcEq(const DtlObjPtr &a, const DtlObjPtr &b)
Instances of DtString are used to represent strings.
Definition: vlString.h:29
DT_DLL_MTL int DtcLength(const DtlObjPtr &c)
DT_DLL_MTL DtlObjPtr DtcLoadLispFileOrExpr(char *arg, const DtlObjPtr &env, DtList *allParams, int complain=1)
DT_DLL_MTL DtlObjPtr DtlCos(const DtlObjPtr &args, const DtlObjPtr &env)
DT_DLL_MTL DtlObjPtr DtlStringEqual(const DtlObjPtr &args, const DtlObjPtr &env)
This file contains typedefs for machine dependant types.
DT_DLL_MTL DtlObjPtr DtlSetqBoundVariable(const DtlObjPtr &args, const DtlObjPtr &env)
Input stream.
Definition: mtlstream.h:23
Definition: mtl.h:191
DT_DLL_MTL void DtcGlobalEnvInit(DtlObjPtr &env)
Defines global symbols, special functions, and standard lisp function in the environment.
Definition: mtl.h:58
int rcnt
Definition: mtl.h:182
DT_DLL_MTL DtlObjPtr DtlPrin1(const DtlObjPtr &args, const DtlObjPtr &env)
char * s
Definition: mtl.h:196

Document ID: Generated on Wed Mar 27 02:04:30 EDT 2024 from SVN revision 264570
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)