Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Frameworks
KCodecs
Commits
3912ee7c
Commit
3912ee7c
authored
Dec 02, 2021
by
Ahmad Samir
Browse files
KEncodingProber: prefix member vars with "m", much easier to distinguish them
GIT_SILENT
parent
34f4a0f8
Pipeline
#117190
passed with stage
in 1 minute and 33 seconds
Changes
1
Pipelines
3
Hide whitespace changes
Inline
Side-by-side
src/kencodingprober.cpp
View file @
3912ee7c
...
...
@@ -22,28 +22,28 @@ class KEncodingProberPrivate
{
public:
KEncodingProberPrivate
()
:
p
rober
(
nullptr
)
:
mP
rober
(
nullptr
)
,
mStart
(
true
)
{
}
~
KEncodingProberPrivate
()
{
delete
p
rober
;
delete
mP
rober
;
}
void
setProberType
(
KEncodingProber
::
ProberType
pType
)
{
p
roberType
=
pType
;
mP
roberType
=
pType
;
/* handle multi-byte encodings carefully , because they're hard to detect,
* and have to use some Stastics methods.
* for single-byte encodings (most western encodings), nsSBCSGroupProber is ok,
* because encoding state machine can detect many such encodings.
*/
delete
p
rober
;
delete
mP
rober
;
switch
(
p
roberType
)
{
switch
(
mP
roberType
)
{
case
KEncodingProber
::
None
:
p
rober
=
nullptr
;
mP
rober
=
nullptr
;
break
;
case
KEncodingProber
::
Arabic
:
case
KEncodingProber
::
Baltic
:
...
...
@@ -57,26 +57,26 @@ public:
case
KEncodingProber
::
Thai
:
case
KEncodingProber
::
Turkish
:
case
KEncodingProber
::
WesternEuropean
:
p
rober
=
new
kencodingprober
::
nsSBCSGroupProber
();
mP
rober
=
new
kencodingprober
::
nsSBCSGroupProber
();
break
;
case
KEncodingProber
::
ChineseSimplified
:
case
KEncodingProber
::
ChineseTraditional
:
p
rober
=
new
kencodingprober
::
ChineseGroupProber
();
mP
rober
=
new
kencodingprober
::
ChineseGroupProber
();
break
;
case
KEncodingProber
::
Japanese
:
p
rober
=
new
kencodingprober
::
JapaneseGroupProber
();
mP
rober
=
new
kencodingprober
::
JapaneseGroupProber
();
break
;
case
KEncodingProber
::
Korean
:
p
rober
=
new
kencodingprober
::
nsMBCSGroupProber
();
mP
rober
=
new
kencodingprober
::
nsMBCSGroupProber
();
break
;
case
KEncodingProber
::
Unicode
:
p
rober
=
new
kencodingprober
::
UnicodeGroupProber
();
mP
rober
=
new
kencodingprober
::
UnicodeGroupProber
();
break
;
case
KEncodingProber
::
Universal
:
p
rober
=
new
kencodingprober
::
nsUniversalDetector
();
mP
rober
=
new
kencodingprober
::
nsUniversalDetector
();
break
;
default:
p
rober
=
nullptr
;
mP
rober
=
nullptr
;
}
}
void
unicodeTest
(
const
char
*
aBuf
,
int
aLen
)
...
...
@@ -89,49 +89,49 @@ public:
if
((
'\xBB'
==
aBuf
[
1
])
&&
(
'\xBF'
==
aBuf
[
2
]))
// EF BB BF UTF-8 encoded BOM
{
p
roberState
=
KEncodingProber
::
FoundIt
;
mP
roberState
=
KEncodingProber
::
FoundIt
;
}
break
;
case
'\xFE'
:
if
((
'\xFF'
==
aBuf
[
1
])
&&
(
'\x00'
==
aBuf
[
2
])
&&
(
'\x00'
==
aBuf
[
3
]))
// FE FF 00 00 UCS-4, unusual octet order BOM (3412)
{
p
roberState
=
KEncodingProber
::
FoundIt
;
mP
roberState
=
KEncodingProber
::
FoundIt
;
}
else
if
(
'\xFF'
==
aBuf
[
1
])
// FE FF UTF-16, big endian BOM
{
p
roberState
=
KEncodingProber
::
FoundIt
;
mP
roberState
=
KEncodingProber
::
FoundIt
;
}
break
;
case
'\x00'
:
if
((
'\x00'
==
aBuf
[
1
])
&&
(
'\xFE'
==
aBuf
[
2
])
&&
(
'\xFF'
==
aBuf
[
3
]))
// 00 00 FE FF UTF-32, big-endian BOM
{
p
roberState
=
KEncodingProber
::
FoundIt
;
mP
roberState
=
KEncodingProber
::
FoundIt
;
}
else
if
((
'\x00'
==
aBuf
[
1
])
&&
(
'\xFF'
==
aBuf
[
2
])
&&
(
'\xFE'
==
aBuf
[
3
]))
// 00 00 FF FE UCS-4, unusual octet order BOM (2143)
{
p
roberState
=
KEncodingProber
::
FoundIt
;
mP
roberState
=
KEncodingProber
::
FoundIt
;
}
break
;
case
'\xFF'
:
if
((
'\xFE'
==
aBuf
[
1
])
&&
(
'\x00'
==
aBuf
[
2
])
&&
(
'\x00'
==
aBuf
[
3
]))
// FF FE 00 00 UTF-32, little-endian BOM
{
p
roberState
=
KEncodingProber
::
FoundIt
;
mP
roberState
=
KEncodingProber
::
FoundIt
;
}
else
if
(
'\xFE'
==
aBuf
[
1
])
// FF FE UTF-16, little endian BOM
{
p
roberState
=
KEncodingProber
::
FoundIt
;
mP
roberState
=
KEncodingProber
::
FoundIt
;
}
break
;
}
// switch
}
}
}
KEncodingProber
::
ProberType
p
roberType
;
KEncodingProber
::
ProberState
p
roberState
;
kencodingprober
::
nsCharSetProber
*
p
rober
;
KEncodingProber
::
ProberType
mP
roberType
;
KEncodingProber
::
ProberState
mP
roberState
;
kencodingprober
::
nsCharSetProber
*
mP
rober
;
bool
mStart
;
};
...
...
@@ -145,7 +145,7 @@ KEncodingProber::~KEncodingProber() = default;
void
KEncodingProber
::
reset
()
{
d
->
p
roberState
=
KEncodingProber
::
Probing
;
d
->
mP
roberState
=
KEncodingProber
::
Probing
;
d
->
mStart
=
true
;
}
...
...
@@ -156,61 +156,61 @@ KEncodingProber::ProberState KEncodingProber::feed(const QByteArray &data)
KEncodingProber
::
ProberState
KEncodingProber
::
feed
(
const
char
*
data
,
int
len
)
{
if
(
!
d
->
p
rober
)
{
return
d
->
p
roberState
;
if
(
!
d
->
mP
rober
)
{
return
d
->
mP
roberState
;
}
if
(
d
->
p
roberState
==
Probing
)
{
if
(
d
->
mP
roberState
==
Probing
)
{
if
(
d
->
mStart
)
{
d
->
unicodeTest
(
data
,
len
);
if
(
d
->
p
roberState
==
FoundIt
)
{
return
d
->
p
roberState
;
if
(
d
->
mP
roberState
==
FoundIt
)
{
return
d
->
mP
roberState
;
}
}
d
->
p
rober
->
HandleData
(
data
,
len
);
switch
(
d
->
p
rober
->
GetState
())
{
d
->
mP
rober
->
HandleData
(
data
,
len
);
switch
(
d
->
mP
rober
->
GetState
())
{
case
kencodingprober
::
eNotMe
:
d
->
p
roberState
=
NotMe
;
d
->
mP
roberState
=
NotMe
;
break
;
case
kencodingprober
::
eFoundIt
:
d
->
p
roberState
=
FoundIt
;
d
->
mP
roberState
=
FoundIt
;
break
;
default:
d
->
p
roberState
=
Probing
;
d
->
mP
roberState
=
Probing
;
break
;
}
}
#ifdef DEBUG_PROBE
d
->
p
rober
->
DumpStatus
();
d
->
mP
rober
->
DumpStatus
();
#endif
return
d
->
p
roberState
;
return
d
->
mP
roberState
;
}
KEncodingProber
::
ProberState
KEncodingProber
::
state
()
const
{
return
d
->
p
roberState
;
return
d
->
mP
roberState
;
}
QByteArray
KEncodingProber
::
encoding
()
const
{
if
(
!
d
->
p
rober
)
{
if
(
!
d
->
mP
rober
)
{
return
QByteArray
(
"UTF-8"
);
}
return
QByteArray
(
d
->
p
rober
->
GetCharSetName
());
return
QByteArray
(
d
->
mP
rober
->
GetCharSetName
());
}
float
KEncodingProber
::
confidence
()
const
{
if
(
!
d
->
p
rober
)
{
if
(
!
d
->
mP
rober
)
{
return
0.0
;
}
return
d
->
p
rober
->
GetConfidence
();
return
d
->
mP
rober
->
GetConfidence
();
}
KEncodingProber
::
ProberType
KEncodingProber
::
proberType
()
const
{
return
d
->
p
roberType
;
return
d
->
mP
roberType
;
}
void
KEncodingProber
::
setProberType
(
KEncodingProber
::
ProberType
proberType
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment