X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fstringcodec%2Fcodec.h;h=1b893470c6e9462993d10953e36952b4fc08b6d1;hb=f24e7b96e76b63c9b9b8a6bce4c7a9db64276ea8;hp=c70e052dd1b35e819a591327777f8eec4dbdc9bd;hpb=d3fc0bf0f20f100f2831188c1ce21461d21c2c7a;p=libs%2Fcore.git diff --git a/source/stringcodec/codec.h b/source/stringcodec/codec.h index c70e052..1b89347 100644 --- a/source/stringcodec/codec.h +++ b/source/stringcodec/codec.h @@ -41,7 +41,7 @@ public: protected: ErrorMode err_mode; - Encoder(ErrorMode em): err_mode(em) { } + Encoder(ErrorMode em): err_mode(em==DEFAULT ? THROW_ON_ERROR : em) { } public: virtual ~Encoder() { } @@ -92,7 +92,7 @@ public: protected: ErrorMode err_mode; - Decoder(ErrorMode em): err_mode(em) { } + Decoder(ErrorMode em): err_mode(em==DEFAULT ? THROW_ON_ERROR : em) { } public: virtual ~Decoder() { } @@ -167,17 +167,20 @@ private: 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 +template ustring decode(const std::string &s) { typename C::Decoder dec; @@ -185,7 +188,7 @@ ustring decode(const std::string &s) } /** Convenience function that encodes a string. */ -template +template std::string encode(const ustring &s) { typename C::Encoder enc; @@ -193,7 +196,7 @@ std::string encode(const ustring &s) } /** Convenience function that transcodes a string from one codec to another. */ -template +template std::string transcode(const std::string &s) { return encode(decode(s));