root/headers/os/locale/TextEncoding.h
/*
 * Copyright 2016, Haiku, inc.
 * Distributed under terms of the MIT license.
 */


#ifndef TEXTENCODING_H
#define TEXTENCODING_H


#include <String.h>

#include <stddef.h>


struct UConverter;


namespace BPrivate {


class BTextEncoding {
public:
                                                                BTextEncoding(BString name);
                                                                BTextEncoding(const char* data, size_t length);

                                                                ~BTextEncoding();

                        status_t                        InitCheck();
                        BString                         GetName();

                        status_t                        Encode(const char* input, size_t& inputLength,
                                                                        char* output, size_t& outputLength);
                        status_t                        Decode(const char* input, size_t& inputLength,
                                                                        char* output, size_t& outputLength);
                        status_t                        Flush(char* output, size_t& outputLength);

private:
                        BString                         fName;

                        UConverter*                     fUtf8Converter;
                        UConverter*                     fConverter;
};


};


#endif /* TEXTENCODING_H */