1// © 2016 and later: Unicode, Inc. and others. 2// License & terms of use: http://www.unicode.org/copyright.html 3/* 4 ********************************************************************** 5 * Copyright (C) 2005-2016, International Business Machines 6 * Corporation and others. All Rights Reserved. 7 ********************************************************************** 8 */ 9 10#ifndef __CSDETECT_H 11#define __CSDETECT_H 12 13#include "unicode/uobject.h" 14 15#if !UCONFIG_NO_CONVERSION 16 17#include "unicode/uenum.h" 18 19U_NAMESPACE_BEGIN 20 21class InputText; 22class CharsetRecognizer; 23class CharsetMatch; 24 25class CharsetDetector : public UMemory 26{ 27private: 28 InputText *textIn; 29 CharsetMatch **resultArray; 30 int32_t resultCount; 31 UBool fStripTags; // If true, setText() will strip tags from input text. 32 UBool fFreshTextSet; 33 static void setRecognizers(UErrorCode &status); 34 35 UBool *fEnabledRecognizers; // If not null, active set of charset recognizers had 36 // been changed from the default. The array index is 37 // corresponding to fCSRecognizers. See setDetectableCharset(). 38 39public: 40 CharsetDetector(UErrorCode &status); 41 42 ~CharsetDetector(); 43 44 void setText(const char *in, int32_t len); 45 46 const CharsetMatch * const *detectAll(int32_t &maxMatchesFound, UErrorCode &status); 47 48 const CharsetMatch *detect(UErrorCode& status); 49 50 void setDeclaredEncoding(const char *encoding, int32_t len) const; 51 52 UBool setStripTagsFlag(UBool flag); 53 54 UBool getStripTagsFlag() const; 55 56// const char *getCharsetName(int32_t index, UErrorCode& status) const; 57 58 static int32_t getDetectableCount(); 59 60 61 static UEnumeration * getAllDetectableCharsets(UErrorCode &status); 62 UEnumeration * getDetectableCharsets(UErrorCode &status) const; 63 void setDetectableCharset(const char *encoding, UBool enabled, UErrorCode &status); 64}; 65 66U_NAMESPACE_END 67 68#endif 69#endif /* __CSDETECT_H */ 70