/* DCRECDIR.TH */ /* Y.L. Noyelle, Supelec, France 1994 */ #ifndef DCRECDIR_TH #define DCRECDIR_TH #include "dc.th" #define EndCh '\0' #define IncplMacDef LONG_MIN #define SizeSymTab (ThCode)(1 << PowTwoSizeSymTab) #define MacroVisible #define MacroNotVisible && pDescCurId->nstLvl+1>=0 #define MacroTxt (pNxtCh == &nxtChFromMac) #define SearchSym(x, y) /* search name in corresponding 'small table ' */ \ for (pDescCurId = symTabHeads[hCode & (SizeSymTab - 1)]; \ pDescCurId != NULL; pDescCurId = pDescCurId->next) { \ if (Lgt1(pDescCurId->idName)==Lgt1(x) /* same length ? */ \ && (memcmp(pDescCurId->idName, x, FullLgt(x))==0)y) break;} /* Structures definitions */ typedef ubyte TsTok; /* macro storage format for tokens */ /* Shorthands */ #define PidSeman u1._pIdSeman #define NoLex u1._noLex #define TabArg u1._tabArg #define NoDP u2._noDP #define SameBlk u2._sameBlk #define DfileName u2._dFileName struct _tDescrId { TdescrId *next, *prec; /* 'next' must be the first field, to handle correct- ly elimination of the first identifier in a "small table". */ Tname idName; long nstLvl; union { const TsTok **_tabArg; TsemanElt *_pIdSeman; Ttok _noLex; } u1; union { TdescrId *_sameBlk; Tstring _dFileName; Ttok _noDP; } u2; }; /*~ zif Offset(TdescrId, next) != 0 "'next' field not first in TdescrId structure" */ #endif /* ifndef DCRECDIR_TH */ /* End DCRECDIR.TH */