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