зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
dea0e67b26
Коммит
eadf9e9411
|
@ -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();
|
||||
};
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче