[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