]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/csrsbcs.h
ICU-64232.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / csrsbcs.h
index 21cbabe5663b54c4612d2dd3d6fe4ede2d790580..97687836795fdea2eb95451287c078d23c037360 100644 (file)
@@ -1,6 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
  **********************************************************************
- *   Copyright (C) 2005-2009, International Business Machines
+ *   Copyright (C) 2005-2015, International Business Machines
  *   Corporation and others.  All Rights Reserved.
  **********************************************************************
  */
@@ -19,17 +21,21 @@ U_NAMESPACE_BEGIN
 class NGramParser : public UMemory
 {
 private:
-    int32_t byteIndex;
     int32_t ngram;
-
-    const int32_t *ngramList;
-    const uint8_t *charMap;
+    const int32_t *ngramList;    
 
     int32_t ngramCount;
     int32_t hitCount;
 
+protected:
+       int32_t byteIndex;
+    const uint8_t *charMap;
+
+       void addByte(int32_t b);
+
 public:
     NGramParser(const int32_t *theNgramList, const uint8_t *theCharMap);
+    virtual ~NGramParser();
 
 private:
     /*
@@ -38,52 +44,61 @@ private:
     int32_t search(const int32_t *table, int32_t value);
 
     void lookup(int32_t thisNgram);
-    void addByte(int32_t b);
-    int32_t nextByte(InputText *det);
+    
+    virtual int32_t nextByte(InputText *det);
+       virtual void parseCharacters(InputText *det);
 
 public:
     int32_t parse(InputText *det);
 
 };
 
-class CharsetRecog_sbcs : public CharsetRecognizer
+#if !UCONFIG_ONLY_HTML_CONVERSION
+class NGramParser_IBM420 : public NGramParser
 {
-protected:
-    UBool haveC1Bytes;
+public:
+    NGramParser_IBM420(const int32_t *theNgramList, const uint8_t *theCharMap);
+    ~NGramParser_IBM420();
+
+private:
+    int32_t alef;
+    int32_t isLamAlef(int32_t b);
+    int32_t nextByte(InputText *det);
+    void parseCharacters(InputText *det);
+};
+#endif
 
+
+class CharsetRecog_sbcs : public CharsetRecognizer
+{
 public:
     CharsetRecog_sbcs();
-
     virtual ~CharsetRecog_sbcs();
-
     virtual const char *getName() const = 0;
-
-    virtual int32_t match(InputText *det) = 0;
-
-    int32_t match_sbcs(InputText *det, const int32_t ngrams[], const uint8_t charMap[]);
+    virtual UBool match(InputText *det, CharsetMatch *results) const = 0;
+    virtual int32_t match_sbcs(InputText *det, const int32_t ngrams[], const uint8_t charMap[]) const;
 };
 
 class CharsetRecog_8859_1 : public CharsetRecog_sbcs
 {
 public:
     virtual ~CharsetRecog_8859_1();
-
     const char *getName() const;
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_8859_2 : public CharsetRecog_sbcs
 {
 public:
     virtual ~CharsetRecog_8859_2();
-
     const char *getName() const;
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_8859_5 : public CharsetRecog_sbcs
 {
 public:
     virtual ~CharsetRecog_8859_5();
-
     const char *getName() const;
 };
 
@@ -119,145 +134,7 @@ public:
     const char *getName() const;
 };
 
-class CharsetRecog_8859_1_en : public CharsetRecog_8859_1
-{
-public:
-    virtual ~CharsetRecog_8859_1_en();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_1_da : public CharsetRecog_8859_1
-{
-public:
-    virtual ~CharsetRecog_8859_1_da();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_1_de : public CharsetRecog_8859_1
-{
-public:
-    virtual ~CharsetRecog_8859_1_de();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_1_es : public CharsetRecog_8859_1
-{
-public:
-    virtual ~CharsetRecog_8859_1_es();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_1_fr : public CharsetRecog_8859_1
-{
-public:
-    virtual ~CharsetRecog_8859_1_fr();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_1_it : public CharsetRecog_8859_1
-{
-public:
-    virtual ~CharsetRecog_8859_1_it();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_1_nl : public CharsetRecog_8859_1
-{
-public:
-    virtual ~CharsetRecog_8859_1_nl();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_1_no : public CharsetRecog_8859_1
-{
-public:
-    virtual ~CharsetRecog_8859_1_no();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_1_pt : public CharsetRecog_8859_1
-{
-public:
-    virtual ~CharsetRecog_8859_1_pt();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_1_sv : public CharsetRecog_8859_1
-{
-public:
-    virtual ~CharsetRecog_8859_1_sv();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_2_cs : public CharsetRecog_8859_2
-{
-public:
-    virtual ~CharsetRecog_8859_2_cs();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_2_hu : public CharsetRecog_8859_2
-{
-public:
-    virtual ~CharsetRecog_8859_2_hu();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_2_pl : public CharsetRecog_8859_2
-{
-public:
-    virtual ~CharsetRecog_8859_2_pl();
 
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
-
-class CharsetRecog_8859_2_ro : public CharsetRecog_8859_2
-{
-public:
-    virtual ~CharsetRecog_8859_2_ro();
-
-    const char *getLanguage() const;
-
-    int32_t match(InputText *textIn);
-};
 
 class CharsetRecog_8859_5_ru : public CharsetRecog_8859_5
 {
@@ -266,7 +143,7 @@ public:
 
     const char *getLanguage() const;
 
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_8859_6_ar : public CharsetRecog_8859_6
@@ -276,7 +153,7 @@ public:
 
     const char *getLanguage() const;
 
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_8859_7_el : public CharsetRecog_8859_7
@@ -286,7 +163,7 @@ public:
 
     const char *getLanguage() const;
 
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_8859_8_I_he : public CharsetRecog_8859_8
@@ -298,7 +175,7 @@ public:
 
     const char *getLanguage() const;
 
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_8859_8_he : public CharsetRecog_8859_8
@@ -308,7 +185,7 @@ public:
 
     const char *getLanguage() const;
 
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_8859_9_tr : public CharsetRecog_8859_9
@@ -318,7 +195,7 @@ public:
 
     const char *getLanguage() const;
 
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_windows_1256 : public CharsetRecog_sbcs
@@ -330,7 +207,7 @@ public:
 
     const char *getLanguage() const;
 
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_windows_1251 : public CharsetRecog_sbcs
@@ -342,7 +219,7 @@ public:
 
     const char *getLanguage() const;
 
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 
@@ -355,9 +232,10 @@ public:
 
     const char *getLanguage() const;
 
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
+#if !UCONFIG_ONLY_HTML_CONVERSION
 class CharsetRecog_IBM424_he : public CharsetRecog_sbcs
 {
 public:
@@ -372,7 +250,7 @@ public:
     
     const char *getName() const;
     
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_IBM424_he_ltr : public CharsetRecog_IBM424_he {
@@ -380,7 +258,7 @@ class CharsetRecog_IBM424_he_ltr : public CharsetRecog_IBM424_he {
     
     const char *getName() const;
     
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_IBM420_ar : public CharsetRecog_sbcs
@@ -389,19 +267,8 @@ public:
     virtual ~CharsetRecog_IBM420_ar();
 
     const char *getLanguage() const;
+       int32_t match_sbcs(InputText *det, const int32_t ngrams[], const uint8_t charMap[]) const;
     
-protected:
-    void matchInit(InputText *textIn);
-    void matchFinish(InputText *textIn);
-    
-private:
-    uint8_t *prev_fInputBytes;
-    int32_t prev_fInputBytesLength;
-    UBool deleteBuffer;
-    
-    UBool isLamAlef(uint8_t b);
-    uint8_t *unshapeLamAlef(const uint8_t *inputBytes, int32_t inputBytesLength, int32_t &length);
-    uint8_t *unshape(const uint8_t *inputBytes, int32_t inputBytesLength, int32_t &length);
 };
 
 class CharsetRecog_IBM420_ar_rtl : public CharsetRecog_IBM420_ar {
@@ -410,7 +277,7 @@ public:
     
     const char *getName() const;
     
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
 
 class CharsetRecog_IBM420_ar_ltr : public CharsetRecog_IBM420_ar {
@@ -418,10 +285,11 @@ class CharsetRecog_IBM420_ar_ltr : public CharsetRecog_IBM420_ar {
     
     const char *getName() const;
     
-    int32_t match(InputText *textIn);
+    virtual UBool match(InputText *det, CharsetMatch *results) const;
 };
+#endif
 
 U_NAMESPACE_END
 
-#endif
+#endif /* !UCONFIG_NO_CONVERSION */
 #endif /* __CSRSBCS_H */