129 _II
put( _II _First, _II _Last, _OI _To, _State& _St, _Endline _Endl )
const {
133 while ( _First != _Last )
138 _3to4.
set_0( *_First );
141 if ( _First == _Last )
143 *_To = _Tr::to_char_type( _base64Chars[_3to4.
b64_0()] );
145 *_To = _Tr::to_char_type( _base64Chars[_3to4.
b64_1()] );
147 *_To = _Tr::to_char_type(
'=' );
149 *_To = _Tr::to_char_type(
'=' );
154 _3to4.
set_1( *_First );
157 if ( _First == _Last )
159 *_To = _Tr::to_char_type( _base64Chars[_3to4.
b64_0()] );
161 *_To = _Tr::to_char_type( _base64Chars[_3to4.
b64_1()] );
163 *_To = _Tr::to_char_type( _base64Chars[_3to4.
b64_2()] );
165 *_To = _Tr::to_char_type(
'=' );
170 _3to4.
set_2( *_First );
173 *_To = _Tr::to_char_type( _base64Chars[_3to4.
b64_0()] );
175 *_To = _Tr::to_char_type( _base64Chars[_3to4.
b64_1()] );
177 *_To = _Tr::to_char_type( _base64Chars[_3to4.
b64_2()] );
179 *_To = _Tr::to_char_type( _base64Chars[_3to4.
b64_3()] );
182 if ( line_octets == 17 )
327 if ( _base64Chars[62] == _Ch )
return 62;
329 if ( _base64Chars[63] == _Ch )
return 63;
331 if ( ( _base64Chars[0] <= _Ch ) && ( _base64Chars[25] >= _Ch ) )
332 return _Ch - _base64Chars[0];
334 if ( ( _base64Chars[26] <= _Ch ) && ( _base64Chars[51] >= _Ch ) )
335 return _Ch - _base64Chars[26] + 26;
337 if ( ( _base64Chars[52] <= _Ch ) && ( _base64Chars[61] >= _Ch ) )
338 return _Ch - _base64Chars[52] + 52;
340 if ( _Ch == _Tr::to_int_type(
'=' ) )
return _EQUAL_CHAR;