protected:
ErrorMode err_mode;
- Encoder(ErrorMode em): err_mode(em) { }
+ Encoder(ErrorMode em): err_mode(em==DEFAULT ? THROW_ON_ERROR : em) { }
public:
virtual ~Encoder() { }
protected:
ErrorMode err_mode;
- Decoder(ErrorMode em): err_mode(em) { }
+ Decoder(ErrorMode em): err_mode(em==DEFAULT ? THROW_ON_ERROR : em) { }
public:
virtual ~Decoder() { }
protected:
StandardCodec(ErrorMode em): err_mode(em==DEFAULT ? THROW_ON_ERROR : em) { }
+ ErrorMode get_error_mode(ErrorMode em = DEFAULT) const
+ { return (em==DEFAULT ? err_mode : em); }
+
public:
virtual Encoder *create_encoder(ErrorMode em = DEFAULT) const
- { return new typename C::Encoder(em==DEFAULT ? err_mode : em); }
+ { return new typename C::Encoder(get_error_mode(em)); }
virtual Decoder *create_decoder(ErrorMode em = DEFAULT) const
- { return new typename C::Decoder(em==DEFAULT ? err_mode : em); }
+ { return new typename C::Decoder(get_error_mode(em)); }
};
/** Convenience function that decodes a string. */
-template<class C>
+template<typename C>
ustring decode(const std::string &s)
{
typename C::Decoder dec;
}
/** Convenience function that encodes a string. */
-template<class C>
+template<typename C>
std::string encode(const ustring &s)
{
typename C::Encoder enc;
}
/** Convenience function that transcodes a string from one codec to another. */
-template<class F, class T>
+template<typename F, typename T>
std::string transcode(const std::string &s)
{
return encode<T>(decode<F>(s));