1 /*
2  **********************************************************************
3  *   Copyright (C) 2005-2012, International Business Machines
4  *   Corporation and others.  All Rights Reserved.
5  **********************************************************************
6  */
7 
8 #ifndef __CSRUCODE_H
9 #define __CSRUCODE_H
10 
11 #include "unicode/utypes.h"
12 
13 #if !UCONFIG_NO_CONVERSION
14 
15 #include "csrecog.h"
16 
17 U_NAMESPACE_BEGIN
18 
19 /**
20  * This class matches UTF-16 and UTF-32, both big- and little-endian. The
21  * BOM will be used if it is present.
22  *
23  * @internal
24  */
25 class CharsetRecog_Unicode : public CharsetRecognizer
26 {
27 
28 public:
29 
30     virtual ~CharsetRecog_Unicode();
31     /* (non-Javadoc)
32      * @see com.ibm.icu.text.CharsetRecognizer#getName()
33      */
34     const char* getName() const = 0;
35 
36     /* (non-Javadoc)
37      * @see com.ibm.icu.text.CharsetRecognizer#match(com.ibm.icu.text.CharsetDetector)
38      */
39     UBool match(InputText* textIn, CharsetMatch *results) const = 0;
40 };
41 
42 
43 class CharsetRecog_UTF_16_BE : public CharsetRecog_Unicode
44 {
45 public:
46 
47     virtual ~CharsetRecog_UTF_16_BE();
48 
49     const char *getName() const;
50 
51     UBool match(InputText* textIn, CharsetMatch *results) const;
52 };
53 
54 class CharsetRecog_UTF_16_LE : public CharsetRecog_Unicode
55 {
56 public:
57 
58     virtual ~CharsetRecog_UTF_16_LE();
59 
60     const char *getName() const;
61 
62     UBool match(InputText* textIn, CharsetMatch *results) const;
63 };
64 
65 class CharsetRecog_UTF_32 : public CharsetRecog_Unicode
66 {
67 protected:
68     virtual int32_t getChar(const uint8_t *input, int32_t index) const = 0;
69 public:
70 
71     virtual ~CharsetRecog_UTF_32();
72 
73     const char* getName() const = 0;
74 
75     UBool match(InputText* textIn, CharsetMatch *results) const;
76 };
77 
78 
79 class CharsetRecog_UTF_32_BE : public CharsetRecog_UTF_32
80 {
81 protected:
82     int32_t getChar(const uint8_t *input, int32_t index) const;
83 
84 public:
85 
86     virtual ~CharsetRecog_UTF_32_BE();
87 
88     const char *getName() const;
89 };
90 
91 
92 class CharsetRecog_UTF_32_LE : public CharsetRecog_UTF_32
93 {
94 protected:
95     int32_t getChar(const uint8_t *input, int32_t index) const;
96 
97 public:
98     virtual ~CharsetRecog_UTF_32_LE();
99 
100     const char* getName() const;
101 };
102 
103 U_NAMESPACE_END
104 
105 #endif
106 #endif /* __CSRUCODE_H */
107