[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