/************************************************************************/ /* */ /* RCPP - Resource Compiler Pre-Processor for NT system */ /* */ /* P0KEYS.C - Keycode stuff */ /* */ /* 06-Dec-90 w-BrianM Update for NT from PM SDK RCPP */ /* */ /************************************************************************/ #include "rc.h" /************************************************************************/ /* table for preprocessor id's */ /************************************************************************/ WCHAR * Pkeyw_Table[] = { #include "pkeyw.key" }; char Pkeyw_Index[] = { #include "pkeyw.ind" }; struct s_pkinfo { token_t s_info; } Pkeyw_Info[] = { #include "pkeyw.inf" }; /************************************************************************/ /* is_pkeyword : finds the token for the id if it's a preprocessor keyword.*/ /* P0_NOTOKEN if not found. */ /************************************************************************/ token_t is_pkeyword( WCHAR *id ) { REG WCHAR **start; REG WCHAR **stop; PUCHAR pi; if( (*id) < L'_') { return(P0_NOTOKEN); } /* ** the indx table tells us the start of ** the words which begin with the first char if the id. ** the 'stop' is the index of the word which does not have the ** give char as it's first. ** we can start checking after the first char since, we *know* that ** they match (hence the additions 'id++' and (*start) + 1 */ pi = (PUCHAR) &Pkeyw_Index[((*id) - L'_')]; for(start = &Pkeyw_Table[*pi++], stop = &Pkeyw_Table[*pi], id++; start != stop; start++ ) { if(wcscmp(*start, id) == 0) { return(Pkeyw_Info[(start - &Pkeyw_Table[0])].s_info); } } return(P0_NOTOKEN); }