1 // Copyright (C) 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 19 U_NAMESPACE_BEGIN 20 21 class InputText; 22 class CharsetRecognizer; 23 class CharsetMatch; 24 25 class CharsetDetector : public UMemory 26 { 27 private: 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 39 public: 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 66 U_NAMESPACE_END 67 68 #endif 69 #endif /* __CSDETECT_H */ 70