/****************************************************************************\ * * * C R E A T O R O F L E G E N D S * * (AberMud Version 5) * * * * The Creator Of Legends System is (C) Copyright 1989 Alan Cox, All Rights * * Reserved. * * * \****************************************************************************/ #include "System.h" Module "Search Routines"; Version "1.01"; Author "Alan Cox"; /* * 1.00 AGC Initial Version * 1.01 AGC Made to understand bit classes */ static void PrintLine(l) LINE *l; { LINE *t=CurrentLine; CurrentLine=l; PCurrentLine(); CurrentLine=t; } void CheckLineFor(line,s,st) LINE *line; ITEM *s; int st; { register char *TLine; unsigned short *x; x=line->li_Data; while(*x!=CMD_EOL) { int n=*x++; int ct=0; TLine=Cnd_Table[n]; while(TLine[ct]!=' ') { ITEM *i; TPTR t; switch(TLine[ct]) { case 'I': i=(ITEM *)PairArg(x); x+=2; if(s&&i==s) { PrintLine(line); return; } break; case '$':; case 'T':t=(TPTR )PairArg(x); x+=2; break; case '3':x++;break; case 'F':if(*x++==st) { PrintLine(line); return; } break; case 'N':if(*x++==st+30000&&st!=-1) { PrintLine(line); return; } break; case 'W':; case 'w':; /* THIS IS WRONG FOR NOW */ case 'Z':; case 'B':; case 't':; case 'p':x++; break; case 'v':x++; break; case 'a':x++; break; case 'n':x++; break; case 'C':; case 'R':; case 'O':; case 'P':; case 'c':x++; break; default: Error("Invalid Entry In Cnd_Table"); } ct++; } } } void CheckTableFor(t,s,st) TABLE *t; ITEM *s; int st; { LINE *l=t->tb_First; while(l) { CheckLineFor(l,s,st); l=l->li_Next; } } void CheckAllFor(i,s,st) ITEM *i,*s; int st; { TABLE *t=TableList; TABLE *p; ITEM *tmp=Debugger; Debugger=i; while(t) { p=CurrentTable; CurrentTable=t; SendItem(Debugger,"Checking Table %d\n",t->tb_Number); CheckTableFor(t,s,st); t=t->tb_Next; } Debugger=tmp; CurrentTable=p; }