Bug 1368646 - Expose nsSampleWordBreaker::GetClass as a public static function in nsIWordBreaker. r=emk

MozReview-Commit-ID: VORgEZOVl0

--HG--
extra : source : c202e189f50d3532bfae311f181a40b2bed96149
This commit is contained in:
Xidorn Quan 2017-06-01 17:02:54 +10:00
Родитель dea0e67b26
Коммит eadf9e9411
3 изменённых файлов: 22 добавлений и 22 удалений

Просмотреть файл

@ -21,6 +21,17 @@ typedef struct {
uint32_t mEnd;
} nsWordRange;
enum nsWordBreakClass : uint8_t {
kWbClassSpace = 0,
kWbClassAlphaLetter,
kWbClassPunct,
kWbClassHanLetter,
kWbClassKatakanaLetter,
kWbClassHiraganaLetter,
kWbClassHWKatakanaLetter,
kWbClassThaiLetter
};
class nsIWordBreaker : public nsISupports
{
public:
@ -34,6 +45,7 @@ public:
virtual int32_t NextWord(const char16_t* aText, uint32_t aLen,
uint32_t aPos) = 0;
static nsWordBreakClass GetClass(char16_t aChar);
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsIWordBreaker, NS_IWORDBREAKER_IID)

Просмотреть файл

@ -25,7 +25,7 @@ bool nsSampleWordBreaker::BreakInBetween(
if(!aText1 || !aText2 || (0 == aTextLen1) || (0 == aTextLen2))
return false;
return (this->GetClass(aText1[aTextLen1-1]) != this->GetClass(aText2[0]));
return GetClass(aText1[aTextLen1-1]) != GetClass(aText2[0]);
}
@ -42,7 +42,8 @@ bool nsSampleWordBreaker::BreakInBetween(
#define IS_HALFWIDTHKATAKANA(c) (( 0xFF60 <= (c)) && ((c) <= 0xFF9F))
#define IS_THAI(c) (0x0E00 == (0xFF80 & (c) )) // Look at the higest 9 bits
uint8_t nsSampleWordBreaker::GetClass(char16_t c)
/* static */ nsWordBreakClass
nsIWordBreaker::GetClass(char16_t c)
{
// begin of the hack
@ -75,7 +76,7 @@ uint8_t nsSampleWordBreaker::GetClass(char16_t c)
return kWbClassAlphaLetter;
}
}
return 0;
return static_cast<nsWordBreakClass>(0);
}
nsWordRange nsSampleWordBreaker::FindWord(
@ -93,13 +94,13 @@ nsWordRange nsSampleWordBreaker::FindWord(
if(!aText || aOffset > aTextLen)
return range;
uint8_t c = this->GetClass(aText[aOffset]);
nsWordBreakClass c = GetClass(aText[aOffset]);
uint32_t i;
// Scan forward
range.mEnd--;
for(i = aOffset +1;i <= aTextLen; i++)
{
if( c != this->GetClass(aText[i]))
if( c != GetClass(aText[i]))
{
range.mEnd = i;
break;
@ -110,7 +111,7 @@ nsWordRange nsSampleWordBreaker::FindWord(
range.mBegin = 0;
for(i = aOffset ;i > 0; i--)
{
if( c != this->GetClass(aText[i-1]))
if( c != GetClass(aText[i-1]))
{
range.mBegin = i;
break;
@ -127,15 +128,15 @@ nsWordRange nsSampleWordBreaker::FindWord(
int32_t nsSampleWordBreaker::NextWord(
const char16_t* aText, uint32_t aLen, uint32_t aPos)
{
int8_t c1, c2;
nsWordBreakClass c1, c2;
uint32_t cur = aPos;
if (cur == aLen)
return NS_WORDBREAKER_NEED_MORE_TEXT;
c1 = this->GetClass(aText[cur]);
c1 = GetClass(aText[cur]);
for(cur++; cur <aLen; cur++)
{
c2 = this->GetClass(aText[cur]);
c2 = GetClass(aText[cur]);
if(c2 != c1)
break;
}

Просмотреть файл

@ -8,17 +8,6 @@
#include "nsIWordBreaker.h"
typedef enum {
kWbClassSpace = 0,
kWbClassAlphaLetter,
kWbClassPunct,
kWbClassHanLetter,
kWbClassKatakanaLetter,
kWbClassHiraganaLetter,
kWbClassHWKatakanaLetter,
kWbClassThaiLetter
} wb_class;
class nsSampleWordBreaker : public nsIWordBreaker
{
NS_DECL_ISUPPORTS
@ -34,8 +23,6 @@ public:
int32_t NextWord(const char16_t* aText, uint32_t aLen, uint32_t aPos) override;
protected:
uint8_t GetClass(char16_t aChar);
virtual ~nsSampleWordBreaker();
};