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