#ifndef MSP_STRINGCODEC_UTF16_H_
#define MSP_STRINGCODEC_UTF16_H_
+#include <msp/core/mspcore_api.h>
#include "codec.h"
namespace Msp {
endian are supported, as well as autodetection with the BOM. In the absence
of a BOM, big endian is assumed.
*/
-class Utf16: public StandardCodec<Utf16>
+class MSPCORE_API Utf16: public StandardCodec<Utf16>
{
public:
enum Endian
LITTLE
};
- class Encoder: public Codec::Encoder
+ class MSPCORE_API Encoder: public Codec::Encoder
{
private:
- Endian endian;
- bool emit_bom;
+ Endian endian = BIG;
+ bool emit_bom = true;
public:
Encoder(ErrorMode em = DEFAULT, Endian en = BIG);
- virtual void encode_char(unichar, std::string &);
+ void encode_char(unichar, std::string &) override;
private:
- virtual void transliterate(unichar, std::string &);
+ void transliterate(unichar, std::string &) override;
};
- class Decoder: public Codec::Decoder
+ class MSPCORE_API Decoder: public Codec::Decoder
{
private:
- Endian endian;
+ Endian endian = AUTO;
public:
Decoder(ErrorMode em = DEFAULT, Endian en = AUTO);
- virtual unichar decode_char(const std::string &, std::string::const_iterator &);
+ unichar decode_char(const std::string &, std::string::const_iterator &) override;
private:
unichar decode_unit(const std::string &, const std::string::const_iterator &, std::string::const_iterator &);
};
private:
- Endian endian;
+ Endian endian = AUTO;
public:
Utf16(ErrorMode em = DEFAULT, Endian en = AUTO):
endian(en)
{ }
- virtual const char *get_name() const
+ const char *get_name() const override
{ return endian==BIG ? "UTF-16-BE" : endian==LITTLE ? "UTF-16-LE" : "UTF-16"; }
- virtual Encoder *create_encoder(ErrorMode em = DEFAULT) const
+ Encoder *create_encoder(ErrorMode em = DEFAULT) const override
{ return new Encoder(get_error_mode(em), endian); }
- virtual Decoder *create_decoder(ErrorMode em = DEFAULT) const
+ Decoder *create_decoder(ErrorMode em = DEFAULT) const override
{ return new Decoder(get_error_mode(em), endian); }
};