From 75944f01ac890a865f669c79f9e73f3b2ca973d9 Mon Sep 17 00:00:00 2001 From: "cata%netscape.com" Date: Thu, 11 Mar 1999 22:36:40 +0000 Subject: [PATCH] Multi table support added. git-svn-id: svn://10.0.0.236/trunk@23775 18797224-902f-48f8-a5cc-f745e15eee43 --- .../uconv/public/nsIUnicodeEncodeHelper.h | 7 +++ .../intl/uconv/src/nsUnicodeEncodeHelper.cpp | 47 +++++++++++++++++++ mozilla/intl/uconv/src/registryhack2.h | 3 +- .../intl/uconv/util/nsUnicodeEncodeHelper.cpp | 47 +++++++++++++++++++ 4 files changed, 103 insertions(+), 1 deletion(-) diff --git a/mozilla/intl/uconv/public/nsIUnicodeEncodeHelper.h b/mozilla/intl/uconv/public/nsIUnicodeEncodeHelper.h index ceb7f39e608..60c93b7bb91 100644 --- a/mozilla/intl/uconv/public/nsIUnicodeEncodeHelper.h +++ b/mozilla/intl/uconv/public/nsIUnicodeEncodeHelper.h @@ -56,6 +56,13 @@ public: NS_IMETHOD ConvertByTable(const PRUnichar * aSrc, PRInt32 * aSrcLength, char * aDest, PRInt32 * aDestLength, uShiftTable * aShiftTable, uMappingTable * aMappingTable) = 0; + + /** + * Converts data using a set of lookup tables. + */ + NS_IMETHOD ConvertByTables(const PRUnichar * aSrc, PRInt32 * aSrcLength, + char * aDest, PRInt32 * aDestLength, PRInt32 aTableCount, + uShiftTable ** aShiftTable, uMappingTable ** aMappingTable) = 0; }; diff --git a/mozilla/intl/uconv/src/nsUnicodeEncodeHelper.cpp b/mozilla/intl/uconv/src/nsUnicodeEncodeHelper.cpp index a3b539a546a..96a47a33909 100644 --- a/mozilla/intl/uconv/src/nsUnicodeEncodeHelper.cpp +++ b/mozilla/intl/uconv/src/nsUnicodeEncodeHelper.cpp @@ -55,6 +55,10 @@ public: NS_IMETHOD ConvertByTable(const PRUnichar * aSrc, PRInt32 * aSrcLength, char * aDest, PRInt32 * aDestLength, uShiftTable * aShiftTable, uMappingTable * aMappingTable); + + NS_IMETHOD ConvertByTables(const PRUnichar * aSrc, PRInt32 * aSrcLength, + char * aDest, PRInt32 * aDestLength, PRInt32 aTableCount, + uShiftTable ** aShiftTable, uMappingTable ** aMappingTable); }; //---------------------------------------------------------------------- @@ -114,6 +118,49 @@ NS_IMETHODIMP nsUnicodeEncodeHelper::ConvertByTable(const PRUnichar * aSrc, return res; } +NS_IMETHODIMP nsUnicodeEncodeHelper::ConvertByTables(const PRUnichar * aSrc, + PRInt32 * aSrcLength, + char * aDest, + PRInt32 * aDestLength, + PRInt32 aTableCount, + uShiftTable ** aShiftTable, + uMappingTable ** aMappingTable) +{ + const PRUnichar * src = aSrc; + const PRUnichar * srcEnd = aSrc + *aSrcLength; + char * dest = aDest; + PRInt32 destLen = *aDestLength; + + PRUnichar med; + PRInt32 bcw; // byte count for write; + nsresult res = NS_OK; + PRInt32 i; + + while (src < srcEnd) { + for (i=0; i