//
//     Copyright 2008 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2007 Jim Bublitz also apply

//                 Generated by twine

// This file is part of PyKDE4.

// PyKDE4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.

// PyKDE4 is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.


class KEncodingDetector
{
%TypeHeaderCode
#include <kencodingdetector.h>
%End


public:

    enum EncodingChoiceSource
    {
        DefaultEncoding,
        AutoDetectedEncoding,
        BOM,
        EncodingFromXMLHeader,
        EncodingFromMetaTag,
        EncodingFromHTTPHeader,
        UserChosenEncoding
    };


    enum AutoDetectScript
    {
        None,
        SemiautomaticDetection,
        Arabic,
        Baltic,
        CentralEuropean,
        ChineseSimplified,
        ChineseTraditional,
        Cyrillic,
        Greek,
        Hebrew,
        Japanese,
        Korean,
        NorthernSaami,
        SouthEasternEurope,
        Thai,
        Turkish,
        Unicode,
        WesternEuropean
    };

                            KEncodingDetector ();
                            KEncodingDetector (QTextCodec* codec, KEncodingDetector::EncodingChoiceSource source, KEncodingDetector::AutoDetectScript script = KEncodingDetector::None);
    bool                    setEncoding (const char* encoding, KEncodingDetector::EncodingChoiceSource type);
    const char*             encoding () const;
    bool                    visuallyOrdered () const;
    void                    setAutoDetectLanguage (KEncodingDetector::AutoDetectScript);
    KEncodingDetector::AutoDetectScript  autoDetectLanguage () const;
    KEncodingDetector::EncodingChoiceSource  encodingChoiceSource () const;
    QString                 decode (const char* data, int len);
    QString                 decode (const QByteArray& data);
    QString                 decodeWithBuffering (const char* data, int len);
    bool                    decodedInvalidCharacters () const;
    void                    resetDecoder ();
    QString                 flush ();
    static KEncodingDetector::AutoDetectScript  scriptForName (const QString& lang);
    static QString          nameForScript (KEncodingDetector::AutoDetectScript);
    static bool             hasAutoDetectionForScript (KEncodingDetector::AutoDetectScript);

protected:
    bool                    processNull (char* data, int length);
    bool                    errorsIfUtf8 (const char* data, int length);
    bool                    analyze (const char* data, int len);
    QTextDecoder*           decoder ();
private:
                            KEncodingDetector (const KEncodingDetector &other);
};   // KEncodingDetector


