VR-Link API Documentation for DIS
mtl.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 *********************************************************************/
00005 #ifndef mtl_H_
00006 #define mtl_H_
00007 
00012 #include <stdio.h>
00013 #include <vlutil/vlMachineTypes.h>
00014 #include <vlutil/vlPrint.h>
00015 #include <vlutil/vlList.h>
00016 #include <vlutil/vlString.h>
00017 #include <vlutil/vlDebug.h>
00018 #include "mtlstream.h"
00019 
00020 #ifdef DtUSE_UTILITIES_NAMESPACE
00021 namespace DtUSE_UTILITIES_NAMESPACE
00022 {
00023 #endif
00024 
00025 #define DtlObjDebug(s)        do { if (DtLispDebugOn) DtlInfo s; } while (0)
00026 
00027 #define DtlError(string, obj) do { if (DtNotifyLevel >= DtNlFatal)      \
00028       fprintf(stderr, "Lisp Error: %s", string), DtcErrPrint(obj); } while (0)
00029 
00030 #define DtlWarn(string, obj)  do { if (DtNotifyLevel >= DtNlWarn)       \
00031       fprintf(stderr, "Lisp Warning: %s", string), DtcErrPrint(obj); } while (0)
00032 
00033 #define DtlInfo(string, obj)  do { if (DtNotifyLevel >= DtNlInfo)       \
00034       printf(string), DtcPrint(obj); } while (0)
00035 
00036 //--------------------------------------------------------------------------
00037 
00038 class DT_DLL_MTL DtlObj;
00039 class DT_DLL_MTL DtlObjPtr;
00040 class DT_DLL_MTL DtlHashTable;
00041 class DT_DLL_MTL DtcParam;
00042 
00043 #ifdef MEMCHK
00044 extern DT_DLL_MTL int DtAllocObjCnt;
00045 extern DT_DLL_MTL int DtMaxAllocObjCnt;
00046 #endif
00047 
00050 extern DT_DLL_MTL char* DtMtlReadEscapeChar;
00051 
00053 
00054 enum DtlTagType
00055 {
00056     DtpNull,
00057     DtpSymbol,
00058     DtpFix,
00059     DtpFlonum,
00060     DtpList,
00061     DtpSpecialForm,
00062     DtpCompiledC,
00063     DtpString,
00064     DtpLocative,
00065     DtpProcedure,
00066     DtpFrame
00067 };
00068 
00069 class DT_DLL_MTL DtlObjPtr 
00070 {
00071    friend class DtlObj;
00072 
00073 public:
00074    DtlObjPtr(); 
00075    DtlObjPtr(const DtlObjPtr&);
00076    DtlObjPtr(DtlTagType);
00077    DtlObjPtr(int);
00078    DtlObjPtr(double);
00079    DtlObjPtr(const char*);
00080    ~DtlObjPtr();
00081    DtlObjPtr& operator = (const DtlObjPtr&);
00082    int operator == (const DtlObjPtr&) const; 
00083    operator void*() const; 
00084    DtlObj* operator -> () const;
00085    DtlObj& operator * () const;
00086    
00088    int isNull() const; 
00089 
00090 public:
00091 
00092    static DtlObjPtr t();
00093    static DtlObjPtr nil();
00094    static DtlObjPtr unbound();
00095 
00096 private:  
00097 
00098    DtlObj* ptr;
00099 };
00100 
00101 typedef DtlObjPtr (*DtlFcn) (const DtlObjPtr& args, const DtlObjPtr& env); 
00102 typedef  DtlFcn DtlCompiledCFcnWithEnv;
00103 typedef void* DtlPtrToNode; 
00104 
00105 class DT_DLL_MTL DtlObj {
00106     friend class DtlObjPtr;
00107   public:
00108     DtlObj(DtlTagType);
00109     DtlObj(int);
00110     DtlObj(double);
00111     DtlObj(const char *);
00112     ~DtlObj();
00113 
00114     DtlTagType tag();
00115     void setTag(DtlTagType);
00116 
00117     int refcnt();
00118     void setRefcnt(int);
00119 
00120     char gone();
00121     void setGone(char);
00122 
00123     DtlObjPtr car();
00124     void setCar(const DtlObjPtr&);
00125     DtlObjPtr cdr();
00126     void setCdr(const DtlObjPtr&);
00127 
00128     char* pname();
00129     void setPname(const char*);
00130 
00131     int fixnum();
00132     void setFixnum(int);
00133 
00134     double flonum();
00135     void setFlonum(double);
00136 
00137     char* string();
00138     void setString(const char*);
00139 
00140     DtlPtrToNode nodeptr();
00141     void setNodeptr(DtlPtrToNode);
00142 
00143     char* fcnPname();
00144     void setFcnPname(const char*);
00145 
00146     DtlCompiledCFcnWithEnv fcnCode();
00147     void setFcnCode(DtlCompiledCFcnWithEnv);
00148 
00149     DtlObjPtr procParams();
00150     void setProcParams(const DtlObjPtr&);
00151     
00152     DtlObjPtr procBody();
00153     void setProcBody(const DtlObjPtr&);
00154 
00155     DtlObjPtr& procEnv();
00156     void setProcEnv(const DtlObjPtr&);
00157 
00158     DtlObjPtr frameParent();
00159     void setFrameParent(const DtlObjPtr&);
00160 
00161     DtlHashTable* frameBindings();
00162     void setFrameBindings(DtlHashTable*);
00163 
00168     int registerVal(DtcParam* param);
00169 
00173     DtList* params();
00174 
00175     void print();
00176     void DtcObjFprint(FILE* s);
00177     void DtcPrintList(FILE* s);
00178 
00179     
00180   private:
00181     DtlTagType tg;
00182     int rcnt;
00183     char gn; 
00184 
00187     DtlObjPtr ptr1;
00188     DtlObjPtr ptr2;
00189     DtlObjPtr ptr3;
00190 
00191     union vl
00192     { 
00193    char *symbname;      /* print name for symbol */
00194    int fixnum;       /* fixed point number (int) */
00195    double flonum;              /* floating point (double) */
00196    char *s;                    /* for strings */
00197    DtlPtrToNode ptr;         /* locatives */
00198    struct Fcn
00199    {
00200        char *pname;
00201        DtlCompiledCFcnWithEnv fcn;
00202    } compiled_c_fcn;
00203    /* struct cns
00204    {
00205       DtlObjPtr car;
00206       DtlObjPtr cdr;
00207    } cons;
00208    struct proc
00209    {
00210       DtlObjPtr params;
00211       DtlObjPtr body;
00212       DtlObjPtr p_env;
00213    } procedure;
00214    */
00215    struct frm
00216    {
00219       DtlHashTable* bindings;
00220            DtList* allParams;
00221    } frame;
00222     } val;
00223 };
00224 
00227 DT_DLL_MTL DtlObjPtr DtcLoadLispFile(char *filename, 
00228    const DtlObjPtr& env, DtList* allParams, int complain = 1);
00229 DT_DLL_MTL DtlObjPtr DtcLoadLispFile(const DtlObjPtr& pathlist, 
00230    char *filename, const DtlObjPtr& env, DtList* allParams, int complain=1);
00231 DT_DLL_MTL DtlObjPtr DtcLoadLispFileOrExpr(
00232    char *arg, const DtlObjPtr& env, DtList* allParams, int complain = 1);
00233 DT_DLL_MTL DtlObjPtr DtcLoadLispExpr(
00234    char *lispLine, const DtlObjPtr& env, DtList* allParams, int complain = 1);
00235 
00237 DT_DLL_MTL DtlObjPtr DtcHaltAndCatchFire(char *diagnostic);
00238 
00241 DT_DLL_MTL DtlObjPtr DtcInternCompiledC(
00242    char *name, DtlCompiledCFcnWithEnv fcn, const DtlObjPtr& env);
00243 DT_DLL_MTL DtlObjPtr DtcPtrToNode(
00244    DtlTagType t, DtlPtrToNode ptr);
00245 DT_DLL_MTL DtlObjPtr DtcInternPtr(
00246    char *name, const DtlObjPtr& value, const DtlObjPtr& env);
00247 
00251 DT_DLL_MTL DtlObjPtr DtcInternSpecialForm(
00252    char *name, DtlCompiledCFcnWithEnv fcn, const DtlObjPtr& env);
00253 
00260 
00261 DT_DLL_MTL int DtcSetIfBoundp(
00262    char *lisp_var_name, int *cvar, const DtlObjPtr& env);
00263 DT_DLL_MTL int DtcSetIfBoundp(
00264    char *lisp_var_name, double *cvar, const DtlObjPtr& env);
00265 DT_DLL_MTL int DtcSetIfBoundp(
00266    char *lisp_var_name, char** cvar, const DtlObjPtr& env);
00267 
00269 DT_DLL_MTL void IncObjRefCnt(DtlObj *obj);
00270 DT_DLL_MTL void DecObjRefCnt(DtlObj *obj);
00271 DT_DLL_MTL int EnvLocalProcRefcnt(DtlObj *env);
00272 DT_DLL_MTL int EnvLocalProcRefcnt(const DtlObjPtr& env);
00273 
00276 DT_DLL_MTL DtlObjPtr DtcCBooleanToLispBoolean(int i);
00277 DT_DLL_MTL DtlObjPtr DtcCaddddddr(const DtlObjPtr& c);
00278 DT_DLL_MTL DtlObjPtr DtcCadddddr(const DtlObjPtr& c);
00279 DT_DLL_MTL DtlObjPtr DtcCaddddr(const DtlObjPtr& c);
00280 DT_DLL_MTL DtlObjPtr DtcCadddr(const DtlObjPtr& c);
00281 DT_DLL_MTL DtlObjPtr DtcCaddr(const DtlObjPtr& c);
00282 DT_DLL_MTL DtlObjPtr DtcCadr(const DtlObjPtr& c);
00283 DT_DLL_MTL DtlObjPtr DtcCar(const DtlObjPtr& c);
00284 DT_DLL_MTL DtlObjPtr DtcCdr(const DtlObjPtr& c);
00285 DT_DLL_MTL DtlObjPtr DtcCons(const DtlObjPtr& car, const DtlObjPtr& cdr);
00286 DT_DLL_MTL DtlObjPtr DtcAppend(const DtlObjPtr&, const DtlObjPtr&);
00287 DT_DLL_MTL DtlObjPtr DtcAssoc(const DtlObjPtr& thing, const DtlObjPtr& alist);
00288 DT_DLL_MTL DtlObjPtr DtcAssv(const DtlObjPtr& thing, const DtlObjPtr& alist);
00289 DT_DLL_MTL DtlObjPtr DtcAssq(const DtlObjPtr& thing, const DtlObjPtr& alist);
00290 DT_DLL_MTL DtlObjPtr DtcReverse(const DtlObjPtr&);
00291 DT_DLL_MTL DtlObjPtr DtcEval(const DtlObjPtr& , const DtlObjPtr& env);
00292 DT_DLL_MTL DtlObjPtr DtcIntern(char *name, const DtlObjPtr& env);
00293 DT_DLL_MTL DtlObjPtr DtcMakeSymbol(char *pname);
00294 DT_DLL_MTL DtlObjPtr DtcPrint(const DtlObjPtr& c);
00295 DT_DLL_MTL DtlObjPtr DtcRead(DtlInputStream *f, const DtlObjPtr& env);
00296 DT_DLL_MTL DtlObjPtr DtcSet(const DtlObjPtr& c, const DtlObjPtr& value, const DtlObjPtr& env);
00297 #if DT_GLOBAL_ENV
00298 DT_DLL_MTL int       DtcBoundp(const DtlObjPtr& sym);
00299 DT_DLL_MTL DtlObjPtr DtcSet(const DtlObjPtr& c, const DtlObjPtr& value);
00300 DT_DLL_MTL DtlObjPtr DtcIntern(char *name);
00301 DT_DLL_MTL DtlObjPtr DtcRead(DtlInputStream *f);
00302 #endif
00303 #define DtcSet1Env   DtcSet
00304 DT_DLL_MTL DtlObjPtr DtcSymeval(const DtlObjPtr& c, const DtlObjPtr& env);
00305 DT_DLL_MTL int       DtcBoundp(const DtlObjPtr& sym, const DtlObjPtr& env);
00306 DT_DLL_MTL int       DtcEq(const DtlObjPtr& a, const DtlObjPtr& b);
00307 DT_DLL_MTL int       DtcEqual(const DtlObjPtr& c1, const DtlObjPtr& c2);
00308 DT_DLL_MTL int       DtcEqualSign(const DtlObjPtr& c1, const DtlObjPtr& c2);
00309 DT_DLL_MTL int       DtcLength(const DtlObjPtr& c);
00310 DT_DLL_MTL int       DtcListp(const DtlObjPtr& c);
00311 DT_DLL_MTL int       DtcNull(const DtlObjPtr& c);
00312 DT_DLL_MTL int       DtcNumberp(const DtlObjPtr& c);
00313 DT_DLL_MTL int       DtcStringEqual(const DtlObjPtr& s1, const DtlObjPtr& s2);
00314 DT_DLL_MTL int       DtcStringp(const DtlObjPtr& c);
00315 DT_DLL_MTL int       DtcLocativep(const DtlObjPtr& c);
00316 
00318 DT_DLL_MTL DtlObjPtr DtcErrPrint(const DtlObjPtr& c);
00324 
00325 DT_DLL_MTL DtlObjPtr DtlAbort(const DtlObjPtr& args, const DtlObjPtr& env);
00326 DT_DLL_MTL DtlObjPtr DtlAbs(const DtlObjPtr& args, const DtlObjPtr& env);
00327 DT_DLL_MTL DtlObjPtr DtlAnd(const DtlObjPtr& args, const DtlObjPtr& env);
00328 DT_DLL_MTL DtlObjPtr DtlAppend(const DtlObjPtr& args, const DtlObjPtr& env);
00329 DT_DLL_MTL DtlObjPtr DtlAssoc(const DtlObjPtr& args, const DtlObjPtr& env);
00330 DT_DLL_MTL DtlObjPtr DtlAssq(const DtlObjPtr& args, const DtlObjPtr& env);
00331 DT_DLL_MTL DtlObjPtr DtlAssv(const DtlObjPtr& args, const DtlObjPtr& env);
00332 DT_DLL_MTL DtlObjPtr DtlCond(const DtlObjPtr& args, const DtlObjPtr& env);
00333 DT_DLL_MTL DtlObjPtr DtlCos(const DtlObjPtr& args, const DtlObjPtr& env);
00334 DT_DLL_MTL DtlObjPtr DtlDescribe(const DtlObjPtr& args, const DtlObjPtr& env);
00335 DT_DLL_MTL DtlObjPtr DtlDivide(const DtlObjPtr& args, const DtlObjPtr& env);
00336 DT_DLL_MTL DtlObjPtr DtlEnvDump(const DtlObjPtr& args, const DtlObjPtr& env);
00337 DT_DLL_MTL DtlObjPtr DtlEq(const DtlObjPtr& args, const DtlObjPtr& env);
00338 DT_DLL_MTL DtlObjPtr DtlEqual(const DtlObjPtr& args, const DtlObjPtr& env);
00339 DT_DLL_MTL DtlObjPtr DtlEqualSign(const DtlObjPtr& args, const DtlObjPtr& env);
00340 DT_DLL_MTL DtlObjPtr DtlEval(const DtlObjPtr& args, const DtlObjPtr& env);
00341 DT_DLL_MTL DtlObjPtr DtlExit(const DtlObjPtr& args, const DtlObjPtr& env);
00342 DT_DLL_MTL DtlObjPtr DtlFormat(const DtlObjPtr& args, const DtlObjPtr& env);
00343 DT_DLL_MTL DtlObjPtr DtlFrameBindings(const DtlObjPtr& args, const DtlObjPtr& env);
00344 DT_DLL_MTL DtlObjPtr DtlFrameBound(const DtlObjPtr& args, const DtlObjPtr& env);
00345 DT_DLL_MTL DtlObjPtr DtlFrameParent(const DtlObjPtr& args, const DtlObjPtr& env);
00346 DT_DLL_MTL DtlObjPtr DtlGetenv(const DtlObjPtr& args, const DtlObjPtr& env);
00347 DT_DLL_MTL DtlObjPtr DtlGreater(const DtlObjPtr& args, const DtlObjPtr& env);
00348 DT_DLL_MTL DtlObjPtr DtlGreaterEqual(const DtlObjPtr& args, const DtlObjPtr& env);
00349 DT_DLL_MTL DtlObjPtr DtlIf(const DtlObjPtr& args, const DtlObjPtr& env);
00350 DT_DLL_MTL DtlObjPtr DtlLCar(const DtlObjPtr& args, const DtlObjPtr& env);
00351 DT_DLL_MTL DtlObjPtr DtlLCdr(const DtlObjPtr& args, const DtlObjPtr& env);
00352 DT_DLL_MTL DtlObjPtr DtlLCons(const DtlObjPtr& args, const DtlObjPtr& env);
00353 DT_DLL_MTL DtlObjPtr DtlLambda(const DtlObjPtr& args, const DtlObjPtr& env);
00354 DT_DLL_MTL DtlObjPtr DtlLet(const DtlObjPtr& args, const DtlObjPtr& env);
00355 DT_DLL_MTL DtlObjPtr DtlLength(const DtlObjPtr& args, const DtlObjPtr& env);
00356 DT_DLL_MTL DtlObjPtr DtlLess(const DtlObjPtr& args, const DtlObjPtr& env);
00357 DT_DLL_MTL DtlObjPtr DtlLessEqual(const DtlObjPtr& args, const DtlObjPtr& env);
00358 DT_DLL_MTL DtlObjPtr DtlList(const DtlObjPtr& args, const DtlObjPtr& env);
00359 DT_DLL_MTL DtlObjPtr DtlListp(const DtlObjPtr& args, const DtlObjPtr& env);
00360 DT_DLL_MTL DtlObjPtr DtlLoad(const DtlObjPtr& args, const DtlObjPtr& env);
00361 DT_DLL_MTL DtlObjPtr DtlLogIOr(const DtlObjPtr& args, const DtlObjPtr& env);
00362 DT_DLL_MTL DtlObjPtr DtlMem(const DtlObjPtr& args, const DtlObjPtr& env);
00363 DT_DLL_MTL DtlObjPtr DtlMinus(const DtlObjPtr& args, const DtlObjPtr& env);
00364 DT_DLL_MTL DtlObjPtr DtlMultiply(const DtlObjPtr& args, const DtlObjPtr& env);
00365 DT_DLL_MTL DtlObjPtr DtlNewFrame(const DtlObjPtr& args, const DtlObjPtr& env);
00366 DT_DLL_MTL DtlObjPtr DtlNotOrNull(const DtlObjPtr& args, const DtlObjPtr& env);
00367 DT_DLL_MTL DtlObjPtr DtlNumberp(const DtlObjPtr& args, const DtlObjPtr& env);
00368 DT_DLL_MTL DtlObjPtr DtlOr(const DtlObjPtr& args, const DtlObjPtr& env);
00369 DT_DLL_MTL DtlObjPtr DtlPlus(const DtlObjPtr& args, const DtlObjPtr& env);
00370 DT_DLL_MTL DtlObjPtr DtlPopen(const DtlObjPtr& args, const DtlObjPtr& env);
00371 DT_DLL_MTL DtlObjPtr DtlPrin1(const DtlObjPtr& args, const DtlObjPtr& env);
00372 DT_DLL_MTL DtlObjPtr DtlPutenv(const DtlObjPtr& args, const DtlObjPtr& env);
00373 DT_DLL_MTL DtlObjPtr DtlReverse(const DtlObjPtr& args, const DtlObjPtr& env);
00374 DT_DLL_MTL DtlObjPtr DtlQuote(const DtlObjPtr& args, const DtlObjPtr& env);
00375 DT_DLL_MTL DtlObjPtr DtlSequence(const DtlObjPtr& args, const DtlObjPtr& env);
00376 DT_DLL_MTL DtlObjPtr DtlSetq(const DtlObjPtr& args, const DtlObjPtr& env);
00377 DT_DLL_MTL DtlObjPtr DtlSetqBoundVariable(const DtlObjPtr& args, const DtlObjPtr& env);
00378 DT_DLL_MTL DtlObjPtr DtlSin(const DtlObjPtr& args, const DtlObjPtr& env);
00379 DT_DLL_MTL DtlObjPtr DtlStringAppend(const DtlObjPtr& args, const DtlObjPtr& env);
00380 DT_DLL_MTL DtlObjPtr DtlStringEqual(const DtlObjPtr& args, const DtlObjPtr& env);
00381 DT_DLL_MTL DtlObjPtr DtlStringp(const DtlObjPtr& args, const DtlObjPtr& env);
00382 DT_DLL_MTL DtlObjPtr DtlTheFrame(const DtlObjPtr& args, const DtlObjPtr& env);
00383 DT_DLL_MTL DtlObjPtr DtlLocativep(const DtlObjPtr& args, const DtlObjPtr& env);
00384 DT_DLL_MTL DtlObjPtr DtlSystem(const DtlObjPtr& args, const DtlObjPtr& env);
00385 DT_DLL_MTL DtlObjPtr DtlTerpri(const DtlObjPtr& args, const DtlObjPtr& env);
00386 
00388 DT_DLL_MTL DtlObjPtr DtlPrintRegistered(const DtlObjPtr&, const DtlObjPtr& env);
00389 DT_DLL_MTL DtlObjPtr DtlPathCross(const DtlObjPtr&, const DtlObjPtr& env);
00390 
00392 DT_DLL_MTL DtlObjPtr DtlStringToNumber(const DtlObjPtr& args, const DtlObjPtr& env);
00393 DT_DLL_MTL DtlObjPtr DtlNumberToString(const DtlObjPtr& args, const DtlObjPtr& env);
00394 
00395 /* ---------------------- REGISTER ---------------------- */
00396 /* 
00397  * DtcRegister facilitates the setting of simple C variables 
00398  * (i.e. double, int, char *) from MTL files.
00399  * 
00400  * Each call to DtcRegister creates a lisp-variable "name" and
00401  * initializes it to the value pointed to by "addr".
00402  * It also adds the lisp-variable and C-address to a list of
00403  * "registered" variables.  
00404  * At the end of DtlLoadLispFile, every registered variable will have
00405  * its lisp value evaluated and copied to the registered C address.
00406  *
00407  * Note: Lisp evaluation and copy to C does not occur until the end of
00408  * DtlLoadLispFile, so modified values will not automatically be
00409  * visible to C functions called from within a lisp file.  To bring
00410  * a C value up-to-date from within such a function, call
00411  * DtcSetIfBoundp() or DtcLispToC().  
00412  *
00413  * The macro DtcREGISTER can be useful to ensure that corresponding C 
00414  * and Lisp variables share the same name.
00415  * 
00416  * Use of setqb (aka setq-bound-variable) is recommended for registered
00417  * variables because it will complain if the parameter is misspelled. 
00418  *
00419  * The registered address must be valid at the time DtlLoadLispFile is
00420  * called [i.e. be careful with automatic variables on the stack.]  
00421  *
00422  * All calls to DtcRegister() should be made between 
00423  * DtlGlobalEnvInit() and DtlLoadLispFile().
00424  */ 
00425 
00430 DT_DLL_MTL void DtcGlobalEnvInit(DtlObjPtr& env);
00431 
00432 #define DtcREGISTER(var, env, params) DtcRegister(#var, &var, env, params)
00433 #define DtcDEFINE(type, var, dflt) type var = dflt; DtcREGISTER(var)
00434 
00435 DT_DLL_MTL int DtcRegister(
00436    const char *name, float  *addr, const DtlObjPtr& env, DtList* allParams);
00437 DT_DLL_MTL int DtcRegister(
00438    const char *name, double *addr, const DtlObjPtr& env, DtList* allParams);
00439 DT_DLL_MTL int DtcRegister(
00440    const char *name, int* addr, const DtlObjPtr& env, DtList* allParams);
00441 DT_DLL_MTL int DtcRegister(
00442    const char *name, unsigned long *addr, const DtlObjPtr& env, DtList* allParams);
00443 DT_DLL_MTL int DtcRegister(
00444    const char *name, char  **addr, const DtlObjPtr& env, DtList* allParams);
00445 DT_DLL_MTL int DtcRegister(
00446    const char *name, DtString *addr, const DtlObjPtr& env, DtList* allParams);
00447 DT_DLL_MTL int DtcRegister(
00448    const char *name, long *addr, const DtlObjPtr& env, DtList* allParams);
00449 DT_DLL_MTL int DtcRegister(
00450    const char *name, short *addr, const DtlObjPtr& env, DtList* allParams);
00451 DT_DLL_MTL int DtcRegister(
00452    const char *name, unsigned short *addr, const DtlObjPtr& env, DtList* allParams);
00453 #if DT_HAVE_64BIT_LONGS
00454 DT_DLL_MTL int DtcRegister(
00455    const char *name, unsigned int *addr, const DtlObjPtr& env, DtList* allParams);
00456 #endif
00457 
00461 DT_DLL_MTL void DtcLispToC(DtList* allParams);
00462 
00463 
00467 DT_DLL_MTL void DtcCToLisp(DtList* allParams);
00468 
00470 DT_DLL_MTL void DtcEmptyParamList(DtList* allParams);
00471 
00473 
00474 inline int DtlObj::refcnt()
00475 {
00476     return rcnt;
00477 }
00478 
00479 inline void DtlObj::setRefcnt(int r)
00480 {
00481     rcnt = r;
00482 }
00483 
00484 inline DtlObjPtr::~DtlObjPtr()
00485 {
00486     DecObjRefCnt(ptr);
00487 }
00488 
00489 #ifdef DtUSE_UTILITIES_NAMESPACE
00490 } 
00491 #endif
00492 
00493 #endif /* _MTL_H_ */
00494 
00495 
00496 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)