KString TTokens::ProcessEnumValue( const KString& String, LPCTSTR pValueName) const { for(size_t i = 0 ; i < GetN() ; i++) { const TToken& Token = GetDataRef(i); if(String == Token.m_SrcString) return Token.m_DstString; } REPORT_INVALID_VALUE; }
bool trpgReadBuffer::GetArray(int len,trpgColor **arr) { if (!GetDataRef((char **)arr,sizeof(trpgColor)*len)) return false; // Byteswap in place if necessary if (ness != cpuNess) { char *ptr; int pos; for (pos=0,ptr = (char *)*arr;pos<len;pos++,ptr+=8) trpg_swap_four(ptr,ptr); } return true; }
// ------- // Tokens // ------- KString TTokens::Process(const KString& String) const { KString DstString; for(size_t szStart = 0 ; szStart < String.GetLength() ; ) { // Scanning for the closest token starting at 'szStart' const TToken* pClosestToken = NULL; size_t szClosestTokenPos; for(size_t i = 0 ; i < GetN() ; i++) { const TToken& CurToken = GetDataRef(i); size_t szPos = String.Find(CurToken.m_SrcString, szStart); if(szPos == UINT_MAX) continue; if( pClosestToken == NULL || szPos < szClosestTokenPos || szPos == szClosestTokenPos && CurToken.m_SrcString.GetLength() > pClosestToken->m_SrcString.GetLength()) { pClosestToken = &CurToken, szClosestTokenPos = szPos; } } if(pClosestToken == NULL) // no more tokens found { DstString += String.Mid(szStart); // adding leftovers break; } DstString += String.Mid(szStart, szClosestTokenPos - szStart); // adding pre-token part DstString += pClosestToken->m_DstString; // adding token replacement // Forwarding 'szStart' to the end of just substed token szStart = szClosestTokenPos + pClosestToken->m_SrcString.GetLength(); } return DstString; }
bool trpgReadBuffer::GetArray(int len,char **arr) { return GetDataRef((char **)arr,sizeof(char)*len); }