nsCString& theString=theToken->getStringValue(); PRUnichar theChar=theString[0];
nsAFlatCString& theString=theToken->getStringValue(); char theChar=theString.First();
  CToken* findSafeIDInIfStatement(CCPPTokenizer& aTokenizer,nsDeque& aNameDeque) {    CToken* result=0;    enum eState {eSkipLparen,eFindID};    eState  theState=eSkipLparen;    CToken* theToken=0;    while(theToken=aTokenizer.getTokenAt(++mIndex)) {      int   theType=theToken->getTokenType();      nsCString& theString=theToken->getStringValue();      PRUnichar theChar=theString[0];      switch(theState) {        case eSkipLparen:            //first scan for the lparen...          switch(theType) {            case eToken_comment:            case eToken_whitespace:            case eToken_newline:              mLineNumber+=theString.CountChar('\n'); break;            case eToken_operator:              switch(theChar) {                case '(': theState=eFindID; break;                case ')': return 0; break;                default:                  break;              } //switch              break;            default:              break;          } //switch          break;          //now scan for the identifier...        case eFindID:          switch(theType) {            case eToken_comment:            case eToken_whitespace:            case eToken_newline:              mLineNumber+=theString.CountChar('\n'); break;            case eToken_identifier:              if(matchID(mNames,theString)) {                return theToken;              }              break;            case eToken_operator:              switch(theChar) {                case ')':                case ';':                case '{':                case '(':                   return result;                  break;                default:                  break;              } //switch              break;            default:              break;          } //switch          break;        default:          switch(theType) {            case eToken_comment:            case eToken_whitespace:            case eToken_newline:              mLineNumber+=theString.CountChar('\n');               break;            default:              break;          }//switch          break;      } //switch    }    return result;  }