зеркало из https://github.com/mozilla/gecko-dev.git
for bug 100214, add some PRUnichar case routines, #if 0'ed out
This commit is contained in:
Родитель
6b15bf4de4
Коммит
f472ded118
|
@ -26,19 +26,58 @@
|
||||||
#include "nsICaseConversion.h"
|
#include "nsICaseConversion.h"
|
||||||
#include "nsIServiceManager.h"
|
#include "nsIServiceManager.h"
|
||||||
|
|
||||||
|
#include "nsIObserver.h"
|
||||||
|
#include "nsIObserverService.h"
|
||||||
|
#include "nsObserverService.h"
|
||||||
|
|
||||||
// global cache of the case conversion service
|
// global cache of the case conversion service
|
||||||
static nsICaseConversion *gCaseConv = nsnull;
|
static nsICaseConversion *gCaseConv = nsnull;
|
||||||
static NS_DEFINE_CID(kUnicharUtilCID, NS_UNICHARUTIL_CID);
|
static NS_DEFINE_CID(kUnicharUtilCID, NS_UNICHARUTIL_CID);
|
||||||
|
|
||||||
|
class nsShutdownObserver : public nsIObserver
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
nsShutdownObserver() { NS_INIT_REFCNT(); }
|
||||||
|
virtual ~nsShutdownObserver() {}
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
|
||||||
|
NS_IMETHOD Observe(nsISupports *aSubject, const char *aTopic,
|
||||||
|
const PRUnichar *aData)
|
||||||
|
{
|
||||||
|
if (nsCRT::strcmp(aTopic, NS_XPCOM_SHUTDOWN_OBSERVER_ID)==0) {
|
||||||
|
NS_IF_RELEASE(gCaseConv);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
NS_IMPL_ISUPPORTS1(nsShutdownObserver, nsIObserver)
|
||||||
|
|
||||||
static nsresult NS_InitCaseConversion() {
|
static nsresult NS_InitCaseConversion() {
|
||||||
if (gCaseConv) return NS_OK;
|
if (gCaseConv) return NS_OK;
|
||||||
|
|
||||||
return nsServiceManager::GetService(kUnicharUtilCID,
|
nsresult rv;
|
||||||
NS_GET_IID(nsICaseConversion),
|
|
||||||
(nsISupports**)&gCaseConv);
|
rv = nsServiceManager::GetService(kUnicharUtilCID,
|
||||||
|
NS_GET_IID(nsICaseConversion),
|
||||||
|
(nsISupports**)&gCaseConv);
|
||||||
|
|
||||||
|
if (NS_SUCCEEDED(rv)) {
|
||||||
|
nsCOMPtr<nsIObserverService> obs =
|
||||||
|
do_GetService(NS_OBSERVERSERVICE_CONTRACTID, &rv);
|
||||||
|
if (NS_SUCCEEDED(rv)) {
|
||||||
|
nsShutdownObserver *observer = new nsShutdownObserver();
|
||||||
|
if (observer)
|
||||||
|
obs->AddObserver(observer, NS_XPCOM_SHUTDOWN_OBSERVER_ID, PR_FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// to be turned on for bug 100214
|
// to be turned on for bug 100214
|
||||||
#if 0
|
#if 0
|
||||||
class ConvertToLowerCase
|
class ConvertToLowerCase
|
||||||
|
@ -99,16 +138,41 @@ nsCaseInsensitiveStringComparator::operator()( const PRUnichar* lhs, const PRUni
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
PRBool
|
int
|
||||||
nsCaseInsensitiveStringComparator::operator()( PRUnichar lhs, PRUnichar rhs ) const
|
nsCaseInsensitiveStringComparator::operator()( PRUnichar lhs, PRUnichar rhs ) const
|
||||||
{
|
{
|
||||||
if (lhs == rhs) return PR_TRUE;
|
if (lhs == rhs) return 0;
|
||||||
NS_InitCaseConversion();
|
NS_InitCaseConversion();
|
||||||
|
|
||||||
gCaseConv->ToUpper(lhs, &lhs);
|
gCaseConv->ToLower(lhs, &lhs);
|
||||||
gCaseConv->ToUpper(rhs, &rhs);
|
gCaseConv->ToLower(rhs, &rhs);
|
||||||
|
|
||||||
return lhs == rhs;
|
if (lhs == rhs) return 0;
|
||||||
|
if (lhs < rhs) return -1;
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
PRUnichar
|
||||||
|
ToLowerCase(PRUnichar aChar)
|
||||||
|
{
|
||||||
|
PRUnichar result;
|
||||||
|
if (NS_FAILED(NS_InitCaseConversion()))
|
||||||
|
return aChar;
|
||||||
|
|
||||||
|
gCaseConv->ToLower(aChar, &result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
PRUnichar
|
||||||
|
ToUpperCase(PRUnichar aChar)
|
||||||
|
{
|
||||||
|
PRUnichar result;
|
||||||
|
if (NS_FAILED(NS_InitCaseConversion()))
|
||||||
|
return aChar;
|
||||||
|
|
||||||
|
gCaseConv->ToUpper(aChar, &result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,4 +37,9 @@ class nsCaseInsensitiveStringComparator
|
||||||
virtual int operator()( PRUnichar, PRUnichar ) const;
|
virtual int operator()( PRUnichar, PRUnichar ) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
PRUnichar ToUpperCase(PRUnichar);
|
||||||
|
PRUnichar ToLowerCase(PRUnichar);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче