[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdelibs/khtml/misc
From: Kazuki Ohta <mover () hct ! zaq ! ne ! jp>
Date: 2004-02-09 4:56:25
Message-ID: 20040209045625.33998990A () office ! kde ! org
[Download RAW message or body]
CVS commit by kzk:
code sliming up(abolish 3 classes)
M +4 -0 guess_ja.cpp 1.3
M +17 -42 guess_ja.h 1.4
--- kdelibs/khtml/misc/guess_ja.h #1.3:1.4
@@ -49,5 +49,7 @@ namespace khtml {
using namespace khtml;
-static const signed char guess_eucj_st[4][256] = {
+typedef signed char dfa_table[256];
+
+static const dfa_table guess_eucj_st[] = {
{ /* state init */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -134,5 +136,5 @@ static guess_arc guess_eucj_ar[7] = {
};
-static const signed char guess_sjis_st[2][256] = {
+static const dfa_table guess_sjis_st[] = {
{ /* state init */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -182,5 +184,5 @@ static guess_arc guess_sjis_ar[6] = {
};
-static const signed char guess_utf8_st[6][256] = {
+static const dfa_table guess_utf8_st[] = {
{ /* state init */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -311,9 +313,12 @@ namespace khtml {
class guess_dfa {
public:
- guess_arc *arcs;
+ const dfa_table *states;
+ const guess_arc *arcs;
int state;
double score;
- guess_dfa () {
+ guess_dfa (const dfa_table stable[], const guess_arc *atable) :
+ states(stable), arcs(atable)
+ {
state = 0;
score = 1.0;
@@ -321,34 +326,4 @@ namespace khtml {
};
- class guess_dfa_euc : public guess_dfa {
- public:
- const signed char (*states)[4][256];
-
- guess_dfa_euc () {
- states = &guess_eucj_st;
- arcs = guess_eucj_ar;
- }
- };
-
- class guess_dfa_sjis : public guess_dfa {
- public:
- const signed char (*states)[2][256];
-
- guess_dfa_sjis() {
- states = &guess_sjis_st;
- arcs = guess_sjis_ar;
- }
- };
-
- class guess_dfa_utf8 : public guess_dfa {
- public:
- const signed char (*states)[6][256];
-
- guess_dfa_utf8() {
- states = &guess_utf8_st;
- arcs = guess_utf8_ar;
- }
- };
-
class JapaneseCode
{
@@ -358,7 +333,7 @@ namespace khtml {
JapaneseCode () {
- eucj = new guess_dfa_euc();
- sjis = new guess_dfa_sjis();
- utf8 = new guess_dfa_utf8();
+ eucj = new guess_dfa(guess_eucj_st, guess_eucj_ar);
+ sjis = new guess_dfa(guess_sjis_st, guess_sjis_ar);
+ utf8 = new guess_dfa(guess_utf8_st, guess_utf8_ar);
last_JIS_escape = false;
}
@@ -371,7 +346,7 @@ namespace khtml {
protected:
- guess_dfa_euc *eucj;
- guess_dfa_sjis *sjis;
- guess_dfa_utf8 *utf8;
+ guess_dfa *eucj;
+ guess_dfa *sjis;
+ guess_dfa *utf8;
bool last_JIS_escape;
@@ -383,5 +358,5 @@ namespace khtml {
int arc__; \
if (dfa->state >= 0) { \
- arc__ = (*dfa->states)[dfa->state][ch]; \
+ arc__ = dfa->states[dfa->state][ch]; \
if (arc__ < 0) { \
dfa->state = -1; \
--- kdelibs/khtml/misc/guess_ja.cpp #1.2:1.3
@@ -90,4 +90,8 @@ enum JapaneseCode::Type JapaneseCode::gu
}
+ /* ascii code check */
+ if (eucj->score == 1.0 && sjis->score == 1.0 && utf8->score == 1.0)
+ return JapaneseCode::ASCII;
+
/* Now, we have ambigous code. Pick the highest score. If more than
one candidate tie, pick the default encoding. */
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic