Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/************************************************************************/ /* */ /* 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); }
|