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