minetest-mapper-cpp/Minetestmapper/CharEncodingConverter.h

43 lines
1.3 KiB
C++

#ifndef _CHARENCODINGCONVERTER_H_INCLUDED_
#define _CHARENCODINGCONVERTER_H_INCLUDED_
#include <string>
class CharEncodingConverter
{
public:
CharEncodingConverter(const std::string to, const std::string from)
: m_toFormat(to), m_fromFormat(from) {
if (m_toFormat == "") m_toFormat = getCurrentCharEncoding();
if (m_fromFormat == "") m_fromFormat = getCurrentCharEncoding();
}
virtual ~CharEncodingConverter(void) {}
// Create a converter with an unspecified but suitable backend.
// (for usage convenience)
static CharEncodingConverter *createStandardConverter(const std::string to, const std::string from = "");
static std::string getCurrentCharEncoding(void);
virtual std::string convert(const std::string &src) = 0;
virtual std::string fromFormat(void) { return m_fromFormat; }
virtual std::string toFormat(void) { return m_toFormat; }
protected:
std::string m_toFormat;
std::string m_fromFormat;
};
class CharEncodingConverterDummy : public CharEncodingConverter
{
public:
CharEncodingConverterDummy(const std::string to, const std::string from = "")
: CharEncodingConverter(to, from) {}
virtual ~CharEncodingConverterDummy(void) {}
static std::string getCurrentCharEncoding(void) { return "UTF-8"; }
std::string convert(const std::string &src) override { return src; }
};
#endif // _CHARENCODINGCONVERTER_H_INCLUDED_