CString AsString(const Card& card) { if (card.number() == 0 || card.suit() == 0) return CString("b"); // face down card CString s; s.Format("%c%c", ValueToChar(card.number()), SuitToChar(card.suit())); return s; }
nsresult nsBasicUTF7Encoder::ShiftEncoding(PRInt32 aEncoding, char * aDest, PRInt32 * aDestLength) { if (aEncoding == mEncoding) { *aDestLength = 0; return NS_OK; } nsresult res = NS_OK; char * dest = aDest; char * destEnd = aDest + *aDestLength; if (mEncStep != 0) { if (dest >= destEnd) return NS_OK_UENC_MOREOUTPUT; *(dest++)=ValueToChar(mEncBits); mEncStep = 0; mEncBits = 0; } if (dest >= destEnd) { res = NS_OK_UENC_MOREOUTPUT; } else { switch (aEncoding) { case 0: *(dest++) = '-'; mEncStep = 0; mEncBits = 0; break; case 1: *(dest++) = mEscChar; break; } mEncoding = aEncoding; } *aDestLength = dest - aDest; return res; }
nsresult nsBasicUTF7Encoder::EncodeBase64( const PRUnichar * aSrc, PRInt32 * aSrcLength, char * aDest, PRInt32 * aDestLength) { nsresult res = NS_OK; const PRUnichar * src = aSrc; const PRUnichar * srcEnd = aSrc + *aSrcLength; char * dest = aDest; char * destEnd = aDest + *aDestLength; PRUnichar ch; PRUint32 value; while (src < srcEnd) { ch = *src; // stop when we reach printable US-ASCII chars if (DirectEncodable(ch)) break; switch (mEncStep) { case 0: if (destEnd - dest < 2) { res = NS_OK_UENC_MOREOUTPUT; break; } value=ch>>10; *(dest++)=ValueToChar(value); value=(ch>>4)&0x3f; *(dest++)=ValueToChar(value); mEncBits=(ch&0x0f)<<2; break; case 1: if (destEnd - dest < 3) { res = NS_OK_UENC_MOREOUTPUT; break; } value=mEncBits+(ch>>14); *(dest++)=ValueToChar(value); value=(ch>>8)&0x3f; *(dest++)=ValueToChar(value); value=(ch>>2)&0x3f; *(dest++)=ValueToChar(value); mEncBits=(ch&0x03)<<4; break; case 2: if (destEnd - dest < 3) { res = NS_OK_UENC_MOREOUTPUT; break; } value=mEncBits+(ch>>12); *(dest++)=ValueToChar(value); value=(ch>>6)&0x3f; *(dest++)=ValueToChar(value); value=ch&0x3f; *(dest++)=ValueToChar(value); mEncBits=0; break; } if (res != NS_OK) break; src++; (++mEncStep)%=3; } *aSrcLength = src - aSrc; *aDestLength = dest - aDest; return res; }