]> git.tdb.fi Git - libs/core.git/blobdiff - source/stringcodec/codec.h
Use default member initializers and constructor delegation
[libs/core.git] / source / stringcodec / codec.h
index e0e0a96de235f906cda8c875963f3a1f399acf5e..efa165784ac2988f674c0c6be5794c3a1a44c63d 100644 (file)
@@ -39,9 +39,9 @@ public:
        class Encoder
        {
        protected:
-               ErrorMode err_mode;
+               ErrorMode err_mode = THROW_ON_ERROR;
 
-               Encoder(ErrorMode em): err_mode(em) { }
+               Encoder(ErrorMode em): err_mode(em==DEFAULT ? THROW_ON_ERROR : em) { }
        public:
                virtual ~Encoder() { }
 
@@ -90,9 +90,9 @@ public:
        class Decoder
        {
        protected:
-               ErrorMode err_mode;
+               ErrorMode err_mode = THROW_ON_ERROR;
 
-               Decoder(ErrorMode em): err_mode(em) { }
+               Decoder(ErrorMode em): err_mode(em==DEFAULT ? THROW_ON_ERROR : em) { }
        public:
                virtual ~Decoder() { }
 
@@ -162,17 +162,20 @@ template<typename C>
 class StandardCodec: public Codec
 {
 private:
-       ErrorMode err_mode;
+       ErrorMode err_mode = THROW_ON_ERROR;
 
 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)); }
 };