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