diff options
Diffstat (limited to 'ace/Codecs.cpp')
-rw-r--r-- | ace/Codecs.cpp | 76 |
1 files changed, 30 insertions, 46 deletions
diff --git a/ace/Codecs.cpp b/ace/Codecs.cpp index d28cda908d1..8e717cb4533 100644 --- a/ace/Codecs.cpp +++ b/ace/Codecs.cpp @@ -7,28 +7,14 @@ ACE_RCSID (ace, Codecs, "$Id$") -namespace -{ - // Just in case ... -#undef alphabet -#undef pad -#undef max_columns - - // Symbols which form the Base64 alphabet (Defined as per RFC 2045) - ACE_Byte const alphabet[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +const ACE_Byte ACE_Base64::alphabet_[] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - // The padding character used in the encoding - ACE_Byte const pad = '='; +const ACE_Byte ACE_Base64::pad_ = '='; - // Number of columns per line of encoded output (Can have a maximum - // value of 76). - int const max_columns = 72; -} +int ACE_Base64::init_ = 0; -ACE_BEGIN_VERSIONED_NAMESPACE_DECL - -bool ACE_Base64::init_ = false; +int ACE_Base64::max_columns_ = 72; ACE_Byte ACE_Base64::decoder_[256]; @@ -48,7 +34,7 @@ ACE_Base64::encode (const ACE_Byte* input, ACE_Byte* result = 0; size_t length = ((input_len + 2) / 3) * 4; - size_t num_lines = length / max_columns + 1; + size_t num_lines = length / ACE_Base64::max_columns_ + 1; length += num_lines + 1; ACE_NEW_RETURN (result, ACE_Byte[length], 0); @@ -64,12 +50,12 @@ ACE_Base64::encode (const ACE_Byte* input, if (char_count == 3) { - result[pos++] = alphabet[bits >> 18]; - result[pos++] = alphabet[(bits >> 12) & 0x3f]; - result[pos++] = alphabet[(bits >> 6) & 0x3f]; - result[pos++] = alphabet[bits & 0x3f]; + result[pos++] = ACE_Base64::alphabet_[bits >> 18]; + result[pos++] = ACE_Base64::alphabet_[(bits >> 12) & 0x3f]; + result[pos++] = ACE_Base64::alphabet_[(bits >> 6) & 0x3f]; + result[pos++] = ACE_Base64::alphabet_[bits & 0x3f]; cols += 4; - if (cols == max_columns) { + if (cols == ACE_Base64::max_columns_) { result[pos++] = '\n'; cols = 0; } @@ -85,17 +71,17 @@ ACE_Base64::encode (const ACE_Byte* input, if (char_count != 0) { bits <<= (16 - (8 * char_count)); - result[pos++] = alphabet[bits >> 18]; - result[pos++] = alphabet[(bits >> 12) & 0x3f]; + result[pos++] = ACE_Base64::alphabet_[bits >> 18]; + result[pos++] = ACE_Base64::alphabet_[(bits >> 12) & 0x3f]; if (char_count == 1) { - result[pos++] = pad; - result[pos++] = pad; + result[pos++] = pad_; + result[pos++] = pad_; } else { - result[pos++] = alphabet[(bits >> 6) & 0x3f]; - result[pos++] = pad; + result[pos++] = ACE_Base64::alphabet_[(bits >> 6) & 0x3f]; + result[pos++] = pad_; } if (cols > 0) result[pos++] = '\n'; @@ -113,7 +99,7 @@ ACE_Base64::length (const ACE_Byte* input) ACE_Byte* ptr = const_cast<ACE_Byte*> (input); while (*ptr != 0 && - (member_[*(ptr)] == 1 || *ptr == pad + (member_[*(ptr)] == 1 || *ptr == pad_ || ACE_OS::ace_isspace (*ptr))) ptr++; size_t len = ptr - input; @@ -136,7 +122,7 @@ ACE_Base64::decode (const ACE_Byte* input, size_t* output_len) ACE_Byte* ptr = const_cast<ACE_Byte*> (input); while (*ptr != 0 && - (member_[*(ptr)] == 1 || *ptr == pad + (member_[*(ptr)] == 1 || *ptr == pad_ || ACE_OS::ace_isspace (*ptr))) ptr++; size_t input_len = ptr - input; @@ -148,7 +134,7 @@ ACE_Base64::decode (const ACE_Byte* input, size_t* output_len) size_t i = 0; for (; i < input_len; ++i) { - if (input[i] == pad) + if (input[i] == pad_) break; if (!ACE_Base64::member_[input[i]]) continue; @@ -157,9 +143,9 @@ ACE_Base64::decode (const ACE_Byte* input, size_t* output_len) if (char_count == 4) { - result[pos++] = static_cast<ACE_Byte> (bits >> 16); - result[pos++] = static_cast<ACE_Byte> ((bits >> 8) & 0xff); - result[pos++] = static_cast<ACE_Byte> (bits & 0xff); + result[pos++] = bits >> 16; + result[pos++] = (bits >> 8) & 0xff; + result[pos++] = bits & 0xff; bits = 0; char_count = 0; } @@ -190,11 +176,11 @@ ACE_Base64::decode (const ACE_Byte* input, size_t* output_len) errors++; break; case 2: - result[pos++] = static_cast<ACE_Byte> (bits >> 10); + result[pos++] = bits >> 10; break; case 3: - result[pos++] = static_cast<ACE_Byte> (bits >> 16); - result[pos++] = static_cast<ACE_Byte> ((bits >> 8) & 0xff); + result[pos++] = bits >> 16; + result[pos++] = (bits >> 8) & 0xff; break; } } @@ -214,14 +200,12 @@ ACE_Base64::init () { if (!ACE_Base64::init_) { - for (ACE_Byte i = 0; i < sizeof (alphabet); ++i) + for (ACE_Byte i = 0; i < sizeof (ACE_Base64::alphabet_); ++i) { - ACE_Base64::decoder_[alphabet[i]] = i; - ACE_Base64::member_ [alphabet[i]] = 1; + ACE_Base64::decoder_[ACE_Base64::alphabet_[i]] = i; + ACE_Base64::member_[ACE_Base64::alphabet_[i]] = 1; } - ACE_Base64::init_ = true; + ACE_Base64::init_ = 1; } return; } - -ACE_END_VERSIONED_NAMESPACE_DECL |