[svn] commit: r2483 - /branches/trac256/src/lib/dns/util/base_n.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Sun Jul 11 06:41:03 UTC 2010


Author: jinmei
Date: Sun Jul 11 06:41:03 2010
New Revision: 2483

Log:
more cleanup: refactored the code a bit to make DecodeNormalizer non templated.

Modified:
    branches/trac256/src/lib/dns/util/base_n.cc

Modified: branches/trac256/src/lib/dns/util/base_n.cc
==============================================================================
--- branches/trac256/src/lib/dns/util/base_n.cc (original)
+++ branches/trac256/src/lib/dns/util/base_n.cc Sun Jul 11 06:41:03 2010
@@ -104,14 +104,13 @@
     bool in_pad_;
 };
 
-// BaseZeroCode is the byte character that represents a value of '0' in
-// the corresponding encoding.  For example, BaseZeroCode is 'A' for base64.
-template <char BaseZeroCode>
 class DecodeNormalizer : public iterator<input_iterator_tag, char> {
 public:
-    DecodeNormalizer(const string::const_iterator& base,
+    DecodeNormalizer(const char base_zero_code,
+                     const string::const_iterator& base,
                      const string::const_iterator& base_beginpad,
                      const string::const_iterator& base_end) :
+        base_zero_code_(base_zero_code),
         base_(base), base_beginpad_(base_beginpad), base_end_(base_end),
         in_pad_(false)
     {}
@@ -127,7 +126,7 @@
     }
     const char& operator*() const {
         if (in_pad_ && *base_ == BASE_PADDING_CHAR) {
-            return (BASE_ZERO_CODE);
+            return (base_zero_code_);
         } else {
             return (*base_);
         }
@@ -136,11 +135,11 @@
         return (base_ == other.base_);
     }
 private:
+    const char base_zero_code_;
     string::const_iterator base_;
     const string::const_iterator base_beginpad_;
     const string::const_iterator base_end_;
     bool in_pad_;
-    static const char BASE_ZERO_CODE = BaseZeroCode;
 };
 
 // BitsPerChunk: number of bits to be converted using the baseN mapping table.
@@ -234,12 +233,10 @@
     const size_t padbytes = padbits / 8;
 
     try {
-        result.assign(Decoder(DecodeNormalizer<BaseZeroCode>(input.begin(),
-                                                             srit.base(),
-                                                             input.end())),
-                      Decoder(DecodeNormalizer<BaseZeroCode>(input.end(),
-                                                             input.end(),
-                                                             input.end())));
+        result.assign(Decoder(DecodeNormalizer(BaseZeroCode, input.begin(),
+                                               srit.base(), input.end())),
+                      Decoder(DecodeNormalizer(BaseZeroCode, input.end(),
+                                               input.end(), input.end())));
     } catch (const dataflow_exception& ex) {
         // convert any boost exceptions into our local one.
         isc_throw(BadValue, ex.what());
@@ -266,7 +263,7 @@
 typedef
 base64_from_binary<transform_width<EncodeNormalizer, 6, 8> > base64_encoder;
 typedef
-transform_width<binary_from_base64<DecodeNormalizer<'A'>, char>, 8, 6, char>
+transform_width<binary_from_base64<DecodeNormalizer, char>, 8, 6, char>
 base64_decoder;
 typedef BaseNTransformer<6, 'A', base64_encoder, base64_decoder>
 Base64Transformer;
@@ -278,7 +275,7 @@
 base32hex_from_binary<transform_width<EncodeNormalizer, 5, 8> >
 base32hex_encoder;
 typedef
-transform_width<binary_from_base32hex<DecodeNormalizer<'0'>, char>, 8, 5, char>
+transform_width<binary_from_base32hex<DecodeNormalizer, char>, 8, 5, char>
 base32hex_decoder;
 typedef BaseNTransformer<5, '0', base32hex_encoder, base32hex_decoder>
 Base32HexTransformer;




More information about the bind10-changes mailing list